#include "http_curl.h" #include <curl/curl.h> #include <json-c/json.h> #include <json-c/json_util.h> #include <stdio.h> #include <stdlib.h> #include <string.h> char *url_encode(char *s) { return curl_easy_escape(NULL, s, 0); } char *web_search_news(char *q) { char *news = malloc(4096); news[0] = 0; char *q_encoded = url_encode(q); sprintf(news, "https://search.molodetz.nl/search?q=%s&format=json&categories=news", q_encoded); free(q_encoded); char *ret = curl_get(news); free(news); json_object *json_ret = json_tokener_parse(ret); json_object *json_results = json_object_object_get(json_ret, "results"); json_object *json_result = json_object_array_get_idx(json_results, 0); if (!json_result) { json_object_put(json_ret); free(ret); return web_search_news(q); } json_object_put(json_ret); return ret; } char *web_search(char *q) { char *news = (char *)malloc(4096); news[0] = 0; char *q_encoded = url_encode(q); sprintf(news, "https://search.molodetz.nl/search?q=%s&format=json", q_encoded); free(q_encoded); char *ret = curl_get(news); free(news); json_object *json_ret = json_tokener_parse(ret); json_object *json_results = json_object_object_get(json_ret, "results"); json_object *json_result = json_object_array_get_idx(json_results, 0); if (!json_result) { json_object_put(json_ret); free(ret); return web_search(q); } json_object_put(json_ret); return ret; } char *web_search_engine(char *q) { char *searx = malloc(4096); searx[0] = 0; sprintf(searx, "https://searx.molodetz.nl/search?q=%s&format=json", q); char *ret = curl_get(searx); free(searx); return ret; }