diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 32cbba3..2a5928a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -40,7 +40,7 @@ jobs: - name: Test 1. Install client run: sudo dpkg -i ./client/http-client.deb - name: Test 2. Test client - run: echo "6" | libhv-client + run: echo "7" | libhv-client - name: Start server and database with Docker Compose run: docker-compose up -d diff --git a/README.md b/README.md index 26923f9..ece6301 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,12 @@ - Тело ответа: Пустое - Описание: Редактирует данные пользователя по его идентификатору. +6. **Получение данных о погоде** + - Метод: GET + - Путь: /weather + - Тело ответа: JSON + - Описание: Возвращает информацию о погоде. + ## Сборка и запуск 1. Склонируйте репозиторий: @@ -87,6 +93,8 @@ ```5. Edit user by ID``` - редактироване данных пользователя по его идентификатору; \* -```6. Exit``` - выход из программы. +```6. Get weather``` - редактироване данных пользователя по его идентификатору; + +```7. Exit``` - выход из программы. > \* - необходима авторизация (администратор может редактировать любое дело, а обычный пользователь только свое). \ No newline at end of file diff --git a/client/src/client.h b/client/src/client.h new file mode 100644 index 0000000..ebe0488 --- /dev/null +++ b/client/src/client.h @@ -0,0 +1,51 @@ +#ifndef CLIENT_H +#define CLIENT_H + +#include "HttpClient.h" +#include +#include + +using json = nlohmann::json; + +enum class TextColor { + BLACK, + RED, + GREEN, + YELLOW, + BLUE, + MAGENTA, + CYAN, + WHITE, + GRAY, + LIGHT_RED, + LIGHT_GREEN, + LIGHT_YELLOW, + LIGHT_BLUE, + LIGHT_MAGENTA, + LIGHT_CYAN, + LIGHT_GRAY, + DARK_RED, + DARK_GREEN, + DARK_YELLOW, + DARK_BLUE, + DARK_MAGENTA, + DARK_CYAN, + DARK_GRAY, + RESET +}; + +void printMenu(); +void addUser(hv::HttpClient& httpClient); +void printUser(const std::string& jsonStr); +void printUser(json jsonData); +void printWeather(json jsonData); +void setTextColor(TextColor color); +void getAllUsersInfo(hv::HttpClient& httpClient); +void getUserById(hv::HttpClient& httpClient); +void deleteUserById(hv::HttpClient& httpClient); +void editUserById(hv::HttpClient& httpClient); +void getWeather(hv::HttpClient& httpClient); +std::string getBasicAuthHeader(); +std::string base64_encode(const std::string &input); + +#endif \ No newline at end of file diff --git a/client/src/main.cpp b/client/src/main.cpp index 8f2d97c..007c7ae 100644 --- a/client/src/main.cpp +++ b/client/src/main.cpp @@ -1,55 +1,10 @@ -#include "HttpClient.h" -#include -#include - -using json = nlohmann::json; - -enum class TextColor { - BLACK, - RED, - GREEN, - YELLOW, - BLUE, - MAGENTA, - CYAN, - WHITE, - GRAY, - LIGHT_RED, - LIGHT_GREEN, - LIGHT_YELLOW, - LIGHT_BLUE, - LIGHT_MAGENTA, - LIGHT_CYAN, - LIGHT_GRAY, - DARK_RED, - DARK_GREEN, - DARK_YELLOW, - DARK_BLUE, - DARK_MAGENTA, - DARK_CYAN, - DARK_GRAY, - RESET -}; +#include "client.h" const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; -void printMenu(); -void addUser(hv::HttpClient& httpClient); -void printUser(const std::string& jsonStr); -void printUser(json jsonData); -void printWeather(json jsonData); -void setTextColor(TextColor color); -void getAllUsersInfo(hv::HttpClient& httpClient); -void getUserById(hv::HttpClient& httpClient); -void deleteUserById(hv::HttpClient& httpClient); -void editUserById(hv::HttpClient& httpClient); -void getWeather(hv::HttpClient& httpClient); -std::string getBasicAuthHeader(); -std::string base64_encode(const std::string &input); - int main() { std::string serverAddress = "0.0.0.0:8080"; @@ -290,20 +245,17 @@ void addUser(hv::HttpClient& httpClient) { std::cout << "Is admin? (1 for yes, 0 for no): "; std::cin >> isAdmin; - // Создаем JSON для отправки на сервер nlohmann::json requestData; requestData["username"] = username; requestData["password"] = password; requestData["isAdmin"] = isAdmin; - // Создаем объект HttpRequest и добавляем заголовок Content-Type HttpRequest req; req.method = HTTP_POST; req.url = "/user"; req.content_type = APPLICATION_JSON; req.body = requestData.dump(); - // Отправляем запрос на сервер HttpResponse resp; int ret = httpClient.send(&req, &resp);