Compare commits

...

5 Commits

12 changed files with 547 additions and 64 deletions

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
/.idea/ /.idea/
/cmake-build-debug/ /cmake-build-debug/
/doc/

View File

@@ -1,6 +1,8 @@
cmake_minimum_required(VERSION 3.5) cmake_minimum_required(VERSION 3.5)
project(YaDisk) project(YaDisk)
set(CMAKE_C_STANDARD 99)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
find_package(CURL REQUIRED) find_package(CURL REQUIRED)
find_package(JsonC REQUIRED) find_package(JsonC REQUIRED)
@@ -31,11 +33,10 @@ target_link_libraries(yadisk
target_include_directories( target_include_directories(
test-app PRIVATE test-app PRIVATE
"${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src"
${NEON_INCLUDE_DIR}
${CURL_INCLUDE_DIR} ${CURL_INCLUDE_DIR}
${JSON_C_INCLUDE_DIR} ${JSON_C_INCLUDE_DIR}
) )
target_link_libraries( target_link_libraries(
test-app test-app
yadisk yadisk
) )

View File

@@ -1,7 +1,21 @@
// /*
// Created by maxim on 27.11.23. * libyadisk - A C library for interacting with Yandex.Disk API
// *
* Copyright (C) 2023 Maxim Slipenko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
*/
#ifndef YADISK_YADISK_H #ifndef YADISK_YADISK_H
#define YADISK_YADISK_H #define YADISK_YADISK_H

View File

@@ -1,6 +1,23 @@
// /*
// Created by maxim on 27.11.23. * libyadisk - A C library for interacting with Yandex.Disk API
// *
* This file is part of libyadisk.
*
* Copyright (C) 2023 Maxim Slipenko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
*/
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
@@ -97,6 +114,7 @@ int api_http_request(
} else { } else {
snprintf(url, sizeof(url), "%s%s", YANDEX_DISK_API_HOST, path); snprintf(url, sizeof(url), "%s%s", YANDEX_DISK_API_HOST, path);
} }
printf("%s\n", url);
curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cb); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cb);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&chunk); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&chunk);

View File

@@ -1,6 +1,23 @@
// /*
// Created by maxim on 27.11.23. * libyadisk - A C library for interacting with Yandex.Disk API
// *
* This file is part of libyadisk.
*
* Copyright (C) 2023 Maxim Slipenko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
*/
#ifndef YADISK_YADISK_API_INTERNAL_H #ifndef YADISK_YADISK_API_INTERNAL_H
#define YADISK_YADISK_API_INTERNAL_H #define YADISK_YADISK_API_INTERNAL_H
@@ -24,12 +41,13 @@ int api_http_request(yadisk_api_client* client,
return YADISK_FAILED_PARSE_JSON; \ return YADISK_FAILED_PARSE_JSON; \
} }
#define __DANGER_GET_JSON_OBJECT(root, key) \ #define __DANGER_GET_JSON_OBJECT(root, key) \
json_object* obj = NULL; \ json_object* obj = NULL; \
if (!json_object_object_get_ex(root, key, &obj)){\ if (!json_object_object_get_ex(root, key, &obj)){ \
json_object_put(root); \ }
THROW_PARSE_JSON_ERROR \
} \ // json_object_put(root);
// THROW_PARSE_JSON_ERROR
#define GET_JSON_STRING(root, key, v) { \ #define GET_JSON_STRING(root, key, v) { \
__DANGER_GET_JSON_OBJECT(root, key) \ __DANGER_GET_JSON_OBJECT(root, key) \

View File

