diff options
Diffstat (limited to 'src/tools/tinyurl.c')
-rw-r--r-- | src/tools/tinyurl.c | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/src/tools/tinyurl.c b/src/tools/tinyurl.c deleted file mode 100644 index 41ff43ec..00000000 --- a/src/tools/tinyurl.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * tinyurl.c - * vim: expandtab:ts=4:sts=4:sw=4 - * - * Copyright (C) 2012 - 2019 James Booth <boothj5@gmail.com> - * - * This file is part of Profanity. - * - * Profanity is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Profanity 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Profanity. If not, see <https://www.gnu.org/licenses/>. - * - * In addition, as a special exception, the copyright holders give permission to - * link the code of portions of this program with the OpenSSL library under - * certain conditions as described in each individual source file, and - * distribute linked combinations including the two. - * - * You must obey the GNU General Public License in all respects for all of the - * code used other than OpenSSL. If you modify file(s) with this exception, you - * may extend this exception to your version of the file(s), but you are not - * obligated to do so. If you do not wish to do so, delete this exception - * statement from your version. If you delete this exception statement from all - * source files in the program, then also delete it here. - * - */ - -#include <stdlib.h> -#include <string.h> -#include <sys/select.h> - -#include <curl/curl.h> -#include <curl/easy.h> -#include <glib.h> - -struct curl_data_t -{ - char* buffer; - size_t size; -}; - -static size_t _data_callback(void* ptr, size_t size, size_t nmemb, void* data); - -gboolean -tinyurl_valid(char* url) -{ - return (g_str_has_prefix(url, "http://") || g_str_has_prefix(url, "https://")); -} - -char* -tinyurl_get(char* url) -{ - GString* full_url = g_string_new("http://tinyurl.com/api-create.php?url="); - g_string_append(full_url, url); - - CURL* handle = curl_easy_init(); - struct curl_data_t output; - output.buffer = NULL; - output.size = 0; - - curl_easy_setopt(handle, CURLOPT_URL, full_url->str); - curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, _data_callback); - curl_easy_setopt(handle, CURLOPT_WRITEDATA, (void*)&output); - - curl_easy_perform(handle); - curl_easy_cleanup(handle); - - g_string_free(full_url, TRUE); - - if (output.buffer) { - output.buffer[output.size++] = '\0'; - return output.buffer; - } else { - return NULL; - } -} - -static size_t -_data_callback(void* ptr, size_t size, size_t nmemb, void* data) -{ - size_t realsize = size * nmemb; - struct curl_data_t* mem = (struct curl_data_t*)data; - mem->buffer = realloc(mem->buffer, mem->size + realsize + 1); - - if (mem->buffer) { - memcpy(&(mem->buffer[mem->size]), ptr, realsize); - mem->size += realsize; - mem->buffer[mem->size] = 0; - } - - return realsize; -} |