Fossil SCM
Enhancements to wiki MIME types supported for the JSON API.
Commit
7a14176ee0e6b0939fbd62ad462d1e12511a044b
Parent
b2d51b1b226d2a5…
1 file changed
+18
-1
+18
-1
| --- src/json_wiki.c | ||
| +++ src/json_wiki.c | ||
| @@ -115,12 +115,29 @@ | ||
| 115 | 115 | if( contentFormat>0 ){/*HTML-ize it*/ |
| 116 | 116 | Blob content = empty_blob; |
| 117 | 117 | Blob raw = empty_blob; |
| 118 | 118 | zFormat = "html"; |
| 119 | 119 | if(zBody && *zBody){ |
| 120 | + const char *zMimetype; | |
| 120 | 121 | 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 | + } | |
| 122 | 139 | len = (unsigned int)blob_size(&content); |
| 123 | 140 | } |
| 124 | 141 | cson_object_set(pay,"size",json_new_int((cson_int_t)len)); |
| 125 | 142 | cson_object_set(pay,"content", |
| 126 | 143 | cson_value_new_string(blob_buffer(&content),len)); |
| 127 | 144 |
| --- 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 |