static String* create_json(String* content, Project* project, Message* message, List* elements, List* element_types) { Iterator* it; String* base_url_a = string_new(); base_url_a = get_base_url(base_url_a); string_appendf(content, "{project:{name: \"%s\"}, ticket:{id: %d, url: \"%s/%s/ticket/%d\",fields:[", string_rawstr(project->name), message->id, string_rawstr(base_url_a), g_project_code_4_url, message->id); string_free(base_url_a); foreach (it, element_types) { ElementType* et = it->element; String* field_a = string_new(); String* name_a = string_new(); String* value_a = string_new(); string_append(name_a, string_rawstr(et->name)); escape_quot(name_a); string_append(value_a, get_element_value(elements, et)); escape_quot(value_a); string_appendf(field_a, "{name:\"%s\", value:\"%s\"}", string_rawstr(name_a), string_rawstr(value_a)); string_free(name_a); string_free(value_a); string_append(content, string_rawstr(field_a)); string_free(field_a); if (iterator_next(it)) string_append(content, ","); }
Pvoid_t atom_tokenize(const char * atom) { Pvoid_t features = NULL; if (atom) { xmlDocPtr doc = xmlParseDoc(BAD_CAST atom); if (doc) { xmlXPathContextPtr context = xmlXPathNewContext(doc); xmlXPathRegisterNs(context, BAD_CAST "atom", BAD_CAST "http://www.w3.org/2005/Atom"); char *html = get_element_value(context, "/atom:entry/atom:content/text()"); if (html) { features = html_tokenize_into_features(html, features); xmlFree(html); } char *title = get_element_value(context, "/atom:entry/atom:title/text()"); if (title) { features = tokenize_text(title, strlen(title), features); xmlFree(title); } char *author = get_element_value(context, "/atom:entry/atom:author/atom:name/text()"); if (author) { features = add_token(author, features); xmlFree(author); } char *link = get_attribute_value(context, "/atom:entry/atom:link[@rel='alternate']", "href"); if (link) { features = tokenize_uri(link, features); xmlFree(link); } xmlXPathFreeContext(context); } xmlFreeDoc(doc); } return features; }