Skip to content

Commit 86e71cf

Browse files
authored
Merge pull request #12 from NF-itmo/dev
Iteration 3
2 parents c9a0ee7 + 301336d commit 86e71cf

13 files changed

Lines changed: 179 additions & 29 deletions

File tree

README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
# WebProgramming lab work №1
22

3+
4+
## Quick Start
5+
```bash
6+
docker compose up
7+
```
8+
9+
## Structure
10+
```
11+
├── httpd/ # Директория с конфигурациями веб-серверов и статическими файлами
12+
├── nginx-conf/ # Конфиг веб-сервера для nginx
13+
├── apache-conf/ # Конфиг веб-сервера для apache (! НА ДАННЫЙ МОМЕНТ ОТКЛЮЧЁН !)
14+
├── static/ # Директория с статическими файлами
15+
├── index.html # Основной файл сайта
16+
├── js/ # Js сайта
17+
└── assets/ # Ресурсы сайта
18+
├── Dockerfile-nginx # Dockerfile для Nginx
19+
└── Dockerfile-apache # Dockerfile для Apache (! НА ДАННЫЙ МОМЕНТ ОТКЛЮЧЁН !)
20+
├── server/ # Директория с кодом java-сервера (FastCGI)
21+
├── lib/ # Директория с библиотекой для fastcgi
22+
├── src/ # Исходники
23+
└── Dockerfile # Dockerfile для fastcgi-сервера
24+
└── docs # Дополнительная документация
25+
```
26+
27+
328
## TODOs
429

530
### Httpd

docs/openapi.yaml

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
openapi: 3.0.0
2+
info:
3+
title: "WebProg Lab1"
4+
version: 0.0.2
5+
description: |
6+
Сервак из говна и палок
7+
8+
Last update: 00:00 15.09.25 by NF-coder
9+
servers:
10+
- url: http://localhost:8080/fcgi/
11+
description: FastCGI API
12+
13+
paths:
14+
/:
15+
get:
16+
summary: Тест попадания в область
17+
tags:
18+
- General
19+
parameters:
20+
- in: query
21+
name: x
22+
required: true
23+
schema:
24+
$ref: "#/components/schemas/x"
25+
- in: query
26+
name: y
27+
required: true
28+
schema:
29+
$ref: "#/components/schemas/y"
30+
- in: query
31+
name: r
32+
required: true
33+
schema:
34+
$ref: "#/components/schemas/r"
35+
36+
responses:
37+
200:
38+
description: Responce with data
39+
content:
40+
application/json:
41+
schema:
42+
type: object
43+
properties:
44+
result:
45+
type: boolean
46+
description: "true if hitted area and false if missed"
47+
example: true
48+
elapsedTimeNs:
49+
type: integer
50+
description: "Time in ns that server spent while handling responce"
51+
example: 12345
52+
default:
53+
description: Error
54+
content:
55+
application/json:
56+
schema:
57+
$ref: "#/components/schemas/Error"
58+
components:
59+
schemas:
60+
x:
61+
type: integer
62+
description: Кордината X
63+
example: 0
64+
y:
65+
type: number
66+
description: Кордината Y
67+
example: 0
68+
r:
69+
type: number
70+
description: Параметр R
71+
example: 2
72+
73+
Error:
74+
type: object
75+
required:
76+
- error
77+
properties:
78+
error:
79+
type: string
80+
description: "Description of error"
81+
example: Some text
82+
83+
84+
85+
86+

httpd/static/assets/img/logo.ico

4.19 KB
Binary file not shown.

httpd/static/index.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
66
<title>Web lab1</title>
77
<script src="./js/ajax.js"></script>
8+
<link rel="icon" href="assets/img/logo.ico" type="image/x-icon"/>
89
<style>
910
:root {
1011
/* Цветовая палитра в OKLCH */
@@ -733,9 +734,7 @@ <h3 class="history-title">История введенных данных</h3>
733734

734735
if (X && R && Y) {
735736

736-
// Stub
737737
sendAJAXGETRequest("/fcgi/", {"x": X, "y": Y, "r": R}, (data) => {FFCGIResponceHandler(data, X,Y,R)});
738-
console.log(`Данные отправлены!\nX: ${X}\nY: ${Y}\nR: ${R}`);
739738

740739
// Очищаем форму
741740
this.reset();

server/.idea/misc.xml

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM openjdk:17-jdk-slim AS build
1+
FROM eclipse-temurin:17-jdk-alpine AS build
22

33
# copy maven confis
44
COPY pom.xml mvnw ./
@@ -14,7 +14,7 @@ RUN ./mvnw dependency:resolve
1414
COPY src src
1515
RUN ./mvnw clean package
1616

17-
FROM openjdk:17-jdk-slim
17+
FROM eclipse-temurin:17-jre-alpine
1818
WORKDIR server
1919
COPY --from=build target/*.jar server-1.0.jar
2020
ENTRYPOINT ["java", "-DFCGI_PORT=55555", "-jar", "server-1.0.jar"]

server/src/main/java/org/web1/Main.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.web1;
22

33
import com.fastcgi.*;
4+
45
import java.util.HashMap;
56
import java.util.function.Function;
67

@@ -9,10 +10,11 @@
910
import org.web1.DTOs.RequestDTO;
1011
import org.web1.checkers.Checker;
1112
import org.web1.checkers.CheckerFunction;
12-
import org.web1.netUtils.JsonBuilder;
13-
import org.web1.netUtils.QueryStringToHashmap;
14-
import org.web1.netUtils.ResponseFactory;
15-
import org.web1.timer.Timer;
13+
import org.web1.utils.mappers.JsonBuilder;
14+
import org.web1.utils.mappers.QueryStringToHashmap;
15+
import org.web1.utils.responce.ResponseFactory;
16+
import org.web1.utils.responce.ResponseStatus;
17+
import org.web1.utils.timer.Timer;
1618

1719
public class Main {
1820
private static final Function<String, HashMap<String,String>> parseQuery = new QueryStringToHashmap();
@@ -46,13 +48,16 @@ public static void main(String[] args) {
4648
String result = ResponseFactory.create(
4749
new JsonBuilder()
4850
.add("result", checkResult)
49-
.add("elapsedTimeNs", timer.stop())
51+
.add("elapsedTimeNs", timer.stop()),
52+
ResponseStatus.OK
5053
);
5154

5255
System.out.println(result);
5356
} catch (ValidationException e) {
5457
String result = ResponseFactory.create(
55-
new JsonBuilder().add("error", '"'+e.getMessage()+'"')
58+
new JsonBuilder()
59+
.add("error", '"'+e.getMessage()+'"'),
60+
ResponseStatus.BAD_REQUEST
5661
);
5762
System.out.println(result);
5863
}

server/src/main/java/org/web1/netUtils/ResponseFactory.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

server/src/main/java/org/web1/netUtils/JsonBuilder.java renamed to server/src/main/java/org/web1/utils/mappers/JsonBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.web1.netUtils;
1+
package org.web1.utils.mappers;
22

33
import java.util.HashMap;
44

server/src/main/java/org/web1/netUtils/QueryStringToHashmap.java renamed to server/src/main/java/org/web1/utils/mappers/QueryStringToHashmap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.web1.netUtils;
1+
package org.web1.utils.mappers;
22

33
import java.util.HashMap;
44
import java.util.function.Function;

0 commit comments

Comments
 (0)