AmendHub

Download

jcs

/

wikipedia

/

wikipedia.h

 

(View History)

jcs   wikipedia: Use XML API for searching too, get rid of pdjson Latest amendment: 33 on 2022-09-07

1 /*
2 * Copyright (c) 2022 joshua stein <jcs@jcs.org>
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17 #ifndef __WIKIPEDIA_H__
18 #define __WIKIPEDIA_H__
19
20 #include "browser.h"
21 #include "http.h"
22
23 #define PROGRAM_NAME "Wikipedia"
24
25 #define MBAR_ID 128
26
27 #define APPLE_MENU_ID 128
28 #define APPLE_MENU_ABOUT_ID 1
29
30 #define FILE_MENU_ID 129
31 #define FILE_MENU_QUIT_ID 1
32
33 #define EDIT_MENU_ID 130
34 #define EDIT_MENU_CUT_ID 1
35 #define EDIT_MENU_COPY_ID 2
36 #define EDIT_MENU_PASTE_ID 3
37 #define EDIT_MENU_SELECT_ALL_ID 4
38
39 #define VIEW_MENU_ID 131
40 #define VIEW_MENU_DEBUG_ID 1
41
42 extern MenuHandle file_menu, edit_menu, view_menu;
43
44 void menu_defaults(void);
45
46 enum {
47 WP_STATE_XML_INIT,
48 WP_STATE_XML_PARSE,
49 WP_STATE_WIKITEXT_INIT,
50 WP_STATE_WIKITEXT_PARSE,
51 WP_STATE_HAVE_REDIRECT,
52 WP_STATE_DONE
53 };
54
55 struct wikipedia_request {
56 short state;
57 struct browser *browser;
58 struct http_request *http_request;
59 char *normalized_title;
60 size_t article_len;
61
62 char *buf;
63 size_t buf_size;
64 size_t buf_len;
65 short refs, curlys, brackets;
66 unsigned long style, last_style;
67 bool trim_whitespace, redirect;
68 };
69
70 struct wikipedia_request * wikipedia_fetch_article(struct browser *,
71 char *);
72 size_t wikipedia_fetch_search_results(struct browser *browser, char *query,
73 char ***results);
74 struct wikipedia_request * wikipedia_read_cached_article(struct browser *browser,
75 char *name);
76 void wikipedia_request_present(struct wikipedia_request *wpr);
77 void wikipedia_request_process(struct wikipedia_request *wpr);
78 void wikipedia_request_abort(struct wikipedia_request *wpr);
79
80 #endif