94 lines
5.2 KiB
JavaScript
94 lines
5.2 KiB
JavaScript
goog.provide('ajax.json');
|
|
ajax.json.write_json_native = (function ajax$json$write_json_native(data){
|
|
return JSON.stringify(cljs.core.clj__GT_js(data));
|
|
});
|
|
ajax.json.read_json_native = (function ajax$json$read_json_native(raw,keywords_QMARK_,text){
|
|
var result_raw = JSON.parse(text);
|
|
if(cljs.core.truth_(raw)){
|
|
return result_raw;
|
|
} else {
|
|
return cljs.core.js__GT_clj.cljs$core$IFn$_invoke$arity$variadic(result_raw,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"keywordize-keys","keywordize-keys",1310784252),keywords_QMARK_], 0));
|
|
}
|
|
});
|
|
ajax.json.read_json_transit = (function ajax$json$read_json_transit(raw,keywords_QMARK_,text){
|
|
if(cljs.core.truth_(raw)){
|
|
return JSON.parse(text);
|
|
} else {
|
|
var edn = cognitect.transit.read(cognitect.transit.reader.cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"json","json",1279968570)),text);
|
|
if(cljs.core.truth_(keywords_QMARK_)){
|
|
return clojure.walk.keywordize_keys(edn);
|
|
} else {
|
|
return edn;
|
|
}
|
|
}
|
|
});
|
|
ajax.json.make_json_request_format = (function ajax$json$make_json_request_format(write_json){
|
|
return (function ajax$json$make_json_request_format_$_json_request_format(){
|
|
return new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"write","write",-1857649168),write_json,new cljs.core.Keyword(null,"content-type","content-type",-508222634),"application/json"], null);
|
|
});
|
|
});
|
|
ajax.json.strip_prefix = (function ajax$json$strip_prefix(prefix,text){
|
|
if(cljs.core.truth_((function (){var and__5023__auto__ = prefix;
|
|
if(cljs.core.truth_(and__5023__auto__)){
|
|
return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2((0),text.indexOf(prefix));
|
|
} else {
|
|
return and__5023__auto__;
|
|
}
|
|
})())){
|
|
return text.substring(prefix.length);
|
|
} else {
|
|
return text;
|
|
}
|
|
});
|
|
/**
|
|
* Create a json request format given `read-json` function.
|
|
*/
|
|
ajax.json.make_json_response_format = (function ajax$json$make_json_response_format(read_json){
|
|
return (function() {
|
|
var ajax$json$make_json_response_format_$_json_response_format = null;
|
|
var ajax$json$make_json_response_format_$_json_response_format__0 = (function (){
|
|
return ajax$json$make_json_response_format_$_json_response_format.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);
|
|
});
|
|
var ajax$json$make_json_response_format_$_json_response_format__1 = (function (p__47101){
|
|
var map__47102 = p__47101;
|
|
var map__47102__$1 = cljs.core.__destructure_map(map__47102);
|
|
var prefix = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__47102__$1,new cljs.core.Keyword(null,"prefix","prefix",-265908465));
|
|
var keywords_QMARK_ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__47102__$1,new cljs.core.Keyword(null,"keywords?","keywords?",764949733));
|
|
var raw = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__47102__$1,new cljs.core.Keyword(null,"raw","raw",1604651272));
|
|
return ajax.interceptors.map__GT_ResponseFormat(new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"read","read",1140058661),(function ajax$json$make_json_response_format_$_json_response_format_$_json_read_response_format(xhrio){
|
|
var G__47104 = raw;
|
|
var G__47105 = keywords_QMARK_;
|
|
var G__47106 = ajax.json.strip_prefix(prefix,ajax.protocols._body(xhrio));
|
|
return (read_json.cljs$core$IFn$_invoke$arity$3 ? read_json.cljs$core$IFn$_invoke$arity$3(G__47104,G__47105,G__47106) : read_json.call(null,G__47104,G__47105,G__47106));
|
|
}),new cljs.core.Keyword(null,"description","description",-1428560544),["JSON",(cljs.core.truth_(prefix)?[" prefix '",cljs.core.str.cljs$core$IFn$_invoke$arity$1(prefix),"'"].join(''):null),(cljs.core.truth_(keywords_QMARK_)?" keywordize":null)].join(''),new cljs.core.Keyword(null,"content-type","content-type",-508222634),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, ["application/json"], null)], null));
|
|
});
|
|
ajax$json$make_json_response_format_$_json_response_format = function(p__47101){
|
|
switch(arguments.length){
|
|
case 0:
|
|
return ajax$json$make_json_response_format_$_json_response_format__0.call(this);
|
|
case 1:
|
|
return ajax$json$make_json_response_format_$_json_response_format__1.call(this,p__47101);
|
|
}
|
|
throw(new Error('Invalid arity: ' + arguments.length));
|
|
};
|
|
ajax$json$make_json_response_format_$_json_response_format.cljs$core$IFn$_invoke$arity$0 = ajax$json$make_json_response_format_$_json_response_format__0;
|
|
ajax$json$make_json_response_format_$_json_response_format.cljs$core$IFn$_invoke$arity$1 = ajax$json$make_json_response_format_$_json_response_format__1;
|
|
return ajax$json$make_json_response_format_$_json_response_format;
|
|
})()
|
|
});
|
|
/**
|
|
* Returns a JSON response format using the native JSON
|
|
* implementation. Options include
|
|
* :keywords? Returns the keys as keywords
|
|
* :prefix A prefix that needs to be stripped off. This is to
|
|
* combat JSON hijacking. If you're using JSON with GET request,
|
|
* you should think about using this.
|
|
* http://stackoverflow.com/questions/2669690/why-does-google-prepend-while1-to-their-json-responses
|
|
* http://haacked.com/archive/2009/06/24/json-hijacking.aspx
|
|
*/
|
|
ajax.json.json_response_format = ajax.json.make_json_response_format(ajax.json.read_json_native);
|
|
ajax.json.json_request_format = ajax.json.make_json_request_format(ajax.json.write_json_native);
|
|
ajax.json.safe_json_request_format = ajax.json.make_json_response_format(ajax.json.read_json_transit);
|
|
|
|
//# sourceMappingURL=ajax.json.js.map
|