@@ -1,14 +1,44 @@
// /*
// Created by maxim on 27.11.23. * libyadisk - A C library for interacting with Yandex.Disk API
// *
* This file is part of libyadisk.
*
* Copyright (C) 2023 Maxim Slipenko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
*/
#include "yadisk_get_disk.h" #include "yadisk_get_disk.h"
#include "yadisk_api_internal.h" #include "yadisk_api_internal.h"
yadisk_code yadisk_get_disk(yadisk_api_client* client, yadisk_disk_info* info) yadisk_code yadisk_get_disk(yadisk_api_client* client, yadisk_get_disk_params* params, yadisk_disk_info* info)
{ {
query_param* qparams = NULL;
int num_params = 0;
const int max_params = 1;
if (params != NULL) {
qparams = malloc(max_params * sizeof(query_param));
if (params->fields != NULL) {
qparams[num_params].key = "fields";
qparams[num_params].value = strdup(params->fields);
num_params++;
}
}
char* output = NULL; char* output = NULL;
int error = api_http_request(client, "GET", "/v1/disk", NULL, 0, &output); int error = api_http_request(client, "GET", "/v1/disk", qparams, num_params, &output);
if (error) { if (error) {
return YADISK_FAILED_HTTP_REQUEST; return YADISK_FAILED_HTTP_REQUEST;
} }
@@ -22,6 +52,46 @@ yadisk_code yadisk_get_disk(yadisk_api_client* client, yadisk_disk_info* info)
GET_JSON_STRING(root, "reg_time", &(info->reg_time)); GET_JSON_STRING(root, "reg_time", &(info->reg_time));
GET_JSON_BOOL(root, "is_paid", &(info->is_paid)); GET_JSON_BOOL(root, "is_paid", &(info->is_paid));
json_object *user_object;
if (!json_object_object_get_ex(root, "user", &user_object)) {
// THROW_PARSE_JSON_ERROR
}
if (user_object) {
GET_JSON_STRING(user_object, "reg_time", &(info->user.reg_time));
GET_JSON_STRING(user_object, "display_name", &(info->user.display_name));
GET_JSON_STRING(user_object, "uid", &(info->user.uid));
GET_JSON_STRING(user_object, "country", &(info->user.country));
GET_JSON_BOOL(user_object, "is_child", &(info->user.is_child));
GET_JSON_STRING(user_object, "login", &(info->user.login));
}
json_object *system_folders;
if (!json_object_object_get_ex(root, "system_folders", &system_folders)) {
// THROW_PARSE_JSON_ERROR
}
if (system_folders) {
GET_JSON_STRING(system_folders, "odnoklassniki", &(info->system_folders.odnoklassniki));
GET_JSON_STRING(system_folders, "google", &(info->system_folders.google));
GET_JSON_STRING(system_folders, "instagram", &(info->system_folders.instagram));
GET_JSON_STRING(system_folders, "vkontakte", &(info->system_folders.vkontakte));
GET_JSON_STRING(system_folders, "attach", &(info->system_folders.attach));
GET_JSON_STRING(system_folders, "mailru", &(info->system_folders.mailru));
GET_JSON_STRING(system_folders, "downloads", &(info->system_folders.downloads));
GET_JSON_STRING(system_folders, "applications", &(info->system_folders.applications));
GET_JSON_STRING(system_folders, "facebook", &(info->system_folders.facebook));
GET_JSON_STRING(system_folders, "social", &(info->system_folders.social));
GET_JSON_STRING(system_folders, "messenger", &(info->system_folders.messenger));
GET_JSON_STRING(system_folders, "calendar", &(info->system_folders.calendar));
GET_JSON_STRING(system_folders, "photostream", &(info->system_folders.photostream));
GET_JSON_STRING(system_folders, "screenshots", &(info->system_folders.screenshots));
GET_JSON_STRING(system_folders, "scans", &(info->system_folders.scans));
}
GET_JSON_BOOL(root, "unlimited_autoupload_enabled", &(info->unlimited_autoupload_enabled));
GET_JSON_UINT64(root, "revision", &(info->revision));
json_object_put(root); json_object_put(root);

View File

@@ -1,20 +1,152 @@
// /*
// Created by maxim on 27.11.23. * libyadisk - A C library for interacting with Yandex.Disk API
// *
* This file is part of libyadisk.
*
* Copyright (C) 2023 Maxim Slipenko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
*/
/**
* @file
*/
#ifndef YADISK_YADISK_GET_DISK_H #ifndef YADISK_YADISK_GET_DISK_H
#define YADISK_YADISK_GET_DISK_H #define YADISK_YADISK_GET_DISK_H
#include "yadisk_shared.h" #include "yadisk_shared.h"
typedef struct yadisk_disk_info { /**
unsigned long total_space; * @brief
unsigned long trash_size; * @en User info
unsigned long used_space; * @ru Информация о пользователе
int is_paid; */
typedef struct {
const char* reg_time; const char* reg_time;
const char* display_name;
const char* uid;
const char* country;
int is_child;
const char* login;
} yadisk_user_info;
/**
* @brief
* @en System folders paths
* @ru Пути системных папок
*/
typedef struct {
const char* odnoklassniki;
const char* google;
const char* instagram;
const char* vkontakte;
const char* attach;
const char* mailru;
const char* downloads;
const char* applications;
const char* facebook;
const char* social;
const char* messenger;
const char* calendar;
const char* photostream;
const char* screenshots;
const char* scans;
} yadisk_system_folders;
/**
* @brief
* @en Information about the disk
* @ru Информация о диске
*/
typedef struct yadisk_disk_info {
/**
* @brief
* @en Total space
* @ru Общий объем
*/
unsigned long total_space;
/**
* @brief
* @en Trash size
* @ru Объем корзины
*/
unsigned long trash_size;
/**
* @brief
* @en Used space
* @ru Использованный объем
*/
unsigned long used_space;
/**
* @brief
* @en Is paid tariff
* @ru Платный ли тариф
*/
int is_paid;
/**
* @brief
* @en Registration date
* @ru Дата регистрации
*/
const char* reg_time;
/**
* @brief
* @en System folders paths
* @ru Пути системных папок
*/
yadisk_system_folders system_folders;
/**
* @brief
* @en Info about user
* @ru Информация о пользователе
*/
yadisk_user_info user;
/**
* @brief
* @en Unlimited autoupload
* @ru Безлимитная автозагрузка
*/
int unlimited_autoupload_enabled;
/**
* @brief
* @en Revision
* @ru Ревизия
*/
unsigned long revision;
} yadisk_disk_info; } yadisk_disk_info;
yadisk_code yadisk_get_disk(yadisk_api_client* client, yadisk_disk_info* info); typedef struct {
/**
* @brief
* @ru Список возвращаемых атрибутов.
*/
const char* fields;
} yadisk_get_disk_params;
/**
* @brief
* @ru Функция для получения метаинформации о диске пользователя.
*
* Реализует метод `GET /v1/disk`
* @param client
* @ru Клиент Яндекс.Диска
* @param params
* @ru Параметры запроса
* @param info
* @ru Информация о диске. Результат выполнения операции
* @return
* @ru Код возврата (YADISK_OK в случае успеха).
*/
yadisk_code yadisk_get_disk(yadisk_api_client* client, yadisk_get_disk_params* params, yadisk_disk_info* info);
#endif //YADISK_YADISK_GET_DISK_H #endif //YADISK_YADISK_GET_DISK_H

View File

@@ -1,12 +1,28 @@
// /*
// Created by maxim on 27.11.23. * libyadisk - A C library for interacting with Yandex.Disk API
// *
* Copyright (C) 2023 Maxim Slipenko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
*/
#include "yadisk_get_disk_resources.h" #include "yadisk_get_disk_resources.h"
#include "yadisk_api_internal.h" #include "yadisk_api_internal.h"
yadisk_code yadisk_code
yadisk_get_disk_resources( yadisk_get_disk_resources(
yadisk_api_client* client, const char* path, yadisk_resource_info* info yadisk_api_client* client, yadisk_get_disk_resources_params* path, yadisk_resource_info* info
) )
{ {
char* output = NULL; char* output = NULL;
@@ -25,6 +41,9 @@ yadisk_get_disk_resources(
GET_JSON_STRING(root, "type", &(info->type)); GET_JSON_STRING(root, "type", &(info->type));
GET_JSON_STRING(root, "created", &(info->created)); GET_JSON_STRING(root, "created", &(info->created));
GET_JSON_STRING(root, "modified", &(info->modified)); GET_JSON_STRING(root, "modified", &(info->modified));
GET_JSON_STRING(root, "media_type", &(info->media_type));
GET_JSON_STRING(root, "mime_type", &(info->mime_type));
GET_JSON_UINT64(root, "size", &(info->size));
json_object_put(root); json_object_put(root);
return YADISK_OK; return YADISK_OK;

View File

@@ -1,6 +1,24 @@
// /*
// Created by maxim on 27.11.23. * libyadisk - A C library for interacting with Yandex.Disk API
// *
* This file is part of libyadisk.
*
* Copyright (C) 2023 Maxim Slipenko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
*/
#ifndef YADISK_GET_DISK_RESOURCES_H_INCLUDED #ifndef YADISK_GET_DISK_RESOURCES_H_INCLUDED
#define YADISK_GET_DISK_RESOURCES_H_INCLUDED #define YADISK_GET_DISK_RESOURCES_H_INCLUDED
@@ -12,16 +30,49 @@
const char* resource_id; \ const char* resource_id; \
const char* type; \ const char* type; \
const char* created; \ const char* created; \
const char* modified; const char* modified; \
const char* mime_type; \
const char* media_type; \
unsigned long size; \
const char* md5; \
const char* sha256; \
const char* antivirus_status; \
unsigned long long revision; \
yadisk_comment_ids* comment_ids; \
yadisk_sizes* sizes; \
unsigned long sizes_count;
// Структура для комментариев
typedef struct {
const char* private_resource;
const char* public_resource;
} yadisk_comment_ids;
// Структура для размеров
typedef struct {
const char* url;
const char* name;
} yadisk_size;
// Массив размеров
typedef struct {
yadisk_size* sizes;
unsigned long count;
} yadisk_sizes;
struct yadisk_resource_item { struct yadisk_resource_item {
YADISK_RESOURCE_ITEM_PROPERTIES YADISK_RESOURCE_ITEM_PROPERTIES
}; };
typedef struct { typedef struct {
/** Массив элементов */
struct yadisk_resource_item* items; // Массив элементов
unsigned long items_count; // Количество элементов
unsigned long limit; unsigned long limit;
unsigned long offset; unsigned long offset;
unsigned long total; unsigned long total;
const char* sort;
const char* path;
} yadisk_resource_embedded; } yadisk_resource_embedded;
typedef struct { typedef struct {
@@ -29,6 +80,16 @@ typedef struct {
const yadisk_resource_embedded* _embedded; const yadisk_resource_embedded* _embedded;
} yadisk_resource_info; } yadisk_resource_info;
yadisk_code yadisk_get_disk_resources(yadisk_api_client* client, const char* path, yadisk_resource_info* resource); typedef struct {
const char* path;
const char* fields;
unsigned long limit;
unsigned long offset;
int preview_crop;
const char* preview_size;
const char* sort;
} yadisk_get_disk_resources_params;
yadisk_code yadisk_get_disk_resources(yadisk_api_client* client, yadisk_get_disk_resources_params* params, yadisk_resource_info* resource);
#endif // YADISK_GET_DISK_RESOURCES_H_INCLUDED #endif // YADISK_GET_DISK_RESOURCES_H_INCLUDED

View File

@@ -1,6 +1,23 @@
// /*
// Created by maxim on 27.11.23. * libyadisk - A C library for interacting with Yandex.Disk API
// *
* This file is part of libyadisk.
*
* Copyright (C) 2023 Maxim Slipenko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
*/
#include "yadisk_shared.h" #include "yadisk_shared.h"

View File

@@ -1,7 +1,26 @@
// /*
// Created by maxim on 27.11.23. * libyadisk - A C library for interacting with Yandex.Disk API
// *
* This file is part of libyadisk.
*
* Copyright (C) 2023 Maxim Slipenko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
*/
/**
* @file
*/
#ifndef YADISK_YADISK_SHARED_H #ifndef YADISK_YADISK_SHARED_H
#define YADISK_YADISK_SHARED_H #define YADISK_YADISK_SHARED_H
@@ -9,17 +28,74 @@
#include <curl/curl.h> #include <curl/curl.h>
#include <json.h> #include <json.h>
/**
* @brief
* @ru Определение кодов ошибок для взаимодействия с сервисом Яндекс.Диск.
*
* Это перечисление используется для представления различных состояний, которые могут возникнуть
* при взаимодействии с API Яндекс.Диска. Оно включает в себя как успешные, так и ошибочные
* результаты операций.
*/
typedef enum { typedef enum {
/**
* @brief
* @ru Операция выполнена успешно, без ошибок.
*/
YADISK_OK = 0, YADISK_OK = 0,
/**
* @brief
* @ru Ошибка при разборе JSON.
*
* Возникает, если полученный от Яндекс.Диска ответ не может быть
* корректно интерпретирован как валидный JSON.
*/
YADISK_FAILED_PARSE_JSON = 1, YADISK_FAILED_PARSE_JSON = 1,
/**
* @brief
* @ru Ошибка HTTP запроса.
*
* Этот код возвращается, когда происходит сбой в процессе
* отправки запроса или получения ответа от Яндекс.Диска,
* например, из-за проблем с сетевым соединением.
*/
YADISK_FAILED_HTTP_REQUEST = 2 YADISK_FAILED_HTTP_REQUEST = 2
} yadisk_code; } yadisk_code;
/**
* @brief
* @ru Структура для клиента API Яндекс.Диска.
*
* Эта структура используется для хранения данных, необходимых для взаимодействия с API Яндекс.Диска.
*/
typedef struct { typedef struct {
/**
* @brief
* @ru OAuth токен для аутентификации в API Яндекс.Диска.
*/
char* token; char* token;
} yadisk_api_client; } yadisk_api_client;
/**
* @brief
* @ru Инициализирует клиента Яндекс.Диска.
*
* Вызывает необходимые процедуры для подготовки клиента к работе с API Яндекс.Диска.
* Эта функция должна быть вызвана перед началом работы с API.
*
* @return
* @ru Код ошибки (0 в случае успеха).
*/
int yadisk_init(); int yadisk_init();
/**
* @brief
* @ru Освобождает ресурсы, связанные с клиентом Яндекс.Диска.
*
* Эта функция освобождает все ресурсы и выполняет необходимые действия по очистке
* после завершения работы с API Яндекс.Диска. Она должна быть вызвана после
* завершения всех операций с API.
*/
void yadisk_cleanup(); void yadisk_cleanup();
#endif //YADISK_YADISK_SHARED_H #endif //YADISK_YADISK_SHARED_H

View File

@@ -1,7 +1,23 @@
// /*
// Created by maxim on 27.11.23. * libyadisk - A C library for interacting with Yandex.Disk API
// *
* This file is part of libyadisk.
*
* Copyright (C) 2023 Maxim Slipenko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
*/
#include <yadisk.h> #include <yadisk.h>
#include <stdio.h> #include <stdio.h>
@@ -14,29 +30,69 @@ int main()
yadisk_init(); yadisk_init();
yadisk_api_client* client = &(yadisk_api_client) { yadisk_api_client* client = malloc(sizeof(yadisk_api_client));
.token = token if (client != NULL) {
}; client->token = token;
}
yadisk_disk_info yadisk_disk_info; yadisk_disk_info info;
yadisk_get_disk(client, &yadisk_disk_info); // yadisk_get_disk_params params1 = {.fields = "total_space"};
yadisk_code result = yadisk_get_disk(client, NULL, &info);
if (result != YADISK_OK) {
printf("Erorr yadisk_get_disk\n");
return -1;
}
printf("Total disk size: %lu\n", yadisk_disk_info.total_space); printf("Total disk size: %lu\n", info.total_space);
printf("Trash size: %lu\n", yadisk_disk_info.trash_size); printf("Trash size: %lu\n", info.trash_size);
printf("Used space: %lu\n", yadisk_disk_info.used_space); printf("Used space: %lu\n", info.used_space);
printf("Registration time: %s\n", yadisk_disk_info.reg_time); printf("Registration time: %s\n", info.reg_time);
printf("Is paid: %s\n", yadisk_disk_info.is_paid ? "Yes" : "No"); printf("Is paid: %s\n", info.is_paid ? "Yes" : "No");
printf("User Info:\n");
printf(" Registration time: %s\n", info.user.reg_time);
printf(" Display Name: %s\n", info.user.display_name);
printf(" UID: %s\n", info.user.uid);
printf(" Country: %s\n", info.user.country);
printf(" Is Child: %s\n", info.user.is_child ? "Yes" : "No");
printf(" Login: %s\n", info.user.login);
printf("System Folders:\n");
printf(" Odnoklassniki: %s\n", info.system_folders.odnoklassniki);
printf(" Google: %s\n", info.system_folders.google);
printf(" Instagram: %s\n", info.system_folders.instagram);
printf(" Vkontakte: %s\n", info.system_folders.vkontakte);
printf(" Attach: %s\n", info.system_folders.attach);
printf(" Mailru: %s\n", info.system_folders.mailru);
printf(" Downloads: %s\n", info.system_folders.downloads);
printf(" Applications: %s\n", info.system_folders.applications);
printf(" Facebook: %s\n", info.system_folders.facebook);
printf(" Social: %s\n", info.system_folders.social);
printf(" Messenger: %s\n", info.system_folders.messenger);
printf(" Calendar: %s\n", info.system_folders.calendar);
printf(" Photostream: %s\n", info.system_folders.photostream);
printf(" Screenshots: %s\n", info.system_folders.screenshots);
printf(" Scans: %s\n", info.system_folders.scans);
printf("Unlimited Autoupload Enabled: %s\n", info.unlimited_autoupload_enabled ? "Yes" : "No");
printf("Revision: %lu\n", info.revision);
printf("=================\n"); printf("=================\n");
yadisk_resource_info resource; yadisk_resource_info resource;
yadisk_get_disk_resources(client, "/", &resource); yadisk_get_disk_resources_params params = {
.path = "/"
};
yadisk_get_disk_resources(client, &params, &resource);
printf("Path: %s\n", resource.path); printf("Path: %s\n", resource.path);
printf("Name: %s\n", resource.name); printf("Name: %s\n", resource.name);
printf("Type: %s\n", resource.type); printf("Type: %s\n", resource.type);
printf("Created: %s\n", resource.created); printf("Created: %s\n", resource.created);
printf("Modified: %s\n", resource.modified); printf("Modified: %s\n", resource.modified);
printf("ResourceID: %s\n", resource.resource_id); printf("ResourceID: %s\n", resource.resource_id);
printf("Media TYPE: %s\n", resource.media_type);
printf("Mime TYPE: %s\n", resource.mime_type);
printf("Size: %lu\n", resource.size);
yadisk_cleanup(); yadisk_cleanup();