/**** uri: /pinyin?str=* * */ static void http_pinyin_callback(struct evhttp_request *request, void *data) { //parse uri struct evkeyvalq params_get; PARSE_URI(request, params_get); SinoparserServer* serv = (SinoparserServer*) data; //get "str" char const *str; PARAM_GET_STR(str, ¶ms_get, "str", true); serv->parser.change_text((char*)str); serv->parser.parse_against_index(serv->db.mandarin_words); std::string pinyin = serv->parser.romanize(); //prepare output struct evbuffer *buffer = evbuffer_new(); output_xml_header(buffer); romanization_output_xml(pinyin, buffer); output_xml_footer(buffer); //send evhttp_add_header(request->output_headers, "Content-Type", "TEXT/XML; charset=UTF8"); evhttp_send_reply(request, HTTP_OK, "", buffer); }
/**** uri: /all?str=* * */ static void http_all_callback(struct evhttp_request *request, void *data) { //parse uri struct evkeyvalq params_get; PARSE_URI(request, params_get); SinoparserServer* serv = (SinoparserServer*) data; //get "str" char const *str; PARAM_GET_STR(str, ¶ms_get, "str", true); serv->parser.change_text((char*)str); serv->parser.parse_against_index(serv->db.mandarin_words); std::string guess_script = ""; bool script = serv->parser.guess_script(); if (script == TRADITIONAL_SCRIPT) { guess_script = "traditional_script"; } else if (script == SIMPLIFIED_SCRIPT) { guess_script = "simplified_script"; } //prepare output struct evbuffer *buffer = evbuffer_new(); output_xml_header(buffer); guess_script_output_xml(guess_script, buffer); romanization_output_xml(serv->parser.romanize(), buffer); change_script_output_xml(serv->parser.change_script(), buffer); output_xml_footer(buffer); //send evhttp_add_header(request->output_headers, "Content-Type", "TEXT/XML; charset=UTF8"); evhttp_send_reply(request, HTTP_OK, "", buffer); evhttp_clear_headers(¶ms_get); evbuffer_free(buffer); }