Fossil SCM

Enhancements to wiki MIME types supported for the JSON API.

mistachkin 2016-10-18 08:22 UTC trunk
Commit 7a14176ee0e6b0939fbd62ad462d1e12511a044b
1 file changed +18 -1
+18 -1
--- src/json_wiki.c
+++ src/json_wiki.c
@@ -115,12 +115,29 @@
115115
if( contentFormat>0 ){/*HTML-ize it*/
116116
Blob content = empty_blob;
117117
Blob raw = empty_blob;
118118
zFormat = "html";
119119
if(zBody && *zBody){
120
+ const char *zMimetype;
120121
blob_append(&raw,zBody,-1);
121
- wiki_convert(&raw,&content,0);
122
+ zMimetype = wiki_filter_mimetypes(pWiki->zMimetype);
123
+ if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){
124
+ wiki_convert(&raw,&content,0);
125
+ }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
126
+ markdown_to_html(&raw,0,&content);
127
+ }else if( fossil_strcmp(zMimetype, "text/plain")==0 ){
128
+ htmlize_to_blob(&content,blob_str(&raw),blob_size(&raw));
129
+ }else{
130
+ json_set_err( FSL_JSON_E_UNKNOWN,
131
+ "Unsupported MIME type '%s' for wiki page '%s'.",
132
+ zMimetype, pWiki->zWikiTitle );
133
+ blob_reset(&content);
134
+ blob_reset(&raw);
135
+ cson_free_object(pay);
136
+ manifest_destroy(pWiki);
137
+ return NULL;
138
+ }
122139
len = (unsigned int)blob_size(&content);
123140
}
124141
cson_object_set(pay,"size",json_new_int((cson_int_t)len));
125142
cson_object_set(pay,"content",
126143
cson_value_new_string(blob_buffer(&content),len));
127144
--- src/json_wiki.c
+++ src/json_wiki.c
@@ -115,12 +115,29 @@
115 if( contentFormat>0 ){/*HTML-ize it*/
116 Blob content = empty_blob;
117 Blob raw = empty_blob;
118 zFormat = "html";
119 if(zBody && *zBody){
 
120 blob_append(&raw,zBody,-1);
121 wiki_convert(&raw,&content,0);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122 len = (unsigned int)blob_size(&content);
123 }
124 cson_object_set(pay,"size",json_new_int((cson_int_t)len));
125 cson_object_set(pay,"content",
126 cson_value_new_string(blob_buffer(&content),len));
127
--- src/json_wiki.c
+++ src/json_wiki.c
@@ -115,12 +115,29 @@
115 if( contentFormat>0 ){/*HTML-ize it*/
116 Blob content = empty_blob;
117 Blob raw = empty_blob;
118 zFormat = "html";
119 if(zBody && *zBody){
120 const char *zMimetype;
121 blob_append(&raw,zBody,-1);
122 zMimetype = wiki_filter_mimetypes(pWiki->zMimetype);
123 if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){
124 wiki_convert(&raw,&content,0);
125 }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
126 markdown_to_html(&raw,0,&content);
127 }else if( fossil_strcmp(zMimetype, "text/plain")==0 ){
128 htmlize_to_blob(&content,blob_str(&raw),blob_size(&raw));
129 }else{
130 json_set_err( FSL_JSON_E_UNKNOWN,
131 "Unsupported MIME type '%s' for wiki page '%s'.",
132 zMimetype, pWiki->zWikiTitle );
133 blob_reset(&content);
134 blob_reset(&raw);
135 cson_free_object(pay);
136 manifest_destroy(pWiki);
137 return NULL;
138 }
139 len = (unsigned int)blob_size(&content);
140 }
141 cson_object_set(pay,"size",json_new_int((cson_int_t)len));
142 cson_object_set(pay,"content",
143 cson_value_new_string(blob_buffer(&content),len));
144

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button