messenger_via_http_server  1.0
Функции
Файл db_plugin_sqlite.c

Прослойка между SQLite и mongoose. Подробнее...

#include <string.h>
#include <sstream>
#include "mongoose.h"
#include "db_plugin.h"
#include "sqlite3.h"
Граф включаемых заголовочных файлов для db_plugin_sqlite.c:

Функции

int is_equal (const struct mg_str *s1, const struct mg_str *s2)
 Функция сравнивает две строки на предмет равенства Подробнее...
 
void * db_open (const char *db_path)
 Функция открывает локальную базу данных, а если она не существует, то создаёт новую Подробнее...
 
void db_close (void **db_handle)
 Функция закрывает базу данных Подробнее...
 
char * build_message_json (const char *message_id, const char *from, const char *to, const char *message, const char *time)
 Функция формирует строку - JSON сообщение Подробнее...
 
int switch_action (const mg_str *buf)
 Функция парсит параметр action HTTP запроса Подробнее...
 
char * check_auth (const http_message *hm, void *db)
 Функция выполняет проверку авторизации Подробнее...
 
void get_message (struct mg_connection *nc, const struct http_message *hm, void *db)
 Функция api получения сообщения Подробнее...
 
void send_message (struct mg_connection *nc, const struct http_message *hm, void *db)
 Функция api отправки сообщения Подробнее...
 
char * get_user_from_db (void *db, char *user)
 Функция достаёт данные о пользователе из базы данных Подробнее...
 
void register_user (struct mg_connection *nc, const struct http_message *hm, void *db)
 Функция api регистрации нового пользователя Подробнее...
 
void get_user (struct mg_connection *nc, const struct http_message *hm, void *db)
 Функция api получения данных о пользователе Подробнее...
 
void op_post (struct mg_connection *nc, const struct http_message *hm, void *db)
 Функция-обработчик POST запроса к api. Подробнее...
 
void db_op (struct mg_connection *nc, const struct http_message *hm, void *db, int op)
 Функция-обработчик любого запроса к api. Подробнее...
 

Подробное описание

Прослойка между SQLite и mongoose.

Функции, содержащиеся в файле выполняют роль прослойки между базой данных SQLite и серверной частью приложения, написанной с использованием mongoose networking library. Так же содержит все функции api сервера.

Функции

◆ build_message_json()

char* build_message_json ( const char *  message_id,
const char *  from,
const char *  to,
const char *  message,
const char *  time 
)

Функция формирует строку - JSON сообщение

Аргументы
[in]message_idУникальный идентификатор сообщения
[in]fromОт кого адресовано сообщение
[in]toКому адресовано сообщение
[in]messageТекст сообщения
[in]timeВремя, в которое сообщение было получено сервером (UTC Unix)
Возвращает
Указатель на строку, содержащую JSON сообщение
Граф вызова функции:

◆ check_auth()

char* check_auth ( const http_message hm,
void *  db 
)

Функция выполняет проверку авторизации

Необходимо сделать:
Переписать функцию, используя функцию get_user_from_db
Аргументы
[in]hmТело HTTP запроса
[in]dbHandler базы данных
Возвращаемые значения
NULLесли пользователь не найден, или неправильный пароль
Указательна строку, содержащую имя пользователя
Граф вызовов:
Граф вызова функции:

◆ db_close()

void db_close ( void **  db_handle)

Функция закрывает базу данных

Аргументы
[in]db_handleуказатель на handler базы данных, которую необходимо закрыть
Граф вызовов:
Граф вызова функции:

◆ db_op()

void db_op ( struct mg_connection nc,
const struct http_message hm,
void *  db,
int  op 
)

Функция-обработчик любого запроса к api.

Аргументы
[in]ncСоединение, по которому нужно отправить ответ
[in]hmТело HTTP запроса
[in]dbHandler базы данных
[in]opТип запроса к api
Граф вызовов:
Граф вызова функции:

◆ db_open()

void* db_open ( const char *  db_path)

Функция открывает локальную базу данных, а если она не существует, то создаёт новую

Аргументы
[in]db_pathПуть к базе данных
Возвращает
Указатель на handler базы данных
Граф вызовов:
Граф вызова функции:

◆ get_message()

void get_message ( struct mg_connection nc,
const struct http_message hm,
void *  db 
)

Функция api получения сообщения

Функция проверяет авторизацию, достаёт из базы данных первое сообщение, которое неизвестно клиенту и отправляет ответ. В случае, если сообщение не найдено, возвращает ответ об отвутствии новых сообщений.

Аргументы
[in]ncСоединение, по которому нужно отправить ответ
[in]hmТело HTTP запроса
[in]dbHandler базы данных
Граф вызовов:
Граф вызова функции:

◆ get_user()

void get_user ( struct mg_connection nc,
const struct http_message hm,
void *  db 
)

Функция api получения данных о пользователе

Функция проверяет правильность запроса, отправляет по соединению данные о пользователе.

Аргументы
[in]ncСоединение, по которому нужно отправить ответ
[in]hmТело HTTP запроса
[in]dbHandler базы данных
Граф вызовов:
Граф вызова функции:

◆ get_user_from_db()

char* get_user_from_db ( void *  db,
char *  user 
)

Функция достаёт данные о пользователе из базы данных

Аргументы
[in]dbHandler базы данных
[in]userУказатель на строку, содержащую имя пользователя
Возвращаемые значения
NULLесли пользователь не найден в базе данных
Указательна строку, содержащую имя пользователя
Граф вызовов:
Граф вызова функции:

◆ is_equal()

int is_equal ( const struct mg_str s1,
const struct mg_str s2 
)

Функция сравнивает две строки на предмет равенства

Аргументы
s1,s2Сравниваемые строки
Возвращаемые значения
1Строки равны
0Строки не равны
Граф вызова функции:

◆ op_post()

void op_post ( struct mg_connection nc,
const struct http_message hm,
void *  db 
)

Функция-обработчик POST запроса к api.

Аргументы
[in]ncСоединение, по которому нужно отправить ответ
[in]hmТело HTTP запроса
[in]dbHandler базы данных
Граф вызовов:
Граф вызова функции:

◆ register_user()

void register_user ( struct mg_connection nc,
const struct http_message hm,
void *  db 
)

Функция api регистрации нового пользователя

Функция проверяет правильность запроса, пытается добавить пользователя в базу данных. Результат попытки отправляет по открытому соединению.

Аргументы
[in]ncСоединение, по которому нужно отправить ответ
[in]hmТело HTTP запроса
[in]dbHandler базы данных
Граф вызовов:
Граф вызова функции:

◆ send_message()

void send_message ( struct mg_connection nc,
const struct http_message hm,
void *  db 
)

Функция api отправки сообщения

Функция проверяет авторизацию, правильность запроса, кладёт в базу данных новое сообщение.

Аргументы
[in]ncСоединение, по которому нужно отправить ответ
[in]hmТело HTTP запроса
[in]dbHandler базы данных
Граф вызовов:
Граф вызова функции:

◆ switch_action()

int switch_action ( const mg_str buf)

Функция парсит параметр action HTTP запроса

Аргументы
[in]bufТело HTTP запроса с параметрами
Возвращает
enum api_action
Граф вызовов:
Граф вызова функции: