Skip to content
Extraits de code Groupes Projets
Vérifiée Valider 731f58d2 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

Uri to Url

parent 0e83679e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!65Resolve "Sync from kurisu"
...@@ -7,8 +7,13 @@ ...@@ -7,8 +7,13 @@
/* Defines */ /* Defines */
#define LKT_MAX_SQLITE_STATEMENT 1024 #define URL_MAX_LEN 1024
#define PROTECTED_DATABASE "disk" #define DEFAULT_URL "https://kurisu.iiens.net"
#define GET_ID_JSON DEFAULT_URL "/api_karas.php?id=%ld"
#define GET_ID_FILE DEFAULT_URL "/download.php?id=%ld"
#define LKT_MAX_SQLITE_STATEMENT 1024
#define PROTECTED_DATABASE "disk"
#define LKT_DATABASE_NAME_KID "id" #define LKT_DATABASE_NAME_KID "id"
#define LKT_DATABASE_NAME_KNAME "source_name" #define LKT_DATABASE_NAME_KNAME "source_name"
...@@ -21,10 +26,10 @@ ...@@ -21,10 +26,10 @@
#define LKT_DATABASE_KARA_COLUMNT_ANY "any_col" #define LKT_DATABASE_KARA_COLUMNT_ANY "any_col"
#define LKT_DATABASE_KARA_ALL "string" #define LKT_DATABASE_KARA_ALL "string"
#define LEKTOR_TAG_MAX 256 #define LEKTOR_TAG_MAX 256
#define LKT_MESSAGE_ARGS_MAX 32 #define LKT_MESSAGE_ARGS_MAX 32
#define LKT_MESSAGE_MAX 2048 #define LKT_MESSAGE_MAX 2048
#define LKT_DEFAULT_LIST_SIZE 10 #define LKT_DEFAULT_LIST_SIZE 10
enum mpd_idle_flag { enum mpd_idle_flag {
MPD_IDLE_NONE = 0, MPD_IDLE_NONE = 0,
......
...@@ -26,3 +26,7 @@ struct lkt_uri { ...@@ -26,3 +26,7 @@ struct lkt_uri {
/* Create and delete URIs */ /* Create and delete URIs */
bool lkt_uri_from(struct lkt_uri *ret, char *const str); bool lkt_uri_from(struct lkt_uri *ret, char *const str);
void lkt_uri_free(struct lkt_uri *ret); void lkt_uri_free(struct lkt_uri *ret);
/* Make an URL to download from kurisu.
base_url is the prefix for the api, e.g. https://kurisu.iiens.net/api_kara.php */
int lkt_uri_to_url(struct lkt_uri *uri, const char *base_url, char *ret, size_t len);
...@@ -56,11 +56,11 @@ core_sources = [ 'src/mkv/bufferfd.c' ...@@ -56,11 +56,11 @@ core_sources = [ 'src/mkv/bufferfd.c'
, 'src/net/command.c' , 'src/net/command.c'
, 'src/net/listen.c' , 'src/net/listen.c'
, 'src/net/message.c' , 'src/net/message.c'
, 'src/net/downloader.c'
, 'src/net/sync.c'
, 'src/config.c' , 'src/config.c'
, 'src/uri.c' , 'src/uri.c'
, 'src/ini/ini.c' , 'src/ini/ini.c'
, 'src/repo/downloader.c'
, 'src/repo/sync.c'
, 'src/thread.c' , 'src/thread.c'
] ]
......
...@@ -18,11 +18,6 @@ ...@@ -18,11 +18,6 @@
static volatile unsigned int curl_init = false; static volatile unsigned int curl_init = false;
#define URL_MAX_LEN 1024
#define DEFAULT_URL "https://kurisu.iiens.net"
#define GET_ID_JSON DEFAULT_URL "/api_karas.php?id=%ld"
#define GET_ID_FILE DEFAULT_URL "/download.php?id=%ld"
struct memory { struct memory {
void *mem; void *mem;
size_t size; size_t size;
......
Fichier déplacé
...@@ -88,3 +88,47 @@ lkt_uri_free(struct lkt_uri *ret) ...@@ -88,3 +88,47 @@ lkt_uri_free(struct lkt_uri *ret)
if (ret->_allocated) if (ret->_allocated)
free(ret->value); free(ret->value);
} }
/* Support a subrange of URIs. */
static inline int
__lkt_to_str(struct lkt_uri *uri, char *ret, size_t len)
{
switch (uri->type) {
case uri_id:
snprintf(ret, len - 1, "id=%s", (char *) uri->value);
break;
case uri_type:
snprintf(ret, len - 1, "type=%s", (char *) uri->value);
break;
case uri_author:
snprintf(ret, len - 1, "author=%s", (char *) uri->value);
break;
case uri_category:
snprintf(ret, len - 1, "cat=%s", (char *) uri->value);
break;
case uri_query:
snprintf(ret, len - 1, "search=%s", (char *) uri->value);
break;
default:
LOG_ERROR("URI type %d may not be supported by kurisu, generate an error", uri->type);
return 1;
}
ret[len - 1] = '\0';
return 0;
}
int
lkt_uri_to_url(struct lkt_uri *uri, const char *base_url, char *ret, size_t len)
{
RETURN_UNLESS(uri && base_url && ret && len > 0, "Invalid argument", 1);
/* Craft URL */
memset(ret, 0, len);
memcpy(ret, base_url, sizeof(char) * strlen(base_url));
strncat(ret, "?", len - 1);
/* The query */
size_t init_len = strlen(ret);
return __lkt_to_str(uri, ret + init_len, len - init_len);
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter