1/* 2 * Copyright 2004-2008, Fran��ois Revol, <revol@free.fr>. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _DUCKDUCKGO_REQUEST_H 6#define _DUCKDUCKGO_REQUEST_H 7 8#ifdef __cplusplus 9#include <UrlRequest.h> 10using namespace BPrivate::Network; 11extern "C" { 12#else 13struct BUrlRequest; 14typedef struct BUrlRequest BUrlRequest; 15#endif 16 17struct duckduckgo_request { 18 struct duckduckgo_request *next; 19 struct fs_volume *volume; 20 struct fs_node *query_node; /* root folder for that query */ 21 char *query_string; 22 BUrlRequest *cnx; 23 struct duckduckgo_result *results; 24 long nextid; 25}; 26 27/* those are quite arbitrary values */ 28#define GR_MAX_NAME 70 29#define GR_MAX_PROTO 16 30#define GR_MAX_URL 1024 31#define GR_MAX_SNIPSET 256 32struct duckduckgo_result { 33 struct duckduckgo_result *next; 34 long id; 35 char name[GR_MAX_NAME]; 36 char proto[GR_MAX_PROTO]; 37 char url[GR_MAX_URL]; 38 char snipset[GR_MAX_SNIPSET]; 39 char cache_url[GR_MAX_URL]; 40 char similar_url[GR_MAX_URL]; 41}; 42 43extern status_t duckduckgo_request_process(struct duckduckgo_request *req); 44extern status_t duckduckgo_request_process_async(struct duckduckgo_request *req); 45extern status_t duckduckgo_request_close(struct duckduckgo_request *req); 46extern status_t duckduckgo_request_open(const char *query_string, struct fs_volume *volume, struct fs_node *query_node, struct duckduckgo_request **req); 47extern status_t duckduckgo_request_free(struct duckduckgo_request *req); 48 49extern int duckduckgo_parse_results(const char *html, size_t htmlsize, long *nextid, struct duckduckgo_result **results); 50 51#ifdef __cplusplus 52} 53#endif 54 55#endif /* _DUCKDUCKGO_REQUEST_H */ 56