Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .idea/libraries/gson_2_9_0.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions SaveListTask.csv
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
id,type,name,discribtion,status,startTime,durations,endTime,epic
1,TASK,nameTask1,discriprionTask1,NEW,
2,TASK,nameTask2,discriprionTask2,NEW,
3,TASK,nameTaskTime1,discriptionTaskTime1,NEW,2025-10-15T18:45,50,2025-10-15T19:35,
1,TASK,nameTaskTime1,discriptionTaskTime1,NEW,2025-10-15T18:45,50,2025-10-15T19:35,
3 changes: 3 additions & 0 deletions TestSaveListTask.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
id,type,name,discribtion,status,startTime,durations,endTime,epic
1,TASK,nameTask1,discriprionTask1,NEW
2,TASK,nameTask2,discriprionTask2,NEW
1 change: 1 addition & 0 deletions java-kanban.iml
Original file line number Diff line number Diff line change
Expand Up @@ -124,5 +124,6 @@
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="gson-2.9.0" level="project" />
</component>
</module>
207 changes: 0 additions & 207 deletions src/Main.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package manager;
package exeptions;


public class ManagerSaveException extends RuntimeException {
ManagerSaveException(String messege) {
public ManagerSaveException(String messege) {
super(messege);
}
}
7 changes: 7 additions & 0 deletions src/exeptions/NotFoundExeption.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package exeptions;

public class NotFoundExeption extends Exception {
public NotFoundExeption(String massage) {
super(massage);
}
}
7 changes: 7 additions & 0 deletions src/exeptions/TimeConflictExeption.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package exeptions;

public class TimeConflictExeption extends RuntimeException {
public TimeConflictExeption(String message) {
super(message);
}
}
68 changes: 68 additions & 0 deletions src/http/HttpTaskServer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package http;

import com.google.gson.*;
import com.sun.net.httpserver.HttpServer;
import exeptions.NotFoundExeption;
import http.handler.*;
import http.handler.adapter.DurationAdapter;
import http.handler.adapter.LocalDateTimeAdapter;
import manager.Managers;
import manager.TaskManager;
import model.Status;
import model.Task;
import model.TypeTask;


import java.io.IOException;
import java.net.InetSocketAddress;
import java.time.LocalDateTime;

public class HttpTaskServer {
private static final int PORT = 8080;
private HttpServer server;
protected TaskManager taskManager;
protected Gson gson;

public HttpTaskServer(TaskManager taskManager) throws IOException {
this.taskManager = taskManager;
this.gson = new GsonBuilder()
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeAdapter())
.registerTypeAdapter(long.class, new DurationAdapter())
.create();

this.server = HttpServer.create(new InetSocketAddress(PORT), 0);
server.createContext("/tasks", new TaskHandler(taskManager, gson));
server.createContext("/subtasks", new SubtaskHandler(taskManager, gson));
server.createContext("/epics", new EpicsHandler(taskManager, gson));
server.createContext("/history", new HistoryHandler(taskManager, gson));
server.createContext("/priorityzed", new PriorityHandler(taskManager, gson));

}

public Gson getGson() {
return this.gson;
}


public void start() {
server.start();
System.out.println("Сервер запущен на порте " + PORT);


}

public void stop() {
server.stop(1);
System.out.println("Сервер остановлен.");
}

public static void main(String[] args) throws IOException, NotFoundExeption {

TaskManager manager = Managers.getDefault();
new HttpTaskServer(manager).start();
Task task = new Task(1, TypeTask.TASK,"name","dis", Status.NEW);
manager.addTask(task);
}

}

63 changes: 63 additions & 0 deletions src/http/handler/BaseHttpHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package http.handler;

import com.google.gson.*;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import manager.TaskManager;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Optional;

public abstract class BaseHttpHandler implements HttpHandler {
protected TaskManager taskManager;
protected Gson gson;


public BaseHttpHandler(TaskManager taskManager, Gson gson) {
this.taskManager = taskManager;
this.gson = gson;
}

public void sendText(HttpExchange exchange, String json, int statusCode) throws IOException {
byte[] responce = json.getBytes(StandardCharsets.UTF_8);
exchange.getResponseHeaders().add("Content-Type", "application/json");
exchange.sendResponseHeaders(statusCode, responce.length);
try (OutputStream os = exchange.getResponseBody()) {
os.write(responce);
}
}

public void sendNotFound(HttpExchange exchange, String text) throws IOException {
byte[] responce = text.getBytes(StandardCharsets.UTF_8);
exchange.getResponseHeaders().add("Content-Type", "application/json");
exchange.sendResponseHeaders(404, responce.length);
try (OutputStream os = exchange.getResponseBody()) {
os.write(responce);
}
}

public void sendHashInteraction(HttpExchange exchange, String text) throws IOException {
byte[] responce = text.getBytes(StandardCharsets.UTF_8);
exchange.getResponseHeaders().add("Content-Type", "application/json");
exchange.sendResponseHeaders(406, responce.length);
try (OutputStream os = exchange.getResponseBody()) {
os.write(responce);
}
}

public Optional<Integer> parseId(String path) {
try {
String[] parts = path.split("/");
return Optional.of(Integer.parseInt(parts[2]));
} catch (Exception e) {
return Optional.empty();
}
}

public String requestMethod(HttpExchange exchange) {
return exchange.getRequestMethod();
}


}
Loading