https://github.com/a-khakimov/simple-http-client
Writed in C
https://github.com/a-khakimov/simple-http-client
Last synced: 2 months ago
JSON representation
Writed in C
- Host: GitHub
- URL: https://github.com/a-khakimov/simple-http-client
- Owner: a-khakimov
- Created: 2020-08-22T08:03:08.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-08-24T13:06:09.000Z (about 5 years ago)
- Last Synced: 2025-02-03T12:46:38.852Z (8 months ago)
- Language: C
- Size: 10.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Тестовое задание:
```
1. Simple API
Реализовать простейший REST API клиент делающий 1 запрос, аналогичный такому:curl -X POST http://localhost:8000/api/json/v2 -L -d '{"id":0, "jsonrpc":"2.0","method":"systemInfo","params":[]}'
Предусмотреть интерфейс, через который можно передать другой метод, не systemInfo,
т.е. Вызов должен быть оформлен отдельной функцией.Для решения используем С99. не используем запуск курла из-под решения, но можно использовать его библиотеки.
```## Зависимости
* libcurl
* libjson-c## Сборка
```bash
$ cd rest_cl
$ mkdir build
$ cd build/
$ cmake ..
$ make
```## Запуск
Для начала запускаем тестовый сервер
```bash
$ python3 rest_sv/Server.py
```Клиент может быть запущен со следующими опциями.
```bash
$ ./Client -h
Usage:
./Client
-h Print usage
-v Verbose
-u [url] Default URL: http://localhost:8000/api/json/v2
-m [method name]
Possible methods:
* systemInfo
* hardwareInfo
```В базовом случае:
```bash
$ ./Client -m systemInfo
Ok!
```Один запуск инициирует передачу только одного (последнего) метода.
Резульат можно посмотреть сделав следующий вызов.
```bash
$ curl http://localhost:8000/api/json/v2
Content-Type: application/json
{"42": {"systemInfo": {"ramTotal": 16669396992, "ramFree": 1191108608, "procsNumber": 8}, "hardwareInfo": {"Machine": "x86_64"}}}
```
Сервер должен вернуть переданные с помощью клиента данные.## Добавление дополнительных методов
Для добавления дополнительного метода необходимо в файле ```methods.c``` добавить реализацию метода.
```c
void someMethod(char* result)
{
// Реализация
}
```И включить его в список ```methods```.
```c
static method_t methods[] =
{
{ "systemInfo", systemInfo },
{ "hardwareInfo", hardwareInfo },
{ "someMethod", someMethod }
/* other methods */
};
```