Fossil SCM

Enhancements to wiki MIME types supported for the JSON API.

drh 2016-10-20 12:51 trunk merge
Commit ce8937facc63cdfe8e9f969398a6c61e19acef29
1 file changed +19 -1
+19 -1
--- src/json_wiki.c
+++ src/json_wiki.c
@@ -115,12 +115,30 @@
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 = pWiki->zMimetype;
121
+ if( zMimetype==0 ) zMimetype = "text/plain";
122
+ zMimetype = wiki_filter_mimetypes(zMimetype);
120123
blob_append(&raw,zBody,-1);
121
- wiki_convert(&raw,&content,0);
124
+ if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){
125
+ wiki_convert(&raw,&content,0);
126
+ }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
127
+ markdown_to_html(&raw,0,&content);
128
+ }else if( fossil_strcmp(zMimetype, "text/plain")==0 ){
129
+ htmlize_to_blob(&content,blob_str(&raw),blob_size(&raw));
130
+ }else{
131
+ json_set_err( FSL_JSON_E_UNKNOWN,
132
+ "Unsupported MIME type '%s' for wiki page '%s'.",
133
+ zMimetype, pWiki->zWikiTitle );
134
+ blob_reset(&content);
135
+ blob_reset(&raw);
136
+ cson_free_object(pay);
137
+ manifest_destroy(pWiki);
138
+ return NULL;
139
+ }
122140
len = (unsigned int)blob_size(&content);
123141
}
124142
cson_object_set(pay,"size",json_new_int((cson_int_t)len));
125143
cson_object_set(pay,"content",
126144
cson_value_new_string(blob_buffer(&content),len));
127145
--- src/json_wiki.c
+++ src/json_wiki.c
@@ -115,12 +115,30 @@
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,30 @@
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 = pWiki->zMimetype;
121 if( zMimetype==0 ) zMimetype = "text/plain";
122 zMimetype = wiki_filter_mimetypes(zMimetype);
123 blob_append(&raw,zBody,-1);
124 if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){
125 wiki_convert(&raw,&content,0);
126 }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
127 markdown_to_html(&raw,0,&content);
128 }else if( fossil_strcmp(zMimetype, "text/plain")==0 ){
129 htmlize_to_blob(&content,blob_str(&raw),blob_size(&raw));
130 }else{
131 json_set_err( FSL_JSON_E_UNKNOWN,
132 "Unsupported MIME type '%s' for wiki page '%s'.",
133 zMimetype, pWiki->zWikiTitle );
134 blob_reset(&content);
135 blob_reset(&raw);
136 cson_free_object(pay);
137 manifest_destroy(pWiki);
138 return NULL;
139 }
140 len = (unsigned int)blob_size(&content);
141 }
142 cson_object_set(pay,"size",json_new_int((cson_int_t)len));
143 cson_object_set(pay,"content",
144 cson_value_new_string(blob_buffer(&content),len));
145

Keyboard Shortcuts

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