blob: fcb177665c40c98175881d8c35a298ccd53e4ecd [file] [log] [blame]
// Compiled by ClojureScript 1.10.597 {:target :nodejs}
goog.provide('cljs_http.core');
goog.require('cljs.core');
goog.require('goog.net.EventType');
goog.require('goog.net.ErrorCode');
goog.require('goog.net.XhrIo');
goog.require('goog.net.Jsonp');
goog.require('cljs_http.util');
goog.require('cljs.core.async');
goog.require('clojure.string');
cljs_http.core.pending_requests = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
/**
* Attempt to close the given channel and abort the pending HTTP request
* with which it is associated.
*/
cljs_http.core.abort_BANG_ = (function cljs_http$core$abort_BANG_(channel){
var temp__5735__auto__ = cljs.core.deref.call(null,cljs_http.core.pending_requests).call(null,channel);
if(cljs.core.truth_(temp__5735__auto__)){
var req = temp__5735__auto__;
cljs.core.swap_BANG_.call(null,cljs_http.core.pending_requests,cljs.core.dissoc,channel);
cljs.core.async.close_BANG_.call(null,channel);
if(cljs.core.truth_(req.hasOwnProperty("abort"))){
return req.abort();
} else {
return new cljs.core.Keyword(null,"jsonp","jsonp",226119588).cljs$core$IFn$_invoke$arity$1(req).cancel(new cljs.core.Keyword(null,"request","request",1772954723).cljs$core$IFn$_invoke$arity$1(req));
}
} else {
return null;
}
});
cljs_http.core.aborted_QMARK_ = (function cljs_http$core$aborted_QMARK_(xhr){
return cljs.core._EQ_.call(null,xhr.getLastErrorCode(),goog.net.ErrorCode.ABORT);
});
/**
* Takes an XhrIo object and applies the default-headers to it.
*/
cljs_http.core.apply_default_headers_BANG_ = (function cljs_http$core$apply_default_headers_BANG_(xhr,headers){
var formatted_h = cljs.core.zipmap.call(null,cljs.core.map.call(null,cljs_http.util.camelize,cljs.core.keys.call(null,headers)),cljs.core.vals.call(null,headers));
return cljs.core.dorun.call(null,cljs.core.map.call(null,(function (p__4927){
var vec__4928 = p__4927;
var k = cljs.core.nth.call(null,vec__4928,(0),null);
var v = cljs.core.nth.call(null,vec__4928,(1),null);
return xhr.headers.set(k,v);
}),formatted_h));
});
/**
* Takes an XhrIo object and sets response-type if not nil.
*/
cljs_http.core.apply_response_type_BANG_ = (function cljs_http$core$apply_response_type_BANG_(xhr,response_type){
return xhr.setResponseType((function (){var G__4931 = response_type;
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"array-buffer","array-buffer",519008380),G__4931)){
return goog.net.XhrIo.ResponseType.ARRAY_BUFFER;
} else {
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"blob","blob",1636965233),G__4931)){
return goog.net.XhrIo.ResponseType.BLOB;
} else {
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"document","document",-1329188687),G__4931)){
return goog.net.XhrIo.ResponseType.DOCUMENT;
} else {
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"text","text",-1790561697),G__4931)){
return goog.net.XhrIo.ResponseType.TEXT;
} else {
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"default","default",-1987822328),G__4931)){
return goog.net.XhrIo.ResponseType.DEFAULT;
} else {
if(cljs.core._EQ_.call(null,null,G__4931)){
return goog.net.XhrIo.ResponseType.DEFAULT;
} else {
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__4931)].join('')));
}
}
}
}
}
}
})());
});
/**
* Builds an XhrIo object from the request parameters.
*/
cljs_http.core.build_xhr = (function cljs_http$core$build_xhr(p__4932){
var map__4933 = p__4932;
var map__4933__$1 = (((((!((map__4933 == null))))?(((((map__4933.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__4933.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__4933):map__4933);
var request = map__4933__$1;
var with_credentials_QMARK_ = cljs.core.get.call(null,map__4933__$1,new cljs.core.Keyword(null,"with-credentials?","with-credentials?",-1773202222));
var default_headers = cljs.core.get.call(null,map__4933__$1,new cljs.core.Keyword(null,"default-headers","default-headers",-43146094));
var response_type = cljs.core.get.call(null,map__4933__$1,new cljs.core.Keyword(null,"response-type","response-type",-1493770458));
var timeout = (function (){var or__4185__auto__ = new cljs.core.Keyword(null,"timeout","timeout",-318625318).cljs$core$IFn$_invoke$arity$1(request);
if(cljs.core.truth_(or__4185__auto__)){
return or__4185__auto__;
} else {
return (0);
}
})();
var send_credentials = (((with_credentials_QMARK_ == null))?true:with_credentials_QMARK_);
var G__4935 = (new goog.net.XhrIo());
cljs_http.core.apply_default_headers_BANG_.call(null,G__4935,default_headers);
cljs_http.core.apply_response_type_BANG_.call(null,G__4935,response_type);
G__4935.setTimeoutInterval(timeout);
G__4935.setWithCredentials(send_credentials);
return G__4935;
});
cljs_http.core.error_kw = cljs.core.PersistentHashMap.fromArrays([(0),(7),(1),(4),(6),(3),(2),(9),(5),(8)],[new cljs.core.Keyword(null,"no-error","no-error",1984610064),new cljs.core.Keyword(null,"abort","abort",521193198),new cljs.core.Keyword(null,"access-denied","access-denied",959449406),new cljs.core.Keyword(null,"custom-error","custom-error",-1565161123),new cljs.core.Keyword(null,"http-error","http-error",-1040049553),new cljs.core.Keyword(null,"ff-silent-error","ff-silent-error",189390514),new cljs.core.Keyword(null,"file-not-found","file-not-found",-65398940),new cljs.core.Keyword(null,"offline","offline",-107631935),new cljs.core.Keyword(null,"exception","exception",-335277064),new cljs.core.Keyword(null,"timeout","timeout",-318625318)]);
/**
* Execute the HTTP request corresponding to the given Ring request
* map and return a core.async channel.
*/
cljs_http.core.xhr = (function cljs_http$core$xhr(p__4936){
var map__4937 = p__4936;
var map__4937__$1 = (((((!((map__4937 == null))))?(((((map__4937.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__4937.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__4937):map__4937);
var request = map__4937__$1;
var request_method = cljs.core.get.call(null,map__4937__$1,new cljs.core.Keyword(null,"request-method","request-method",1764796830));
var headers = cljs.core.get.call(null,map__4937__$1,new cljs.core.Keyword(null,"headers","headers",-835030129));
var body = cljs.core.get.call(null,map__4937__$1,new cljs.core.Keyword(null,"body","body",-2049205669));
var with_credentials_QMARK_ = cljs.core.get.call(null,map__4937__$1,new cljs.core.Keyword(null,"with-credentials?","with-credentials?",-1773202222));
var cancel = cljs.core.get.call(null,map__4937__$1,new cljs.core.Keyword(null,"cancel","cancel",-1964088360));
var progress = cljs.core.get.call(null,map__4937__$1,new cljs.core.Keyword(null,"progress","progress",244323547));
var channel = cljs.core.async.chan.call(null);
var request_url = cljs_http.util.build_url.call(null,request);
var method = cljs.core.name.call(null,(function (){var or__4185__auto__ = request_method;
if(cljs.core.truth_(or__4185__auto__)){
return or__4185__auto__;
} else {
return new cljs.core.Keyword(null,"get","get",1683182755);
}
})());
var headers__$1 = cljs_http.util.build_headers.call(null,headers);
var xhr = cljs_http.core.build_xhr.call(null,request);
cljs.core.swap_BANG_.call(null,cljs_http.core.pending_requests,cljs.core.assoc,channel,xhr);
xhr.listen(goog.net.EventType.COMPLETE,(function (evt){
var target = evt.target;
var response = new cljs.core.PersistentArrayMap(null, 7, [new cljs.core.Keyword(null,"status","status",-1997798413),target.getStatus(),new cljs.core.Keyword(null,"success","success",1890645906),target.isSuccess(),new cljs.core.Keyword(null,"body","body",-2049205669),target.getResponse(),new cljs.core.Keyword(null,"headers","headers",-835030129),cljs_http.util.parse_headers.call(null,target.getAllResponseHeaders()),new cljs.core.Keyword(null,"trace-redirects","trace-redirects",-1149427907),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [request_url,target.getLastUri()], null),new cljs.core.Keyword(null,"error-code","error-code",180497232),cljs_http.core.error_kw.call(null,target.getLastErrorCode()),new cljs.core.Keyword(null,"error-text","error-text",2021893718),target.getLastError()], null);
if((!(cljs_http.core.aborted_QMARK_.call(null,xhr)))){
cljs.core.async.put_BANG_.call(null,channel,response);
} else {
}
cljs.core.swap_BANG_.call(null,cljs_http.core.pending_requests,cljs.core.dissoc,channel);
if(cljs.core.truth_(cancel)){
cljs.core.async.close_BANG_.call(null,cancel);
} else {
}
return cljs.core.async.close_BANG_.call(null,channel);
}));
if(cljs.core.truth_(progress)){
var listener_4961 = (function (direction,evt){
return cljs.core.async.put_BANG_.call(null,progress,cljs.core.merge.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"direction","direction",-633359395),direction,new cljs.core.Keyword(null,"loaded","loaded",-1246482293),evt.loaded], null),(cljs.core.truth_(evt.lengthComputable)?new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"total","total",1916810418),evt.total], null):null)));
});
var G__4939_4962 = xhr;
G__4939_4962.setProgressEventsEnabled(true);
G__4939_4962.listen(goog.net.EventType.UPLOAD_PROGRESS,cljs.core.partial.call(null,listener_4961,new cljs.core.Keyword(null,"upload","upload",-255769218)));
G__4939_4962.listen(goog.net.EventType.DOWNLOAD_PROGRESS,cljs.core.partial.call(null,listener_4961,new cljs.core.Keyword(null,"download","download",-300081668)));
} else {
}
xhr.send(request_url,method,body,headers__$1);
if(cljs.core.truth_(cancel)){
var c__2985__auto___4963 = cljs.core.async.chan.call(null,(1));
cljs.core.async.impl.dispatch.run.call(null,(function (){
var f__2986__auto__ = (function (){var switch__2890__auto__ = (function (state_4950){
var state_val_4951 = (state_4950[(1)]);
if((state_val_4951 === (1))){
var state_4950__$1 = state_4950;
return cljs.core.async.impl.ioc_helpers.take_BANG_.call(null,state_4950__$1,(2),cancel);
} else {
if((state_val_4951 === (2))){
var inst_4941 = (state_4950[(2)]);
var inst_4942 = xhr.isComplete();
var inst_4943 = cljs.core.not.call(null,inst_4942);
var state_4950__$1 = (function (){var statearr_4952 = state_4950;
(statearr_4952[(7)] = inst_4941);
return statearr_4952;
})();
if(inst_4943){
var statearr_4953_4964 = state_4950__$1;
(statearr_4953_4964[(1)] = (3));
} else {
var statearr_4954_4965 = state_4950__$1;
(statearr_4954_4965[(1)] = (4));
}
return new cljs.core.Keyword(null,"recur","recur",-437573268);
} else {
if((state_val_4951 === (3))){
var inst_4945 = xhr.abort();
var state_4950__$1 = state_4950;
var statearr_4955_4966 = state_4950__$1;
(statearr_4955_4966[(2)] = inst_4945);
(statearr_4955_4966[(1)] = (5));
return new cljs.core.Keyword(null,"recur","recur",-437573268);
} else {
if((state_val_4951 === (4))){
var state_4950__$1 = state_4950;
var statearr_4956_4967 = state_4950__$1;
(statearr_4956_4967[(2)] = null);
(statearr_4956_4967[(1)] = (5));
return new cljs.core.Keyword(null,"recur","recur",-437573268);
} else {
if((state_val_4951 === (5))){
var inst_4948 = (state_4950[(2)]);
var state_4950__$1 = state_4950;
return cljs.core.async.impl.ioc_helpers.return_chan.call(null,state_4950__$1,inst_4948);
} else {
return null;
}
}
}
}
}
});
return (function() {
var cljs_http$core$xhr_$_state_machine__2891__auto__ = null;
var cljs_http$core$xhr_$_state_machine__2891__auto____0 = (function (){
var statearr_4957 = [null,null,null,null,null,null,null,null];
(statearr_4957[(0)] = cljs_http$core$xhr_$_state_machine__2891__auto__);
(statearr_4957[(1)] = (1));
return statearr_4957;
});
var cljs_http$core$xhr_$_state_machine__2891__auto____1 = (function (state_4950){
while(true){
var ret_value__2892__auto__ = (function (){try{while(true){
var result__2893__auto__ = switch__2890__auto__.call(null,state_4950);
if(cljs.core.keyword_identical_QMARK_.call(null,result__2893__auto__,new cljs.core.Keyword(null,"recur","recur",-437573268))){
continue;
} else {
return result__2893__auto__;
}
break;
}
}catch (e4958){if((e4958 instanceof Object)){
var ex__2894__auto__ = e4958;
var statearr_4959_4968 = state_4950;
(statearr_4959_4968[(5)] = ex__2894__auto__);
cljs.core.async.impl.ioc_helpers.process_exception.call(null,state_4950);
return new cljs.core.Keyword(null,"recur","recur",-437573268);
} else {
throw e4958;
}
}})();
if(cljs.core.keyword_identical_QMARK_.call(null,ret_value__2892__auto__,new cljs.core.Keyword(null,"recur","recur",-437573268))){
var G__4969 = state_4950;
state_4950 = G__4969;
continue;
} else {
return ret_value__2892__auto__;
}
break;
}
});
cljs_http$core$xhr_$_state_machine__2891__auto__ = function(state_4950){
switch(arguments.length){
case 0:
return cljs_http$core$xhr_$_state_machine__2891__auto____0.call(this);
case 1:
return cljs_http$core$xhr_$_state_machine__2891__auto____1.call(this,state_4950);
}
throw(new Error('Invalid arity: ' + arguments.length));
};
cljs_http$core$xhr_$_state_machine__2891__auto__.cljs$core$IFn$_invoke$arity$0 = cljs_http$core$xhr_$_state_machine__2891__auto____0;
cljs_http$core$xhr_$_state_machine__2891__auto__.cljs$core$IFn$_invoke$arity$1 = cljs_http$core$xhr_$_state_machine__2891__auto____1;
return cljs_http$core$xhr_$_state_machine__2891__auto__;
})()
})();
var state__2987__auto__ = (function (){var statearr_4960 = f__2986__auto__.call(null);
(statearr_4960[(6)] = c__2985__auto___4963);
return statearr_4960;
})();
return cljs.core.async.impl.ioc_helpers.run_state_machine_wrapped.call(null,state__2987__auto__);
}));
} else {
}
return channel;
});
/**
* Execute the JSONP request corresponding to the given Ring request
* map and return a core.async channel.
*/
cljs_http.core.jsonp = (function cljs_http$core$jsonp(p__4970){
var map__4971 = p__4970;
var map__4971__$1 = (((((!((map__4971 == null))))?(((((map__4971.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__4971.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__4971):map__4971);
var request = map__4971__$1;
var timeout = cljs.core.get.call(null,map__4971__$1,new cljs.core.Keyword(null,"timeout","timeout",-318625318));
var callback_name = cljs.core.get.call(null,map__4971__$1,new cljs.core.Keyword(null,"callback-name","callback-name",336964714));
var cancel = cljs.core.get.call(null,map__4971__$1,new cljs.core.Keyword(null,"cancel","cancel",-1964088360));
var keywordize_keys_QMARK_ = cljs.core.get.call(null,map__4971__$1,new cljs.core.Keyword(null,"keywordize-keys?","keywordize-keys?",-254545987),true);
var channel = cljs.core.async.chan.call(null);
var jsonp = (new goog.net.Jsonp(cljs_http.util.build_url.call(null,request),callback_name));
jsonp.setRequestTimeout(timeout);
var req_4984 = jsonp.send(null,(function cljs_http$core$jsonp_$_success_callback(data){
var response = new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"status","status",-1997798413),(200),new cljs.core.Keyword(null,"success","success",1890645906),true,new cljs.core.Keyword(null,"body","body",-2049205669),cljs.core.js__GT_clj.call(null,data,new cljs.core.Keyword(null,"keywordize-keys","keywordize-keys",1310784252),keywordize_keys_QMARK_)], null);
cljs.core.async.put_BANG_.call(null,channel,response);
cljs.core.swap_BANG_.call(null,cljs_http.core.pending_requests,cljs.core.dissoc,channel);
if(cljs.core.truth_(cancel)){
cljs.core.async.close_BANG_.call(null,cancel);
} else {
}
return cljs.core.async.close_BANG_.call(null,channel);
}),(function cljs_http$core$jsonp_$_error_callback(){
cljs.core.swap_BANG_.call(null,cljs_http.core.pending_requests,cljs.core.dissoc,channel);
if(cljs.core.truth_(cancel)){
cljs.core.async.close_BANG_.call(null,cancel);
} else {
}
return cljs.core.async.close_BANG_.call(null,channel);
}));
cljs.core.swap_BANG_.call(null,cljs_http.core.pending_requests,cljs.core.assoc,channel,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"jsonp","jsonp",226119588),jsonp,new cljs.core.Keyword(null,"request","request",1772954723),req_4984], null));
if(cljs.core.truth_(cancel)){
var c__2985__auto___4985 = cljs.core.async.chan.call(null,(1));
cljs.core.async.impl.dispatch.run.call(null,(function (){
var f__2986__auto__ = (function (){var switch__2890__auto__ = (function (state_4977){
var state_val_4978 = (state_4977[(1)]);
if((state_val_4978 === (1))){
var state_4977__$1 = state_4977;
return cljs.core.async.impl.ioc_helpers.take_BANG_.call(null,state_4977__$1,(2),cancel);
} else {
if((state_val_4978 === (2))){
var inst_4974 = (state_4977[(2)]);
var inst_4975 = jsonp.cancel(req_4984);
var state_4977__$1 = (function (){var statearr_4979 = state_4977;
(statearr_4979[(7)] = inst_4974);
return statearr_4979;
})();
return cljs.core.async.impl.ioc_helpers.return_chan.call(null,state_4977__$1,inst_4975);
} else {
return null;
}
}
});
return (function() {
var cljs_http$core$jsonp_$_state_machine__2891__auto__ = null;
var cljs_http$core$jsonp_$_state_machine__2891__auto____0 = (function (){
var statearr_4980 = [null,null,null,null,null,null,null,null];
(statearr_4980[(0)] = cljs_http$core$jsonp_$_state_machine__2891__auto__);
(statearr_4980[(1)] = (1));
return statearr_4980;
});
var cljs_http$core$jsonp_$_state_machine__2891__auto____1 = (function (state_4977){
while(true){
var ret_value__2892__auto__ = (function (){try{while(true){
var result__2893__auto__ = switch__2890__auto__.call(null,state_4977);
if(cljs.core.keyword_identical_QMARK_.call(null,result__2893__auto__,new cljs.core.Keyword(null,"recur","recur",-437573268))){
continue;
} else {
return result__2893__auto__;
}
break;
}
}catch (e4981){if((e4981 instanceof Object)){
var ex__2894__auto__ = e4981;
var statearr_4982_4986 = state_4977;
(statearr_4982_4986[(5)] = ex__2894__auto__);
cljs.core.async.impl.ioc_helpers.process_exception.call(null,state_4977);
return new cljs.core.Keyword(null,"recur","recur",-437573268);
} else {
throw e4981;
}
}})();
if(cljs.core.keyword_identical_QMARK_.call(null,ret_value__2892__auto__,new cljs.core.Keyword(null,"recur","recur",-437573268))){
var G__4987 = state_4977;
state_4977 = G__4987;
continue;
} else {
return ret_value__2892__auto__;
}
break;
}
});
cljs_http$core$jsonp_$_state_machine__2891__auto__ = function(state_4977){
switch(arguments.length){
case 0:
return cljs_http$core$jsonp_$_state_machine__2891__auto____0.call(this);
case 1:
return cljs_http$core$jsonp_$_state_machine__2891__auto____1.call(this,state_4977);
}
throw(new Error('Invalid arity: ' + arguments.length));
};
cljs_http$core$jsonp_$_state_machine__2891__auto__.cljs$core$IFn$_invoke$arity$0 = cljs_http$core$jsonp_$_state_machine__2891__auto____0;
cljs_http$core$jsonp_$_state_machine__2891__auto__.cljs$core$IFn$_invoke$arity$1 = cljs_http$core$jsonp_$_state_machine__2891__auto____1;
return cljs_http$core$jsonp_$_state_machine__2891__auto__;
})()
})();
var state__2987__auto__ = (function (){var statearr_4983 = f__2986__auto__.call(null);
(statearr_4983[(6)] = c__2985__auto___4985);
return statearr_4983;
})();
return cljs.core.async.impl.ioc_helpers.run_state_machine_wrapped.call(null,state__2987__auto__);
}));
} else {
}
return channel;
});
/**
* Execute the HTTP request corresponding to the given Ring request
* map and return a core.async channel.
*/
cljs_http.core.request = (function cljs_http$core$request(p__4988){
var map__4989 = p__4988;
var map__4989__$1 = (((((!((map__4989 == null))))?(((((map__4989.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__4989.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__4989):map__4989);
var request = map__4989__$1;
var request_method = cljs.core.get.call(null,map__4989__$1,new cljs.core.Keyword(null,"request-method","request-method",1764796830));
if(cljs.core._EQ_.call(null,request_method,new cljs.core.Keyword(null,"jsonp","jsonp",226119588))){
return cljs_http.core.jsonp.call(null,request);
} else {
return cljs_http.core.xhr.call(null,request);
}
});
//# sourceMappingURL=core.js.map