Moved web root into root of project; this makes deployment easier.

Also deleted 'docs', which is now redundant.
This commit is contained in:
Simon Brooke 2020-02-27 14:18:29 +00:00
parent a5204c66b9
commit 743d8a1740
No known key found for this signature in database
GPG key ID: A7A4F18D1D4DF987
1592 changed files with 53626 additions and 139250 deletions

View file

@ -0,0 +1,369 @@
(ns cljs-http.client
(:refer-clojure :exclude [get])
(:require [cljs-http.core :as core]
[cljs-http.util :as util]
[cljs.core.async :as async :refer [<! chan close! put!]]
[cljs.reader :refer [read-string]]
[clojure.string :refer [blank? join split]]
[goog.Uri :as uri]
[no.en.core :refer [url-encode url-decode]])
(:require-macros [cljs.core.async.macros :refer [go]]))
(defn if-pos [v]
(if (and v (pos? v)) v))
(defn- acc-param [o v]
(cond
(coll? o) (conj o v)
(some? o) [o v]
:else v))
(defn parse-query-params
"Parse `s` as query params and return a hash map."
[s]
(if-not (blank? s)
(reduce
#(let [[k v] (split %2 #"=")]
(update %1
(keyword (url-decode k))
acc-param
(url-decode v)))
{} (split (str s) #"&"))))
(defn parse-url
"Parse `url` into a hash map."
[url]
(if-not (blank? url)
(let [uri (uri/parse url)
query-data (.getQueryData uri)]
{:scheme (keyword (.getScheme uri))
:server-name (.getDomain uri)
:server-port (if-pos (.getPort uri))
:uri (.getPath uri)
:query-string (if-not (.isEmpty query-data)
(str query-data))
:query-params (if-not (.isEmpty query-data)
(parse-query-params (str query-data)))})))
(def unexceptional-status?
#{200 201 202 203 204 205 206 207 300 301 302 303 307})
(defn- encode-val [k v]
(str (url-encode (name k)) "=" (url-encode (str v))))
(defn- encode-vals [k vs]
(->>
vs
(map #(encode-val k %))
(join "&")))
(defn- encode-param [[k v]]
(if (coll? v)
(encode-vals k v)
(encode-val k v)))
(defn generate-query-string [params]
(->>
params
(map encode-param)
(join "&")))
(def regex-char-esc-smap
(let [esc-chars "()*&^%$#!+"]
(zipmap esc-chars
(map #(str "\\" %) esc-chars))))
(defn escape-special
"Escape special characters -- for content-type."
[string]
(->> string
(replace regex-char-esc-smap)
(reduce str)))
(defn decode-body
"Decocde the :body of `response` with `decode-fn` if the content type matches."
[response decode-fn content-type request-method]
(if (and (not= :head request-method)
(not= 204 (:status response))
(re-find (re-pattern (str "(?i)" (escape-special content-type)))
(str (clojure.core/get (:headers response) "content-type" ""))))
(update-in response [:body] decode-fn)
response))
(defn wrap-edn-params
"Encode :edn-params in the `request` :body and set the appropriate
Content Type header."
[client]
(fn [request]
(if-let [params (:edn-params request)]
(let [headers (merge {"content-type" "application/edn"} (:headers request))]
(-> (dissoc request :edn-params)
(assoc :body (pr-str params))
(assoc :headers headers)
(client)))
(client request))))
(defn wrap-edn-response
"Decode application/edn responses."
[client]
(fn [request]
(-> #(decode-body % read-string "application/edn" (:request-method request))
(async/map [(client request)]))))
(defn wrap-default-headers
[client & [default-headers]]
(fn [request]
(if-let [default-headers (or (:default-headers request) default-headers)]
(client (assoc request :default-headers default-headers))
(client request))))
(defn wrap-accept
[client & [accept]]
(fn [request]
(if-let [accept (or (:accept request) accept)]
(client (assoc-in request [:headers "accept"] accept))
(client request))))
(defn wrap-content-type
[client & [content-type]]
(fn [request]
(if-let [content-type (or (:content-type request) content-type)]
(client (assoc-in request [:headers "content-type"] content-type))
(client request))))
(def ^{:private true} default-transit-opts
{:encoding :json :encoding-opts {}
:decoding :json :decoding-opts {}})
(defn wrap-transit-params
"Encode :transit-params in the `request` :body and set the appropriate
Content Type header.
A :transit-opts map can be optionally provided with the following keys:
:encoding #{:json, :json-verbose}
:decoding #{:json, :json-verbose}
:encoding/decoding-opts appropriate map of options to be passed to
transit writer/reader, respectively."
[client]
(fn [request]
(if-let [params (:transit-params request)]
(let [{:keys [encoding encoding-opts]} (merge default-transit-opts
(:transit-opts request))
headers (merge {"content-type" "application/transit+json"} (:headers request))]
(-> (dissoc request :transit-params)
(assoc :body (util/transit-encode params encoding encoding-opts))
(assoc :headers headers)
(client)))
(client request))))
(defn wrap-transit-response
"Decode application/transit+json responses."
[client]
(fn [request]
(let [{:keys [decoding decoding-opts]} (merge default-transit-opts
(:transit-opts request))
transit-decode #(util/transit-decode % decoding decoding-opts)]
(-> #(decode-body % transit-decode "application/transit+json" (:request-method request))
(async/map [(client request)])))))
(defn wrap-json-params
"Encode :json-params in the `request` :body and set the appropriate
Content Type header."
[client]
(fn [request]
(if-let [params (:json-params request)]
(let [headers (merge {"content-type" "application/json"} (:headers request))]
(-> (dissoc request :json-params)
(assoc :body (util/json-encode params))
(assoc :headers headers)
(client)))
(client request))))
(defn wrap-json-response
"Decode application/json responses."
[client]
(fn [request]
(-> #(decode-body % util/json-decode "application/json" (:request-method request))
(async/map [(client request)]))))
(defn wrap-query-params [client]
(fn [{:keys [query-params] :as req}]
(if query-params
(client (-> req (dissoc :query-params)
(assoc :query-string
(generate-query-string query-params))))
(client req))))
(defn wrap-form-params [client]
(fn [{:keys [form-params request-method headers] :as request}]
(if (and form-params (#{:post :put :patch :delete} request-method))
(let [headers (merge {"content-type" "application/x-www-form-urlencoded"} headers)]
(client (-> request
(dissoc :form-params)
(assoc :body (generate-query-string form-params))
(assoc :headers headers))))
(client request))))
(defn generate-form-data [params]
(let [form-data (js/FormData.)]
(doseq [[k v] params]
(if (coll? v)
(.append form-data (name k) (first v) (second v))
(.append form-data (name k) v)))
form-data))
(defn wrap-multipart-params [client]
(fn [{:keys [multipart-params request-method] :as request}]
(if (and multipart-params (#{:post :put :patch :delete} request-method))
(client (-> request
(dissoc :multipart-params)
(assoc :body (generate-form-data multipart-params))))
(client request))))
(defn wrap-method [client]
(fn [req]
(if-let [m (:method req)]
(client (-> req (dissoc :method)
(assoc :request-method m)))
(client req))))
(defn wrap-server-name [client server-name]
#(client (assoc %1 :server-name server-name)))
(defn wrap-url [client]
(fn [{:keys [query-params] :as req}]
(if-let [spec (parse-url (:url req))]
(client (-> (merge req spec)
(dissoc :url)
(update-in [:query-params] #(merge %1 query-params))))
(client req))))
(defn wrap-basic-auth
"Middleware converting the :basic-auth option or `credentials` into
an Authorization header."
[client & [credentials]]
(fn [req]
(let [credentials (or (:basic-auth req) credentials)]
(if-not (empty? credentials)
(client (-> (dissoc req :basic-auth)
(assoc-in [:headers "authorization"] (util/basic-auth credentials))))
(client req)))))
(defn wrap-oauth
"Middleware converting the :oauth-token option into an Authorization header."
[client]
(fn [req]
(if-let [oauth-token (:oauth-token req)]
(client (-> req (dissoc :oauth-token)
(assoc-in [:headers "authorization"]
(str "Bearer " oauth-token))))
(client req))))
(defn wrap-channel-from-request-map
"Pipe the response-channel into the request-map's
custom channel (e.g. to enable transducers)"
[client]
(fn [request]
(if-let [custom-channel (:channel request)]
(async/pipe (client request) custom-channel)
(client request))))
(defn wrap-request
"Returns a batteries-included HTTP request function coresponding to the given
core client. See client/request"
[request]
(-> request
wrap-accept
wrap-form-params
wrap-multipart-params
wrap-edn-params
wrap-edn-response
wrap-transit-params
wrap-transit-response
wrap-json-params
wrap-json-response
wrap-content-type
wrap-query-params
wrap-basic-auth
wrap-oauth
wrap-method
wrap-url
wrap-channel-from-request-map
wrap-default-headers))
(def #^{:doc
"Executes the HTTP request corresponding to the given map and returns the
response map for corresponding to the resulting HTTP response.
In addition to the standard Ring request keys, the following keys are also
recognized:
* :url
* :method
* :query-params"}
request (wrap-request core/request))
(defn delete
"Like #'request, but sets the :method and :url as appropriate."
[url & [req]]
(request (merge req {:method :delete :url url})))
(defn get
"Like #'request, but sets the :method and :url as appropriate."
[url & [req]]
(request (merge req {:method :get :url url})))
(defn head
"Like #'request, but sets the :method and :url as appropriate."
[url & [req]]
(request (merge req {:method :head :url url})))
(defn jsonp
"Like #'request, but sets the :method and :url as appropriate."
[url & [req]]
(request (merge req {:method :jsonp :url url})))
(defn move
"Like #'request, but sets the :method and :url as appropriate."
[url & [req]]
(request (merge req {:method :move :url url})))
(defn options
"Like #'request, but sets the :method and :url as appropriate."
[url & [req]]
(request (merge req {:method :options :url url})))
(defn patch
"Like #'request, but sets the :method and :url as appropriate."
[url & [req]]
(request (merge req {:method :patch :url url})))
(defn post
"Like #'request, but sets the :method and :url as appropriate."
[url & [req]]
(request (merge req {:method :post :url url})))
(defn put
"Like #'request, but sets the :method and :url as appropriate."
[url & [req]]
(request (merge req {:method :put :url url})))
(comment
(ns example.core
(:require [cljs-http.client :as http]
[cljs.core.async :refer [<!]])
(:require-macros [cljs.core.async.macros :refer [go]]))
(go (prn (map :login (:body (<! (get "https://api.github.com/users"))))))
(go (prn (:status (<! (get "http://api.burningswell.dev/continents")))))
(go (prn (map :name (:body (<! (get "http://api.burningswell.dev/continents"))))))
(go (let [response (<! (get "https://api.github.com/users"))]
(prn (:status response))
(prn (map :login (:body response)))))
(go (prn (<! (get "http://api.burningswell.dev/continents")))))

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,991 @@
// Compiled by ClojureScript 1.10.520 {}
goog.provide('cljs_http.client');
goog.require('cljs.core');
goog.require('cljs_http.core');
goog.require('cljs_http.util');
goog.require('cljs.core.async');
goog.require('cljs.reader');
goog.require('clojure.string');
goog.require('goog.Uri');
goog.require('no.en.core');
cljs_http.client.if_pos = (function cljs_http$client$if_pos(v){
if(cljs.core.truth_((function (){var and__4120__auto__ = v;
if(cljs.core.truth_(and__4120__auto__)){
return (v > (0));
} else {
return and__4120__auto__;
}
})())){
return v;
} else {
return null;
}
});
cljs_http.client.acc_param = (function cljs_http$client$acc_param(o,v){
if(cljs.core.coll_QMARK_.call(null,o)){
return cljs.core.conj.call(null,o,v);
} else {
if((!((o == null)))){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [o,v], null);
} else {
return v;
}
}
});
/**
* Parse `s` as query params and return a hash map.
*/
cljs_http.client.parse_query_params = (function cljs_http$client$parse_query_params(s){
if((!(clojure.string.blank_QMARK_.call(null,s)))){
return cljs.core.reduce.call(null,(function (p1__24997_SHARP_,p2__24996_SHARP_){
var vec__24998 = clojure.string.split.call(null,p2__24996_SHARP_,/=/);
var k = cljs.core.nth.call(null,vec__24998,(0),null);
var v = cljs.core.nth.call(null,vec__24998,(1),null);
return cljs.core.update.call(null,p1__24997_SHARP_,cljs.core.keyword.call(null,no.en.core.url_decode.call(null,k)),cljs_http.client.acc_param,no.en.core.url_decode.call(null,v));
}),cljs.core.PersistentArrayMap.EMPTY,clojure.string.split.call(null,cljs.core.str.cljs$core$IFn$_invoke$arity$1(s),/&/));
} else {
return null;
}
});
/**
* Parse `url` into a hash map.
*/
cljs_http.client.parse_url = (function cljs_http$client$parse_url(url){
if((!(clojure.string.blank_QMARK_.call(null,url)))){
var uri = goog.Uri.parse(url);
var query_data = uri.getQueryData();
return new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"scheme","scheme",90199613),cljs.core.keyword.call(null,uri.getScheme()),new cljs.core.Keyword(null,"server-name","server-name",-1012104295),uri.getDomain(),new cljs.core.Keyword(null,"server-port","server-port",663745648),cljs_http.client.if_pos.call(null,uri.getPort()),new cljs.core.Keyword(null,"uri","uri",-774711847),uri.getPath(),new cljs.core.Keyword(null,"query-string","query-string",-1018845061),((cljs.core.not.call(null,query_data.isEmpty()))?cljs.core.str.cljs$core$IFn$_invoke$arity$1(query_data):null),new cljs.core.Keyword(null,"query-params","query-params",900640534),((cljs.core.not.call(null,query_data.isEmpty()))?cljs_http.client.parse_query_params.call(null,cljs.core.str.cljs$core$IFn$_invoke$arity$1(query_data)):null)], null);
} else {
return null;
}
});
cljs_http.client.unexceptional_status_QMARK_ = new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 13, [(205),null,(206),null,(300),null,(204),null,(307),null,(303),null,(301),null,(201),null,(302),null,(202),null,(200),null,(203),null,(207),null], null), null);
cljs_http.client.encode_val = (function cljs_http$client$encode_val(k,v){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(no.en.core.url_encode.call(null,cljs.core.name.call(null,k))),"=",cljs.core.str.cljs$core$IFn$_invoke$arity$1(no.en.core.url_encode.call(null,cljs.core.str.cljs$core$IFn$_invoke$arity$1(v)))].join('');
});
cljs_http.client.encode_vals = (function cljs_http$client$encode_vals(k,vs){
return clojure.string.join.call(null,"&",cljs.core.map.call(null,(function (p1__25001_SHARP_){
return cljs_http.client.encode_val.call(null,k,p1__25001_SHARP_);
}),vs));
});
cljs_http.client.encode_param = (function cljs_http$client$encode_param(p__25002){
var vec__25003 = p__25002;
var k = cljs.core.nth.call(null,vec__25003,(0),null);
var v = cljs.core.nth.call(null,vec__25003,(1),null);
if(cljs.core.coll_QMARK_.call(null,v)){
return cljs_http.client.encode_vals.call(null,k,v);
} else {
return cljs_http.client.encode_val.call(null,k,v);
}
});
cljs_http.client.generate_query_string = (function cljs_http$client$generate_query_string(params){
return clojure.string.join.call(null,"&",cljs.core.map.call(null,cljs_http.client.encode_param,params));
});
cljs_http.client.regex_char_esc_smap = (function (){var esc_chars = "()*&^%$#!+";
return cljs.core.zipmap.call(null,esc_chars,cljs.core.map.call(null,((function (esc_chars){
return (function (p1__25006_SHARP_){
return ["\\",cljs.core.str.cljs$core$IFn$_invoke$arity$1(p1__25006_SHARP_)].join('');
});})(esc_chars))
,esc_chars));
})();
/**
* Escape special characters -- for content-type.
*/
cljs_http.client.escape_special = (function cljs_http$client$escape_special(string){
return cljs.core.reduce.call(null,cljs.core.str,cljs.core.replace.call(null,cljs_http.client.regex_char_esc_smap,string));
});
/**
* Decocde the :body of `response` with `decode-fn` if the content type matches.
*/
cljs_http.client.decode_body = (function cljs_http$client$decode_body(response,decode_fn,content_type,request_method){
if(cljs.core.truth_((function (){var and__4120__auto__ = cljs.core.not_EQ_.call(null,new cljs.core.Keyword(null,"head","head",-771383919),request_method);
if(and__4120__auto__){
var and__4120__auto____$1 = cljs.core.not_EQ_.call(null,(204),new cljs.core.Keyword(null,"status","status",-1997798413).cljs$core$IFn$_invoke$arity$1(response));
if(and__4120__auto____$1){
return cljs.core.re_find.call(null,cljs.core.re_pattern.call(null,["(?i)",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs_http.client.escape_special.call(null,content_type))].join('')),cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.get.call(null,new cljs.core.Keyword(null,"headers","headers",-835030129).cljs$core$IFn$_invoke$arity$1(response),"content-type","")));
} else {
return and__4120__auto____$1;
}
} else {
return and__4120__auto__;
}
})())){
return cljs.core.update_in.call(null,response,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"body","body",-2049205669)], null),decode_fn);
} else {
return response;
}
});
/**
* Encode :edn-params in the `request` :body and set the appropriate
* Content Type header.
*/
cljs_http.client.wrap_edn_params = (function cljs_http$client$wrap_edn_params(client){
return (function (request){
var temp__5718__auto__ = new cljs.core.Keyword(null,"edn-params","edn-params",894273052).cljs$core$IFn$_invoke$arity$1(request);
if(cljs.core.truth_(temp__5718__auto__)){
var params = temp__5718__auto__;
var headers = cljs.core.merge.call(null,new cljs.core.PersistentArrayMap(null, 1, ["content-type","application/edn"], null),new cljs.core.Keyword(null,"headers","headers",-835030129).cljs$core$IFn$_invoke$arity$1(request));
return client.call(null,cljs.core.assoc.call(null,cljs.core.assoc.call(null,cljs.core.dissoc.call(null,request,new cljs.core.Keyword(null,"edn-params","edn-params",894273052)),new cljs.core.Keyword(null,"body","body",-2049205669),cljs.core.pr_str.call(null,params)),new cljs.core.Keyword(null,"headers","headers",-835030129),headers));
} else {
return client.call(null,request);
}
});
});
/**
* Decode application/edn responses.
*/
cljs_http.client.wrap_edn_response = (function cljs_http$client$wrap_edn_response(client){
return (function (request){
return cljs.core.async.map.call(null,(function (p1__25007_SHARP_){
return cljs_http.client.decode_body.call(null,p1__25007_SHARP_,cljs.reader.read_string,"application/edn",new cljs.core.Keyword(null,"request-method","request-method",1764796830).cljs$core$IFn$_invoke$arity$1(request));
}),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [client.call(null,request)], null));
});
});
cljs_http.client.wrap_default_headers = (function cljs_http$client$wrap_default_headers(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25014 = arguments.length;
var i__4731__auto___25015 = (0);
while(true){
if((i__4731__auto___25015 < len__4730__auto___25014)){
args__4736__auto__.push((arguments[i__4731__auto___25015]));
var G__25016 = (i__4731__auto___25015 + (1));
i__4731__auto___25015 = G__25016;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.wrap_default_headers.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.wrap_default_headers.cljs$core$IFn$_invoke$arity$variadic = (function (client,p__25010){
var vec__25011 = p__25010;
var default_headers = cljs.core.nth.call(null,vec__25011,(0),null);
return ((function (vec__25011,default_headers){
return (function (request){
var temp__5718__auto__ = (function (){var or__4131__auto__ = new cljs.core.Keyword(null,"default-headers","default-headers",-43146094).cljs$core$IFn$_invoke$arity$1(request);
if(cljs.core.truth_(or__4131__auto__)){
return or__4131__auto__;
} else {
return default_headers;
}
})();
if(cljs.core.truth_(temp__5718__auto__)){
var default_headers__$1 = temp__5718__auto__;
return client.call(null,cljs.core.assoc.call(null,request,new cljs.core.Keyword(null,"default-headers","default-headers",-43146094),default_headers__$1));
} else {
return client.call(null,request);
}
});
;})(vec__25011,default_headers))
});
cljs_http.client.wrap_default_headers.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.wrap_default_headers.cljs$lang$applyTo = (function (seq25008){
var G__25009 = cljs.core.first.call(null,seq25008);
var seq25008__$1 = cljs.core.next.call(null,seq25008);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25009,seq25008__$1);
});
cljs_http.client.wrap_accept = (function cljs_http$client$wrap_accept(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25023 = arguments.length;
var i__4731__auto___25024 = (0);
while(true){
if((i__4731__auto___25024 < len__4730__auto___25023)){
args__4736__auto__.push((arguments[i__4731__auto___25024]));
var G__25025 = (i__4731__auto___25024 + (1));
i__4731__auto___25024 = G__25025;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.wrap_accept.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.wrap_accept.cljs$core$IFn$_invoke$arity$variadic = (function (client,p__25019){
var vec__25020 = p__25019;
var accept = cljs.core.nth.call(null,vec__25020,(0),null);
return ((function (vec__25020,accept){
return (function (request){
var temp__5718__auto__ = (function (){var or__4131__auto__ = new cljs.core.Keyword(null,"accept","accept",1874130431).cljs$core$IFn$_invoke$arity$1(request);
if(cljs.core.truth_(or__4131__auto__)){
return or__4131__auto__;
} else {
return accept;
}
})();
if(cljs.core.truth_(temp__5718__auto__)){
var accept__$1 = temp__5718__auto__;
return client.call(null,cljs.core.assoc_in.call(null,request,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"headers","headers",-835030129),"accept"], null),accept__$1));
} else {
return client.call(null,request);
}
});
;})(vec__25020,accept))
});
cljs_http.client.wrap_accept.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.wrap_accept.cljs$lang$applyTo = (function (seq25017){
var G__25018 = cljs.core.first.call(null,seq25017);
var seq25017__$1 = cljs.core.next.call(null,seq25017);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25018,seq25017__$1);
});
cljs_http.client.wrap_content_type = (function cljs_http$client$wrap_content_type(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25032 = arguments.length;
var i__4731__auto___25033 = (0);
while(true){
if((i__4731__auto___25033 < len__4730__auto___25032)){
args__4736__auto__.push((arguments[i__4731__auto___25033]));
var G__25034 = (i__4731__auto___25033 + (1));
i__4731__auto___25033 = G__25034;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.wrap_content_type.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.wrap_content_type.cljs$core$IFn$_invoke$arity$variadic = (function (client,p__25028){
var vec__25029 = p__25028;
var content_type = cljs.core.nth.call(null,vec__25029,(0),null);
return ((function (vec__25029,content_type){
return (function (request){
var temp__5718__auto__ = (function (){var or__4131__auto__ = new cljs.core.Keyword(null,"content-type","content-type",-508222634).cljs$core$IFn$_invoke$arity$1(request);
if(cljs.core.truth_(or__4131__auto__)){
return or__4131__auto__;
} else {
return content_type;
}
})();
if(cljs.core.truth_(temp__5718__auto__)){
var content_type__$1 = temp__5718__auto__;
return client.call(null,cljs.core.assoc_in.call(null,request,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"headers","headers",-835030129),"content-type"], null),content_type__$1));
} else {
return client.call(null,request);
}
});
;})(vec__25029,content_type))
});
cljs_http.client.wrap_content_type.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.wrap_content_type.cljs$lang$applyTo = (function (seq25026){
var G__25027 = cljs.core.first.call(null,seq25026);
var seq25026__$1 = cljs.core.next.call(null,seq25026);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25027,seq25026__$1);
});
cljs_http.client.default_transit_opts = new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"encoding","encoding",1728578272),new cljs.core.Keyword(null,"json","json",1279968570),new cljs.core.Keyword(null,"encoding-opts","encoding-opts",-1805664631),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,"decoding","decoding",-568180903),new cljs.core.Keyword(null,"json","json",1279968570),new cljs.core.Keyword(null,"decoding-opts","decoding-opts",1050289140),cljs.core.PersistentArrayMap.EMPTY], null);
/**
* Encode :transit-params in the `request` :body and set the appropriate
* Content Type header.
*
* A :transit-opts map can be optionally provided with the following keys:
*
* :encoding #{:json, :json-verbose}
* :decoding #{:json, :json-verbose}
* :encoding/decoding-opts appropriate map of options to be passed to
* transit writer/reader, respectively.
*/
cljs_http.client.wrap_transit_params = (function cljs_http$client$wrap_transit_params(client){
return (function (request){
var temp__5718__auto__ = new cljs.core.Keyword(null,"transit-params","transit-params",357261095).cljs$core$IFn$_invoke$arity$1(request);
if(cljs.core.truth_(temp__5718__auto__)){
var params = temp__5718__auto__;
var map__25035 = cljs.core.merge.call(null,cljs_http.client.default_transit_opts,new cljs.core.Keyword(null,"transit-opts","transit-opts",1104386010).cljs$core$IFn$_invoke$arity$1(request));
var map__25035__$1 = (((((!((map__25035 == null))))?(((((map__25035.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__25035.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__25035):map__25035);
var encoding = cljs.core.get.call(null,map__25035__$1,new cljs.core.Keyword(null,"encoding","encoding",1728578272));
var encoding_opts = cljs.core.get.call(null,map__25035__$1,new cljs.core.Keyword(null,"encoding-opts","encoding-opts",-1805664631));
var headers = cljs.core.merge.call(null,new cljs.core.PersistentArrayMap(null, 1, ["content-type","application/transit+json"], null),new cljs.core.Keyword(null,"headers","headers",-835030129).cljs$core$IFn$_invoke$arity$1(request));
return client.call(null,cljs.core.assoc.call(null,cljs.core.assoc.call(null,cljs.core.dissoc.call(null,request,new cljs.core.Keyword(null,"transit-params","transit-params",357261095)),new cljs.core.Keyword(null,"body","body",-2049205669),cljs_http.util.transit_encode.call(null,params,encoding,encoding_opts)),new cljs.core.Keyword(null,"headers","headers",-835030129),headers));
} else {
return client.call(null,request);
}
});
});
/**
* Decode application/transit+json responses.
*/
cljs_http.client.wrap_transit_response = (function cljs_http$client$wrap_transit_response(client){
return (function (request){
var map__25039 = cljs.core.merge.call(null,cljs_http.client.default_transit_opts,new cljs.core.Keyword(null,"transit-opts","transit-opts",1104386010).cljs$core$IFn$_invoke$arity$1(request));
var map__25039__$1 = (((((!((map__25039 == null))))?(((((map__25039.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__25039.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__25039):map__25039);
var decoding = cljs.core.get.call(null,map__25039__$1,new cljs.core.Keyword(null,"decoding","decoding",-568180903));
var decoding_opts = cljs.core.get.call(null,map__25039__$1,new cljs.core.Keyword(null,"decoding-opts","decoding-opts",1050289140));
var transit_decode = ((function (map__25039,map__25039__$1,decoding,decoding_opts){
return (function (p1__25037_SHARP_){
return cljs_http.util.transit_decode.call(null,p1__25037_SHARP_,decoding,decoding_opts);
});})(map__25039,map__25039__$1,decoding,decoding_opts))
;
return cljs.core.async.map.call(null,((function (map__25039,map__25039__$1,decoding,decoding_opts,transit_decode){
return (function (p1__25038_SHARP_){
return cljs_http.client.decode_body.call(null,p1__25038_SHARP_,transit_decode,"application/transit+json",new cljs.core.Keyword(null,"request-method","request-method",1764796830).cljs$core$IFn$_invoke$arity$1(request));
});})(map__25039,map__25039__$1,decoding,decoding_opts,transit_decode))
,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [client.call(null,request)], null));
});
});
/**
* Encode :json-params in the `request` :body and set the appropriate
* Content Type header.
*/
cljs_http.client.wrap_json_params = (function cljs_http$client$wrap_json_params(client){
return (function (request){
var temp__5718__auto__ = new cljs.core.Keyword(null,"json-params","json-params",-1112693596).cljs$core$IFn$_invoke$arity$1(request);
if(cljs.core.truth_(temp__5718__auto__)){
var params = temp__5718__auto__;
var headers = cljs.core.merge.call(null,new cljs.core.PersistentArrayMap(null, 1, ["content-type","application/json"], null),new cljs.core.Keyword(null,"headers","headers",-835030129).cljs$core$IFn$_invoke$arity$1(request));
return client.call(null,cljs.core.assoc.call(null,cljs.core.assoc.call(null,cljs.core.dissoc.call(null,request,new cljs.core.Keyword(null,"json-params","json-params",-1112693596)),new cljs.core.Keyword(null,"body","body",-2049205669),cljs_http.util.json_encode.call(null,params)),new cljs.core.Keyword(null,"headers","headers",-835030129),headers));
} else {
return client.call(null,request);
}
});
});
/**
* Decode application/json responses.
*/
cljs_http.client.wrap_json_response = (function cljs_http$client$wrap_json_response(client){
return (function (request){
return cljs.core.async.map.call(null,(function (p1__25041_SHARP_){
return cljs_http.client.decode_body.call(null,p1__25041_SHARP_,cljs_http.util.json_decode,"application/json",new cljs.core.Keyword(null,"request-method","request-method",1764796830).cljs$core$IFn$_invoke$arity$1(request));
}),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [client.call(null,request)], null));
});
});
cljs_http.client.wrap_query_params = (function cljs_http$client$wrap_query_params(client){
return (function (p__25042){
var map__25043 = p__25042;
var map__25043__$1 = (((((!((map__25043 == null))))?(((((map__25043.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__25043.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__25043):map__25043);
var req = map__25043__$1;
var query_params = cljs.core.get.call(null,map__25043__$1,new cljs.core.Keyword(null,"query-params","query-params",900640534));
if(cljs.core.truth_(query_params)){
return client.call(null,cljs.core.assoc.call(null,cljs.core.dissoc.call(null,req,new cljs.core.Keyword(null,"query-params","query-params",900640534)),new cljs.core.Keyword(null,"query-string","query-string",-1018845061),cljs_http.client.generate_query_string.call(null,query_params)));
} else {
return client.call(null,req);
}
});
});
cljs_http.client.wrap_form_params = (function cljs_http$client$wrap_form_params(client){
return (function (p__25045){
var map__25046 = p__25045;
var map__25046__$1 = (((((!((map__25046 == null))))?(((((map__25046.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__25046.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__25046):map__25046);
var request = map__25046__$1;
var form_params = cljs.core.get.call(null,map__25046__$1,new cljs.core.Keyword(null,"form-params","form-params",1884296467));
var request_method = cljs.core.get.call(null,map__25046__$1,new cljs.core.Keyword(null,"request-method","request-method",1764796830));
var headers = cljs.core.get.call(null,map__25046__$1,new cljs.core.Keyword(null,"headers","headers",-835030129));
if(cljs.core.truth_((function (){var and__4120__auto__ = form_params;
if(cljs.core.truth_(and__4120__auto__)){
return new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"patch","patch",380775109),null,new cljs.core.Keyword(null,"delete","delete",-1768633620),null,new cljs.core.Keyword(null,"post","post",269697687),null,new cljs.core.Keyword(null,"put","put",1299772570),null], null), null).call(null,request_method);
} else {
return and__4120__auto__;
}
})())){
var headers__$1 = cljs.core.merge.call(null,new cljs.core.PersistentArrayMap(null, 1, ["content-type","application/x-www-form-urlencoded"], null),headers);
return client.call(null,cljs.core.assoc.call(null,cljs.core.assoc.call(null,cljs.core.dissoc.call(null,request,new cljs.core.Keyword(null,"form-params","form-params",1884296467)),new cljs.core.Keyword(null,"body","body",-2049205669),cljs_http.client.generate_query_string.call(null,form_params)),new cljs.core.Keyword(null,"headers","headers",-835030129),headers__$1));
} else {
return client.call(null,request);
}
});
});
cljs_http.client.generate_form_data = (function cljs_http$client$generate_form_data(params){
var form_data = (new FormData());
var seq__25048_25064 = cljs.core.seq.call(null,params);
var chunk__25049_25065 = null;
var count__25050_25066 = (0);
var i__25051_25067 = (0);
while(true){
if((i__25051_25067 < count__25050_25066)){
var vec__25058_25068 = cljs.core._nth.call(null,chunk__25049_25065,i__25051_25067);
var k_25069 = cljs.core.nth.call(null,vec__25058_25068,(0),null);
var v_25070 = cljs.core.nth.call(null,vec__25058_25068,(1),null);
if(cljs.core.coll_QMARK_.call(null,v_25070)){
form_data.append(cljs.core.name.call(null,k_25069),cljs.core.first.call(null,v_25070),cljs.core.second.call(null,v_25070));
} else {
form_data.append(cljs.core.name.call(null,k_25069),v_25070);
}
var G__25071 = seq__25048_25064;
var G__25072 = chunk__25049_25065;
var G__25073 = count__25050_25066;
var G__25074 = (i__25051_25067 + (1));
seq__25048_25064 = G__25071;
chunk__25049_25065 = G__25072;
count__25050_25066 = G__25073;
i__25051_25067 = G__25074;
continue;
} else {
var temp__5720__auto___25075 = cljs.core.seq.call(null,seq__25048_25064);
if(temp__5720__auto___25075){
var seq__25048_25076__$1 = temp__5720__auto___25075;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__25048_25076__$1)){
var c__4550__auto___25077 = cljs.core.chunk_first.call(null,seq__25048_25076__$1);
var G__25078 = cljs.core.chunk_rest.call(null,seq__25048_25076__$1);
var G__25079 = c__4550__auto___25077;
var G__25080 = cljs.core.count.call(null,c__4550__auto___25077);
var G__25081 = (0);
seq__25048_25064 = G__25078;
chunk__25049_25065 = G__25079;
count__25050_25066 = G__25080;
i__25051_25067 = G__25081;
continue;
} else {
var vec__25061_25082 = cljs.core.first.call(null,seq__25048_25076__$1);
var k_25083 = cljs.core.nth.call(null,vec__25061_25082,(0),null);
var v_25084 = cljs.core.nth.call(null,vec__25061_25082,(1),null);
if(cljs.core.coll_QMARK_.call(null,v_25084)){
form_data.append(cljs.core.name.call(null,k_25083),cljs.core.first.call(null,v_25084),cljs.core.second.call(null,v_25084));
} else {
form_data.append(cljs.core.name.call(null,k_25083),v_25084);
}
var G__25085 = cljs.core.next.call(null,seq__25048_25076__$1);
var G__25086 = null;
var G__25087 = (0);
var G__25088 = (0);
seq__25048_25064 = G__25085;
chunk__25049_25065 = G__25086;
count__25050_25066 = G__25087;
i__25051_25067 = G__25088;
continue;
}
} else {
}
}
break;
}
return form_data;
});
cljs_http.client.wrap_multipart_params = (function cljs_http$client$wrap_multipart_params(client){
return (function (p__25089){
var map__25090 = p__25089;
var map__25090__$1 = (((((!((map__25090 == null))))?(((((map__25090.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__25090.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__25090):map__25090);
var request = map__25090__$1;
var multipart_params = cljs.core.get.call(null,map__25090__$1,new cljs.core.Keyword(null,"multipart-params","multipart-params",-1033508707));
var request_method = cljs.core.get.call(null,map__25090__$1,new cljs.core.Keyword(null,"request-method","request-method",1764796830));
if(cljs.core.truth_((function (){var and__4120__auto__ = multipart_params;
if(cljs.core.truth_(and__4120__auto__)){
return new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"patch","patch",380775109),null,new cljs.core.Keyword(null,"delete","delete",-1768633620),null,new cljs.core.Keyword(null,"post","post",269697687),null,new cljs.core.Keyword(null,"put","put",1299772570),null], null), null).call(null,request_method);
} else {
return and__4120__auto__;
}
})())){
return client.call(null,cljs.core.assoc.call(null,cljs.core.dissoc.call(null,request,new cljs.core.Keyword(null,"multipart-params","multipart-params",-1033508707)),new cljs.core.Keyword(null,"body","body",-2049205669),cljs_http.client.generate_form_data.call(null,multipart_params)));
} else {
return client.call(null,request);
}
});
});
cljs_http.client.wrap_method = (function cljs_http$client$wrap_method(client){
return (function (req){
var temp__5718__auto__ = new cljs.core.Keyword(null,"method","method",55703592).cljs$core$IFn$_invoke$arity$1(req);
if(cljs.core.truth_(temp__5718__auto__)){
var m = temp__5718__auto__;
return client.call(null,cljs.core.assoc.call(null,cljs.core.dissoc.call(null,req,new cljs.core.Keyword(null,"method","method",55703592)),new cljs.core.Keyword(null,"request-method","request-method",1764796830),m));
} else {
return client.call(null,req);
}
});
});
cljs_http.client.wrap_server_name = (function cljs_http$client$wrap_server_name(client,server_name){
return (function (p1__25092_SHARP_){
return client.call(null,cljs.core.assoc.call(null,p1__25092_SHARP_,new cljs.core.Keyword(null,"server-name","server-name",-1012104295),server_name));
});
});
cljs_http.client.wrap_url = (function cljs_http$client$wrap_url(client){
return (function (p__25094){
var map__25095 = p__25094;
var map__25095__$1 = (((((!((map__25095 == null))))?(((((map__25095.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__25095.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__25095):map__25095);
var req = map__25095__$1;
var query_params = cljs.core.get.call(null,map__25095__$1,new cljs.core.Keyword(null,"query-params","query-params",900640534));
var temp__5718__auto__ = cljs_http.client.parse_url.call(null,new cljs.core.Keyword(null,"url","url",276297046).cljs$core$IFn$_invoke$arity$1(req));
if(cljs.core.truth_(temp__5718__auto__)){
var spec = temp__5718__auto__;
return client.call(null,cljs.core.update_in.call(null,cljs.core.dissoc.call(null,cljs.core.merge.call(null,req,spec),new cljs.core.Keyword(null,"url","url",276297046)),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"query-params","query-params",900640534)], null),((function (spec,temp__5718__auto__,map__25095,map__25095__$1,req,query_params){
return (function (p1__25093_SHARP_){
return cljs.core.merge.call(null,p1__25093_SHARP_,query_params);
});})(spec,temp__5718__auto__,map__25095,map__25095__$1,req,query_params))
));
} else {
return client.call(null,req);
}
});
});
/**
* Middleware converting the :basic-auth option or `credentials` into
* an Authorization header.
*/
cljs_http.client.wrap_basic_auth = (function cljs_http$client$wrap_basic_auth(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25103 = arguments.length;
var i__4731__auto___25104 = (0);
while(true){
if((i__4731__auto___25104 < len__4730__auto___25103)){
args__4736__auto__.push((arguments[i__4731__auto___25104]));
var G__25105 = (i__4731__auto___25104 + (1));
i__4731__auto___25104 = G__25105;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.wrap_basic_auth.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.wrap_basic_auth.cljs$core$IFn$_invoke$arity$variadic = (function (client,p__25099){
var vec__25100 = p__25099;
var credentials = cljs.core.nth.call(null,vec__25100,(0),null);
return ((function (vec__25100,credentials){
return (function (req){
var credentials__$1 = (function (){var or__4131__auto__ = new cljs.core.Keyword(null,"basic-auth","basic-auth",-673163332).cljs$core$IFn$_invoke$arity$1(req);
if(cljs.core.truth_(or__4131__auto__)){
return or__4131__auto__;
} else {
return credentials;
}
})();
if((!(cljs.core.empty_QMARK_.call(null,credentials__$1)))){
return client.call(null,cljs.core.assoc_in.call(null,cljs.core.dissoc.call(null,req,new cljs.core.Keyword(null,"basic-auth","basic-auth",-673163332)),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"headers","headers",-835030129),"authorization"], null),cljs_http.util.basic_auth.call(null,credentials__$1)));
} else {
return client.call(null,req);
}
});
;})(vec__25100,credentials))
});
cljs_http.client.wrap_basic_auth.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.wrap_basic_auth.cljs$lang$applyTo = (function (seq25097){
var G__25098 = cljs.core.first.call(null,seq25097);
var seq25097__$1 = cljs.core.next.call(null,seq25097);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25098,seq25097__$1);
});
/**
* Middleware converting the :oauth-token option into an Authorization header.
*/
cljs_http.client.wrap_oauth = (function cljs_http$client$wrap_oauth(client){
return (function (req){
var temp__5718__auto__ = new cljs.core.Keyword(null,"oauth-token","oauth-token",311415191).cljs$core$IFn$_invoke$arity$1(req);
if(cljs.core.truth_(temp__5718__auto__)){
var oauth_token = temp__5718__auto__;
return client.call(null,cljs.core.assoc_in.call(null,cljs.core.dissoc.call(null,req,new cljs.core.Keyword(null,"oauth-token","oauth-token",311415191)),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"headers","headers",-835030129),"authorization"], null),["Bearer ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(oauth_token)].join('')));
} else {
return client.call(null,req);
}
});
});
/**
* Pipe the response-channel into the request-map's
* custom channel (e.g. to enable transducers)
*/
cljs_http.client.wrap_channel_from_request_map = (function cljs_http$client$wrap_channel_from_request_map(client){
return (function (request){
var temp__5718__auto__ = new cljs.core.Keyword(null,"channel","channel",734187692).cljs$core$IFn$_invoke$arity$1(request);
if(cljs.core.truth_(temp__5718__auto__)){
var custom_channel = temp__5718__auto__;
return cljs.core.async.pipe.call(null,client.call(null,request),custom_channel);
} else {
return client.call(null,request);
}
});
});
/**
* Returns a batteries-included HTTP request function coresponding to the given
* core client. See client/request
*/
cljs_http.client.wrap_request = (function cljs_http$client$wrap_request(request){
return cljs_http.client.wrap_default_headers.call(null,cljs_http.client.wrap_channel_from_request_map.call(null,cljs_http.client.wrap_url.call(null,cljs_http.client.wrap_method.call(null,cljs_http.client.wrap_oauth.call(null,cljs_http.client.wrap_basic_auth.call(null,cljs_http.client.wrap_query_params.call(null,cljs_http.client.wrap_content_type.call(null,cljs_http.client.wrap_json_response.call(null,cljs_http.client.wrap_json_params.call(null,cljs_http.client.wrap_transit_response.call(null,cljs_http.client.wrap_transit_params.call(null,cljs_http.client.wrap_edn_response.call(null,cljs_http.client.wrap_edn_params.call(null,cljs_http.client.wrap_multipart_params.call(null,cljs_http.client.wrap_form_params.call(null,cljs_http.client.wrap_accept.call(null,request)))))))))))))))));
});
/**
* Executes the HTTP request corresponding to the given map and returns the
* response map for corresponding to the resulting HTTP response.
*
* In addition to the standard Ring request keys, the following keys are also
* recognized:
* * :url
* * :method
* * :query-params
*/
cljs_http.client.request = cljs_http.client.wrap_request.call(null,cljs_http.core.request);
/**
* Like #'request, but sets the :method and :url as appropriate.
*/
cljs_http.client.delete$ = (function cljs_http$client$delete(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25112 = arguments.length;
var i__4731__auto___25113 = (0);
while(true){
if((i__4731__auto___25113 < len__4730__auto___25112)){
args__4736__auto__.push((arguments[i__4731__auto___25113]));
var G__25114 = (i__4731__auto___25113 + (1));
i__4731__auto___25113 = G__25114;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.delete$.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.delete$.cljs$core$IFn$_invoke$arity$variadic = (function (url,p__25108){
var vec__25109 = p__25108;
var req = cljs.core.nth.call(null,vec__25109,(0),null);
return cljs_http.client.request.call(null,cljs.core.merge.call(null,req,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"method","method",55703592),new cljs.core.Keyword(null,"delete","delete",-1768633620),new cljs.core.Keyword(null,"url","url",276297046),url], null)));
});
cljs_http.client.delete$.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.delete$.cljs$lang$applyTo = (function (seq25106){
var G__25107 = cljs.core.first.call(null,seq25106);
var seq25106__$1 = cljs.core.next.call(null,seq25106);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25107,seq25106__$1);
});
/**
* Like #'request, but sets the :method and :url as appropriate.
*/
cljs_http.client.get = (function cljs_http$client$get(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25121 = arguments.length;
var i__4731__auto___25122 = (0);
while(true){
if((i__4731__auto___25122 < len__4730__auto___25121)){
args__4736__auto__.push((arguments[i__4731__auto___25122]));
var G__25123 = (i__4731__auto___25122 + (1));
i__4731__auto___25122 = G__25123;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.get.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.get.cljs$core$IFn$_invoke$arity$variadic = (function (url,p__25117){
var vec__25118 = p__25117;
var req = cljs.core.nth.call(null,vec__25118,(0),null);
return cljs_http.client.request.call(null,cljs.core.merge.call(null,req,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"method","method",55703592),new cljs.core.Keyword(null,"get","get",1683182755),new cljs.core.Keyword(null,"url","url",276297046),url], null)));
});
cljs_http.client.get.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.get.cljs$lang$applyTo = (function (seq25115){
var G__25116 = cljs.core.first.call(null,seq25115);
var seq25115__$1 = cljs.core.next.call(null,seq25115);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25116,seq25115__$1);
});
/**
* Like #'request, but sets the :method and :url as appropriate.
*/
cljs_http.client.head = (function cljs_http$client$head(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25130 = arguments.length;
var i__4731__auto___25131 = (0);
while(true){
if((i__4731__auto___25131 < len__4730__auto___25130)){
args__4736__auto__.push((arguments[i__4731__auto___25131]));
var G__25132 = (i__4731__auto___25131 + (1));
i__4731__auto___25131 = G__25132;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.head.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.head.cljs$core$IFn$_invoke$arity$variadic = (function (url,p__25126){
var vec__25127 = p__25126;
var req = cljs.core.nth.call(null,vec__25127,(0),null);
return cljs_http.client.request.call(null,cljs.core.merge.call(null,req,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"method","method",55703592),new cljs.core.Keyword(null,"head","head",-771383919),new cljs.core.Keyword(null,"url","url",276297046),url], null)));
});
cljs_http.client.head.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.head.cljs$lang$applyTo = (function (seq25124){
var G__25125 = cljs.core.first.call(null,seq25124);
var seq25124__$1 = cljs.core.next.call(null,seq25124);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25125,seq25124__$1);
});
/**
* Like #'request, but sets the :method and :url as appropriate.
*/
cljs_http.client.jsonp = (function cljs_http$client$jsonp(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25139 = arguments.length;
var i__4731__auto___25140 = (0);
while(true){
if((i__4731__auto___25140 < len__4730__auto___25139)){
args__4736__auto__.push((arguments[i__4731__auto___25140]));
var G__25141 = (i__4731__auto___25140 + (1));
i__4731__auto___25140 = G__25141;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.jsonp.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.jsonp.cljs$core$IFn$_invoke$arity$variadic = (function (url,p__25135){
var vec__25136 = p__25135;
var req = cljs.core.nth.call(null,vec__25136,(0),null);
return cljs_http.client.request.call(null,cljs.core.merge.call(null,req,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"method","method",55703592),new cljs.core.Keyword(null,"jsonp","jsonp",226119588),new cljs.core.Keyword(null,"url","url",276297046),url], null)));
});
cljs_http.client.jsonp.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.jsonp.cljs$lang$applyTo = (function (seq25133){
var G__25134 = cljs.core.first.call(null,seq25133);
var seq25133__$1 = cljs.core.next.call(null,seq25133);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25134,seq25133__$1);
});
/**
* Like #'request, but sets the :method and :url as appropriate.
*/
cljs_http.client.move = (function cljs_http$client$move(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25148 = arguments.length;
var i__4731__auto___25149 = (0);
while(true){
if((i__4731__auto___25149 < len__4730__auto___25148)){
args__4736__auto__.push((arguments[i__4731__auto___25149]));
var G__25150 = (i__4731__auto___25149 + (1));
i__4731__auto___25149 = G__25150;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.move.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.move.cljs$core$IFn$_invoke$arity$variadic = (function (url,p__25144){
var vec__25145 = p__25144;
var req = cljs.core.nth.call(null,vec__25145,(0),null);
return cljs_http.client.request.call(null,cljs.core.merge.call(null,req,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"method","method",55703592),new cljs.core.Keyword(null,"move","move",-2110884309),new cljs.core.Keyword(null,"url","url",276297046),url], null)));
});
cljs_http.client.move.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.move.cljs$lang$applyTo = (function (seq25142){
var G__25143 = cljs.core.first.call(null,seq25142);
var seq25142__$1 = cljs.core.next.call(null,seq25142);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25143,seq25142__$1);
});
/**
* Like #'request, but sets the :method and :url as appropriate.
*/
cljs_http.client.options = (function cljs_http$client$options(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25157 = arguments.length;
var i__4731__auto___25158 = (0);
while(true){
if((i__4731__auto___25158 < len__4730__auto___25157)){
args__4736__auto__.push((arguments[i__4731__auto___25158]));
var G__25159 = (i__4731__auto___25158 + (1));
i__4731__auto___25158 = G__25159;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.options.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.options.cljs$core$IFn$_invoke$arity$variadic = (function (url,p__25153){
var vec__25154 = p__25153;
var req = cljs.core.nth.call(null,vec__25154,(0),null);
return cljs_http.client.request.call(null,cljs.core.merge.call(null,req,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"method","method",55703592),new cljs.core.Keyword(null,"options","options",99638489),new cljs.core.Keyword(null,"url","url",276297046),url], null)));
});
cljs_http.client.options.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.options.cljs$lang$applyTo = (function (seq25151){
var G__25152 = cljs.core.first.call(null,seq25151);
var seq25151__$1 = cljs.core.next.call(null,seq25151);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25152,seq25151__$1);
});
/**
* Like #'request, but sets the :method and :url as appropriate.
*/
cljs_http.client.patch = (function cljs_http$client$patch(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25166 = arguments.length;
var i__4731__auto___25167 = (0);
while(true){
if((i__4731__auto___25167 < len__4730__auto___25166)){
args__4736__auto__.push((arguments[i__4731__auto___25167]));
var G__25168 = (i__4731__auto___25167 + (1));
i__4731__auto___25167 = G__25168;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.patch.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.patch.cljs$core$IFn$_invoke$arity$variadic = (function (url,p__25162){
var vec__25163 = p__25162;
var req = cljs.core.nth.call(null,vec__25163,(0),null);
return cljs_http.client.request.call(null,cljs.core.merge.call(null,req,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"method","method",55703592),new cljs.core.Keyword(null,"patch","patch",380775109),new cljs.core.Keyword(null,"url","url",276297046),url], null)));
});
cljs_http.client.patch.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.patch.cljs$lang$applyTo = (function (seq25160){
var G__25161 = cljs.core.first.call(null,seq25160);
var seq25160__$1 = cljs.core.next.call(null,seq25160);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25161,seq25160__$1);
});
/**
* Like #'request, but sets the :method and :url as appropriate.
*/
cljs_http.client.post = (function cljs_http$client$post(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25175 = arguments.length;
var i__4731__auto___25176 = (0);
while(true){
if((i__4731__auto___25176 < len__4730__auto___25175)){
args__4736__auto__.push((arguments[i__4731__auto___25176]));
var G__25177 = (i__4731__auto___25176 + (1));
i__4731__auto___25176 = G__25177;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.post.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.post.cljs$core$IFn$_invoke$arity$variadic = (function (url,p__25171){
var vec__25172 = p__25171;
var req = cljs.core.nth.call(null,vec__25172,(0),null);
return cljs_http.client.request.call(null,cljs.core.merge.call(null,req,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"method","method",55703592),new cljs.core.Keyword(null,"post","post",269697687),new cljs.core.Keyword(null,"url","url",276297046),url], null)));
});
cljs_http.client.post.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.post.cljs$lang$applyTo = (function (seq25169){
var G__25170 = cljs.core.first.call(null,seq25169);
var seq25169__$1 = cljs.core.next.call(null,seq25169);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25170,seq25169__$1);
});
/**
* Like #'request, but sets the :method and :url as appropriate.
*/
cljs_http.client.put = (function cljs_http$client$put(var_args){
var args__4736__auto__ = [];
var len__4730__auto___25184 = arguments.length;
var i__4731__auto___25185 = (0);
while(true){
if((i__4731__auto___25185 < len__4730__auto___25184)){
args__4736__auto__.push((arguments[i__4731__auto___25185]));
var G__25186 = (i__4731__auto___25185 + (1));
i__4731__auto___25185 = G__25186;
continue;
} else {
}
break;
}
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
return cljs_http.client.put.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
});
cljs_http.client.put.cljs$core$IFn$_invoke$arity$variadic = (function (url,p__25180){
var vec__25181 = p__25180;
var req = cljs.core.nth.call(null,vec__25181,(0),null);
return cljs_http.client.request.call(null,cljs.core.merge.call(null,req,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"method","method",55703592),new cljs.core.Keyword(null,"put","put",1299772570),new cljs.core.Keyword(null,"url","url",276297046),url], null)));
});
cljs_http.client.put.cljs$lang$maxFixedArity = (1);
/** @this {Function} */
cljs_http.client.put.cljs$lang$applyTo = (function (seq25178){
var G__25179 = cljs.core.first.call(null,seq25178);
var seq25178__$1 = cljs.core.next.call(null,seq25178);
var self__4717__auto__ = this;
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25179,seq25178__$1);
});
//# sourceMappingURL=client.js.map?rel=1582812678861

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,150 @@
(ns cljs-http.core
(:import [goog.net EventType ErrorCode XhrIo]
[goog.net Jsonp])
(:require-macros [cljs.core.async.macros :refer [go]])
(:require [cljs-http.util :as util]
[cljs.core.async :as async]
[clojure.string :as s]))
(def pending-requests (atom {}))
(defn abort!
"Attempt to close the given channel and abort the pending HTTP request
with which it is associated."
[channel]
(when-let [req (@pending-requests channel)]
(swap! pending-requests dissoc channel)
(async/close! channel)
(if (.hasOwnProperty req "abort")
(.abort req)
(.cancel (:jsonp req) (:request req)))))
(defn- aborted? [xhr]
(= (.getLastErrorCode xhr) goog.net.ErrorCode.ABORT))
(defn apply-default-headers!
"Takes an XhrIo object and applies the default-headers to it."
[xhr headers]
(let [formatted-h (zipmap (map util/camelize (keys headers)) (vals headers))]
(dorun
(map (fn [[k v]]
(.set (.-headers xhr) k v))
formatted-h))))
(defn apply-response-type!
"Takes an XhrIo object and sets response-type if not nil."
[xhr response-type]
(.setResponseType xhr
(case response-type
:array-buffer XhrIo.ResponseType.ARRAY_BUFFER
:blob XhrIo.ResponseType.BLOB
:document XhrIo.ResponseType.DOCUMENT
:text XhrIo.ResponseType.TEXT
:default XhrIo.ResponseType.DEFAULT
nil XhrIo.ResponseType.DEFAULT)))
(defn build-xhr
"Builds an XhrIo object from the request parameters."
[{:keys [with-credentials? default-headers response-type] :as request}]
(let [timeout (or (:timeout request) 0)
send-credentials (if (nil? with-credentials?)
true
with-credentials?)]
(doto (XhrIo.)
(apply-default-headers! default-headers)
(apply-response-type! response-type)
(.setTimeoutInterval timeout)
(.setWithCredentials send-credentials))))
;; goog.net.ErrorCode constants to CLJS keywords
(def error-kw
{0 :no-error
1 :access-denied
2 :file-not-found
3 :ff-silent-error
4 :custom-error
5 :exception
6 :http-error
7 :abort
8 :timeout
9 :offline})
(defn xhr
"Execute the HTTP request corresponding to the given Ring request
map and return a core.async channel."
[{:keys [request-method headers body with-credentials? cancel progress] :as request}]
(let [channel (async/chan)
request-url (util/build-url request)
method (name (or request-method :get))
headers (util/build-headers headers)
xhr (build-xhr request)]
(swap! pending-requests assoc channel xhr)
(.listen xhr EventType.COMPLETE
(fn [evt]
(let [target (.-target evt)
response {:status (.getStatus target)
:success (.isSuccess target)
:body (.getResponse target)
:headers (util/parse-headers (.getAllResponseHeaders target))
:trace-redirects [request-url (.getLastUri target)]
:error-code (error-kw (.getLastErrorCode target))
:error-text (.getLastError target)}]
(if-not (aborted? xhr)
(async/put! channel response))
(swap! pending-requests dissoc channel)
(if cancel (async/close! cancel))
(async/close! channel))))
(when progress
(let [listener (fn [direction evt]
(async/put! progress (merge {:direction direction :loaded (.-loaded evt)}
(if (.-lengthComputable evt) {:total (.-total evt)}))))]
(doto xhr
(.setProgressEventsEnabled true)
(.listen EventType.UPLOAD_PROGRESS (partial listener :upload))
(.listen EventType.DOWNLOAD_PROGRESS (partial listener :download)))))
(.send xhr request-url method body headers)
(if cancel
(go
(let [v (async/<! cancel)]
(if (not (.isComplete xhr))
(.abort xhr)))))
channel))
(defn jsonp
"Execute the JSONP request corresponding to the given Ring request
map and return a core.async channel."
[{:keys [timeout callback-name cancel keywordize-keys?]
:or {keywordize-keys? true}
:as request}]
(let [channel (async/chan)
jsonp (Jsonp. (util/build-url request) callback-name)]
(.setRequestTimeout jsonp timeout)
(let [req (.send jsonp nil
(fn success-callback [data]
(let [response {:status 200
:success true
:body (js->clj data :keywordize-keys keywordize-keys?)}]
(async/put! channel response)
(swap! pending-requests dissoc channel)
(if cancel (async/close! cancel))
(async/close! channel)))
(fn error-callback []
(swap! pending-requests dissoc channel)
(if cancel (async/close! cancel))
(async/close! channel)))]
(swap! pending-requests assoc channel {:jsonp jsonp :request req})
(if cancel
(go
(let [v (async/<! cancel)]
(.cancel jsonp req)))))
channel))
(defn request
"Execute the HTTP request corresponding to the given Ring request
map and return a core.async channel."
[{:keys [request-method] :as request}]
(if (= request-method :jsonp)
(jsonp request)
(xhr request)))

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,480 @@
// Compiled by ClojureScript 1.10.520 {}
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__5720__auto__ = cljs.core.deref.call(null,cljs_http.core.pending_requests).call(null,channel);
if(cljs.core.truth_(temp__5720__auto__)){
var req = temp__5720__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 (formatted_h){
return (function (p__24892){
var vec__24893 = p__24892;
var k = cljs.core.nth.call(null,vec__24893,(0),null);
var v = cljs.core.nth.call(null,vec__24893,(1),null);
return xhr.headers.set(k,v);
});})(formatted_h))
,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__24896 = response_type;
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"array-buffer","array-buffer",519008380),G__24896)){
return goog.net.XhrIo.ResponseType.ARRAY_BUFFER;
} else {
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"blob","blob",1636965233),G__24896)){
return goog.net.XhrIo.ResponseType.BLOB;
} else {
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"document","document",-1329188687),G__24896)){
return goog.net.XhrIo.ResponseType.DOCUMENT;
} else {
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"text","text",-1790561697),G__24896)){
return goog.net.XhrIo.ResponseType.TEXT;
} else {
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"default","default",-1987822328),G__24896)){
return goog.net.XhrIo.ResponseType.DEFAULT;
} else {
if(cljs.core._EQ_.call(null,null,G__24896)){
return goog.net.XhrIo.ResponseType.DEFAULT;
} else {
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__24896)].join('')));
}
}
}
}
}
}
})());
});
/**
* Builds an XhrIo object from the request parameters.
*/
cljs_http.core.build_xhr = (function cljs_http$core$build_xhr(p__24897){
var map__24898 = p__24897;
var map__24898__$1 = (((((!((map__24898 == null))))?(((((map__24898.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__24898.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__24898):map__24898);
var request = map__24898__$1;
var with_credentials_QMARK_ = cljs.core.get.call(null,map__24898__$1,new cljs.core.Keyword(null,"with-credentials?","with-credentials?",-1773202222));
var default_headers = cljs.core.get.call(null,map__24898__$1,new cljs.core.Keyword(null,"default-headers","default-headers",-43146094));
var response_type = cljs.core.get.call(null,map__24898__$1,new cljs.core.Keyword(null,"response-type","response-type",-1493770458));
var timeout = (function (){var or__4131__auto__ = new cljs.core.Keyword(null,"timeout","timeout",-318625318).cljs$core$IFn$_invoke$arity$1(request);
if(cljs.core.truth_(or__4131__auto__)){
return or__4131__auto__;
} else {
return (0);
}
})();
var send_credentials = (((with_credentials_QMARK_ == null))?true:with_credentials_QMARK_);
var G__24900 = (new goog.net.XhrIo());
cljs_http.core.apply_default_headers_BANG_.call(null,G__24900,default_headers);
cljs_http.core.apply_response_type_BANG_.call(null,G__24900,response_type);
G__24900.setTimeoutInterval(timeout);
G__24900.setWithCredentials(send_credentials);
return G__24900;
});
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__24901){
var map__24902 = p__24901;
var map__24902__$1 = (((((!((map__24902 == null))))?(((((map__24902.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__24902.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__24902):map__24902);
var request = map__24902__$1;
var request_method = cljs.core.get.call(null,map__24902__$1,new cljs.core.Keyword(null,"request-method","request-method",1764796830));
var headers = cljs.core.get.call(null,map__24902__$1,new cljs.core.Keyword(null,"headers","headers",-835030129));
var body = cljs.core.get.call(null,map__24902__$1,new cljs.core.Keyword(null,"body","body",-2049205669));
var with_credentials_QMARK_ = cljs.core.get.call(null,map__24902__$1,new cljs.core.Keyword(null,"with-credentials?","with-credentials?",-1773202222));
var cancel = cljs.core.get.call(null,map__24902__$1,new cljs.core.Keyword(null,"cancel","cancel",-1964088360));
var progress = cljs.core.get.call(null,map__24902__$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__4131__auto__ = request_method;
if(cljs.core.truth_(or__4131__auto__)){
return or__4131__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 (channel,request_url,method,headers__$1,xhr,map__24902,map__24902__$1,request,request_method,headers,body,with_credentials_QMARK_,cancel,progress){
return (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);
});})(channel,request_url,method,headers__$1,xhr,map__24902,map__24902__$1,request,request_method,headers,body,with_credentials_QMARK_,cancel,progress))
);
if(cljs.core.truth_(progress)){
var listener_24926 = ((function (channel,request_url,method,headers__$1,xhr,map__24902,map__24902__$1,request,request_method,headers,body,with_credentials_QMARK_,cancel,progress){
return (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)));
});})(channel,request_url,method,headers__$1,xhr,map__24902,map__24902__$1,request,request_method,headers,body,with_credentials_QMARK_,cancel,progress))
;
var G__24904_24927 = xhr;
G__24904_24927.setProgressEventsEnabled(true);
G__24904_24927.listen(goog.net.EventType.UPLOAD_PROGRESS,cljs.core.partial.call(null,listener_24926,new cljs.core.Keyword(null,"upload","upload",-255769218)));
G__24904_24927.listen(goog.net.EventType.DOWNLOAD_PROGRESS,cljs.core.partial.call(null,listener_24926,new cljs.core.Keyword(null,"download","download",-300081668)));
} else {
}
xhr.send(request_url,method,body,headers__$1);
if(cljs.core.truth_(cancel)){
var c__22951__auto___24928 = cljs.core.async.chan.call(null,(1));
cljs.core.async.impl.dispatch.run.call(null,((function (c__22951__auto___24928,channel,request_url,method,headers__$1,xhr,map__24902,map__24902__$1,request,request_method,headers,body,with_credentials_QMARK_,cancel,progress){
return (function (){
var f__22952__auto__ = (function (){var switch__22856__auto__ = ((function (c__22951__auto___24928,channel,request_url,method,headers__$1,xhr,map__24902,map__24902__$1,request,request_method,headers,body,with_credentials_QMARK_,cancel,progress){
return (function (state_24915){
var state_val_24916 = (state_24915[(1)]);
if((state_val_24916 === (1))){
var state_24915__$1 = state_24915;
return cljs.core.async.impl.ioc_helpers.take_BANG_.call(null,state_24915__$1,(2),cancel);
} else {
if((state_val_24916 === (2))){
var inst_24906 = (state_24915[(2)]);
var inst_24907 = xhr.isComplete();
var inst_24908 = cljs.core.not.call(null,inst_24907);
var state_24915__$1 = (function (){var statearr_24917 = state_24915;
(statearr_24917[(7)] = inst_24906);
return statearr_24917;
})();
if(inst_24908){
var statearr_24918_24929 = state_24915__$1;
(statearr_24918_24929[(1)] = (3));
} else {
var statearr_24919_24930 = state_24915__$1;
(statearr_24919_24930[(1)] = (4));
}
return new cljs.core.Keyword(null,"recur","recur",-437573268);
} else {
if((state_val_24916 === (3))){
var inst_24910 = xhr.abort();
var state_24915__$1 = state_24915;
var statearr_24920_24931 = state_24915__$1;
(statearr_24920_24931[(2)] = inst_24910);
(statearr_24920_24931[(1)] = (5));
return new cljs.core.Keyword(null,"recur","recur",-437573268);
} else {
if((state_val_24916 === (4))){
var state_24915__$1 = state_24915;
var statearr_24921_24932 = state_24915__$1;
(statearr_24921_24932[(2)] = null);
(statearr_24921_24932[(1)] = (5));
return new cljs.core.Keyword(null,"recur","recur",-437573268);
} else {
if((state_val_24916 === (5))){
var inst_24913 = (state_24915[(2)]);
var state_24915__$1 = state_24915;
return cljs.core.async.impl.ioc_helpers.return_chan.call(null,state_24915__$1,inst_24913);
} else {
return null;
}
}
}
}
}
});})(c__22951__auto___24928,channel,request_url,method,headers__$1,xhr,map__24902,map__24902__$1,request,request_method,headers,body,with_credentials_QMARK_,cancel,progress))
;
return ((function (switch__22856__auto__,c__22951__auto___24928,channel,request_url,method,headers__$1,xhr,map__24902,map__24902__$1,request,request_method,headers,body,with_credentials_QMARK_,cancel,progress){
return (function() {
var cljs_http$core$xhr_$_state_machine__22857__auto__ = null;
var cljs_http$core$xhr_$_state_machine__22857__auto____0 = (function (){
var statearr_24922 = [null,null,null,null,null,null,null,null];
(statearr_24922[(0)] = cljs_http$core$xhr_$_state_machine__22857__auto__);
(statearr_24922[(1)] = (1));
return statearr_24922;
});
var cljs_http$core$xhr_$_state_machine__22857__auto____1 = (function (state_24915){
while(true){
var ret_value__22858__auto__ = (function (){try{while(true){
var result__22859__auto__ = switch__22856__auto__.call(null,state_24915);
if(cljs.core.keyword_identical_QMARK_.call(null,result__22859__auto__,new cljs.core.Keyword(null,"recur","recur",-437573268))){
continue;
} else {
return result__22859__auto__;
}
break;
}
}catch (e24923){if((e24923 instanceof Object)){
var ex__22860__auto__ = e24923;
var statearr_24924_24933 = state_24915;
(statearr_24924_24933[(5)] = ex__22860__auto__);
cljs.core.async.impl.ioc_helpers.process_exception.call(null,state_24915);
return new cljs.core.Keyword(null,"recur","recur",-437573268);
} else {
throw e24923;
}
}})();
if(cljs.core.keyword_identical_QMARK_.call(null,ret_value__22858__auto__,new cljs.core.Keyword(null,"recur","recur",-437573268))){
var G__24934 = state_24915;
state_24915 = G__24934;
continue;
} else {
return ret_value__22858__auto__;
}
break;
}
});
cljs_http$core$xhr_$_state_machine__22857__auto__ = function(state_24915){
switch(arguments.length){
case 0:
return cljs_http$core$xhr_$_state_machine__22857__auto____0.call(this);
case 1:
return cljs_http$core$xhr_$_state_machine__22857__auto____1.call(this,state_24915);
}
throw(new Error('Invalid arity: ' + arguments.length));
};
cljs_http$core$xhr_$_state_machine__22857__auto__.cljs$core$IFn$_invoke$arity$0 = cljs_http$core$xhr_$_state_machine__22857__auto____0;
cljs_http$core$xhr_$_state_machine__22857__auto__.cljs$core$IFn$_invoke$arity$1 = cljs_http$core$xhr_$_state_machine__22857__auto____1;
return cljs_http$core$xhr_$_state_machine__22857__auto__;
})()
;})(switch__22856__auto__,c__22951__auto___24928,channel,request_url,method,headers__$1,xhr,map__24902,map__24902__$1,request,request_method,headers,body,with_credentials_QMARK_,cancel,progress))
})();
var state__22953__auto__ = (function (){var statearr_24925 = f__22952__auto__.call(null);
(statearr_24925[(6)] = c__22951__auto___24928);
return statearr_24925;
})();
return cljs.core.async.impl.ioc_helpers.run_state_machine_wrapped.call(null,state__22953__auto__);
});})(c__22951__auto___24928,channel,request_url,method,headers__$1,xhr,map__24902,map__24902__$1,request,request_method,headers,body,with_credentials_QMARK_,cancel,progress))
);
} 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__24935){
var map__24936 = p__24935;
var map__24936__$1 = (((((!((map__24936 == null))))?(((((map__24936.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__24936.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__24936):map__24936);
var request = map__24936__$1;
var timeout = cljs.core.get.call(null,map__24936__$1,new cljs.core.Keyword(null,"timeout","timeout",-318625318));
var callback_name = cljs.core.get.call(null,map__24936__$1,new cljs.core.Keyword(null,"callback-name","callback-name",336964714));
var cancel = cljs.core.get.call(null,map__24936__$1,new cljs.core.Keyword(null,"cancel","cancel",-1964088360));
var keywordize_keys_QMARK_ = cljs.core.get.call(null,map__24936__$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_24949 = jsonp.send(null,((function (channel,jsonp,map__24936,map__24936__$1,request,timeout,callback_name,cancel,keywordize_keys_QMARK_){
return (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);
});})(channel,jsonp,map__24936,map__24936__$1,request,timeout,callback_name,cancel,keywordize_keys_QMARK_))
,((function (channel,jsonp,map__24936,map__24936__$1,request,timeout,callback_name,cancel,keywordize_keys_QMARK_){
return (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);
});})(channel,jsonp,map__24936,map__24936__$1,request,timeout,callback_name,cancel,keywordize_keys_QMARK_))
);
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_24949], null));
if(cljs.core.truth_(cancel)){
var c__22951__auto___24950 = cljs.core.async.chan.call(null,(1));
cljs.core.async.impl.dispatch.run.call(null,((function (c__22951__auto___24950,req_24949,channel,jsonp,map__24936,map__24936__$1,request,timeout,callback_name,cancel,keywordize_keys_QMARK_){
return (function (){
var f__22952__auto__ = (function (){var switch__22856__auto__ = ((function (c__22951__auto___24950,req_24949,channel,jsonp,map__24936,map__24936__$1,request,timeout,callback_name,cancel,keywordize_keys_QMARK_){
return (function (state_24942){
var state_val_24943 = (state_24942[(1)]);
if((state_val_24943 === (1))){
var state_24942__$1 = state_24942;
return cljs.core.async.impl.ioc_helpers.take_BANG_.call(null,state_24942__$1,(2),cancel);
} else {
if((state_val_24943 === (2))){
var inst_24939 = (state_24942[(2)]);
var inst_24940 = jsonp.cancel(req_24949);
var state_24942__$1 = (function (){var statearr_24944 = state_24942;
(statearr_24944[(7)] = inst_24939);
return statearr_24944;
})();
return cljs.core.async.impl.ioc_helpers.return_chan.call(null,state_24942__$1,inst_24940);
} else {
return null;
}
}
});})(c__22951__auto___24950,req_24949,channel,jsonp,map__24936,map__24936__$1,request,timeout,callback_name,cancel,keywordize_keys_QMARK_))
;
return ((function (switch__22856__auto__,c__22951__auto___24950,req_24949,channel,jsonp,map__24936,map__24936__$1,request,timeout,callback_name,cancel,keywordize_keys_QMARK_){
return (function() {
var cljs_http$core$jsonp_$_state_machine__22857__auto__ = null;
var cljs_http$core$jsonp_$_state_machine__22857__auto____0 = (function (){
var statearr_24945 = [null,null,null,null,null,null,null,null];
(statearr_24945[(0)] = cljs_http$core$jsonp_$_state_machine__22857__auto__);
(statearr_24945[(1)] = (1));
return statearr_24945;
});
var cljs_http$core$jsonp_$_state_machine__22857__auto____1 = (function (state_24942){
while(true){
var ret_value__22858__auto__ = (function (){try{while(true){
var result__22859__auto__ = switch__22856__auto__.call(null,state_24942);
if(cljs.core.keyword_identical_QMARK_.call(null,result__22859__auto__,new cljs.core.Keyword(null,"recur","recur",-437573268))){
continue;
} else {
return result__22859__auto__;
}
break;
}
}catch (e24946){if((e24946 instanceof Object)){
var ex__22860__auto__ = e24946;
var statearr_24947_24951 = state_24942;
(statearr_24947_24951[(5)] = ex__22860__auto__);
cljs.core.async.impl.ioc_helpers.process_exception.call(null,state_24942);
return new cljs.core.Keyword(null,"recur","recur",-437573268);
} else {
throw e24946;
}
}})();
if(cljs.core.keyword_identical_QMARK_.call(null,ret_value__22858__auto__,new cljs.core.Keyword(null,"recur","recur",-437573268))){
var G__24952 = state_24942;
state_24942 = G__24952;
continue;
} else {
return ret_value__22858__auto__;
}
break;
}
});
cljs_http$core$jsonp_$_state_machine__22857__auto__ = function(state_24942){
switch(arguments.length){
case 0:
return cljs_http$core$jsonp_$_state_machine__22857__auto____0.call(this);
case 1:
return cljs_http$core$jsonp_$_state_machine__22857__auto____1.call(this,state_24942);
}
throw(new Error('Invalid arity: ' + arguments.length));
};
cljs_http$core$jsonp_$_state_machine__22857__auto__.cljs$core$IFn$_invoke$arity$0 = cljs_http$core$jsonp_$_state_machine__22857__auto____0;
cljs_http$core$jsonp_$_state_machine__22857__auto__.cljs$core$IFn$_invoke$arity$1 = cljs_http$core$jsonp_$_state_machine__22857__auto____1;
return cljs_http$core$jsonp_$_state_machine__22857__auto__;
})()
;})(switch__22856__auto__,c__22951__auto___24950,req_24949,channel,jsonp,map__24936,map__24936__$1,request,timeout,callback_name,cancel,keywordize_keys_QMARK_))
})();
var state__22953__auto__ = (function (){var statearr_24948 = f__22952__auto__.call(null);
(statearr_24948[(6)] = c__22951__auto___24950);
return statearr_24948;
})();
return cljs.core.async.impl.ioc_helpers.run_state_machine_wrapped.call(null,state__22953__auto__);
});})(c__22951__auto___24950,req_24949,channel,jsonp,map__24936,map__24936__$1,request,timeout,callback_name,cancel,keywordize_keys_QMARK_))
);
} 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__24953){
var map__24954 = p__24953;
var map__24954__$1 = (((((!((map__24954 == null))))?(((((map__24954.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__24954.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__24954):map__24954);
var request = map__24954__$1;
var request_method = cljs.core.get.call(null,map__24954__$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?rel=1582812678726

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,77 @@
(ns cljs-http.util
(:refer-clojure :exclude [uri?])
(:import goog.Uri)
(:require [clojure.string :refer [blank? capitalize join split lower-case]]
[cognitect.transit :as t]
[goog.userAgent :as agent]
[no.en.core :refer [base64-encode]]))
(defn basic-auth
"Returns the value of the HTTP basic authentication header for
`credentials`."
[credentials]
(if credentials
(let [[username password]
(if (map? credentials)
(map credentials [:username :password])
credentials)]
(str "Basic " (base64-encode (str username ":" password))))))
(defn build-url
"Build the url from the request map."
[{:keys [scheme server-name server-port uri query-string]}]
(str (doto (Uri.)
(.setScheme (name (or scheme :http)))
(.setDomain server-name)
(.setPort server-port)
(.setPath uri)
(.setQuery query-string true))))
(defn camelize
"Returns dash separated string `s` in camel case."
[s]
(->> (split (str s) #"-")
(map capitalize)
(join "-")))
(defn build-headers
"Build the headers from the map."
[m] (clj->js (zipmap (map camelize (keys m)) (vals m))))
(defn user-agent
"Returns the user agent."
[] (agent/getUserAgentString))
(defn android?
"Returns true if the user agent is an Android client."
[] (re-matches #"(?i).*android.*" (user-agent)))
(defn transit-decode
"Transit decode an object from `s`."
[s type opts]
(let [rdr (t/reader type opts)]
(t/read rdr s)))
(defn transit-encode
"Transit encode `x` into a String."
[x type opts]
(let [wrtr (t/writer type opts)]
(t/write wrtr x)))
(defn json-decode
"JSON decode an object from `s`."
[s]
(let [v (if-not (clojure.string/blank? s) (js/JSON.parse s))]
(when (some? v)
(js->clj v :keywordize-keys true))))
(defn json-encode
"JSON encode `x` into a String."
[x] (js/JSON.stringify (clj->js x)))
(defn parse-headers [headers]
(reduce
#(let [[k v] (split %2 #":\s+")]
(if (or (blank? k) (blank? v))
%1 (assoc %1 (lower-case k) v)))
{} (split (or headers "") #"(\n)|(\r)|(\r\n)|(\n\r)")))

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,128 @@
// Compiled by ClojureScript 1.10.520 {}
goog.provide('cljs_http.util');
goog.require('cljs.core');
goog.require('goog.Uri');
goog.require('clojure.string');
goog.require('cognitect.transit');
goog.require('goog.userAgent');
goog.require('no.en.core');
/**
* Returns the value of the HTTP basic authentication header for
* `credentials`.
*/
cljs_http.util.basic_auth = (function cljs_http$util$basic_auth(credentials){
if(cljs.core.truth_(credentials)){
var vec__21601 = ((cljs.core.map_QMARK_.call(null,credentials))?cljs.core.map.call(null,credentials,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"username","username",1605666410),new cljs.core.Keyword(null,"password","password",417022471)], null)):credentials);
var username = cljs.core.nth.call(null,vec__21601,(0),null);
var password = cljs.core.nth.call(null,vec__21601,(1),null);
return ["Basic ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(no.en.core.base64_encode.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(username),":",cljs.core.str.cljs$core$IFn$_invoke$arity$1(password)].join('')))].join('');
} else {
return null;
}
});
/**
* Build the url from the request map.
*/
cljs_http.util.build_url = (function cljs_http$util$build_url(p__21604){
var map__21605 = p__21604;
var map__21605__$1 = (((((!((map__21605 == null))))?(((((map__21605.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__21605.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__21605):map__21605);
var scheme = cljs.core.get.call(null,map__21605__$1,new cljs.core.Keyword(null,"scheme","scheme",90199613));
var server_name = cljs.core.get.call(null,map__21605__$1,new cljs.core.Keyword(null,"server-name","server-name",-1012104295));
var server_port = cljs.core.get.call(null,map__21605__$1,new cljs.core.Keyword(null,"server-port","server-port",663745648));
var uri = cljs.core.get.call(null,map__21605__$1,new cljs.core.Keyword(null,"uri","uri",-774711847));
var query_string = cljs.core.get.call(null,map__21605__$1,new cljs.core.Keyword(null,"query-string","query-string",-1018845061));
return cljs.core.str.cljs$core$IFn$_invoke$arity$1((function (){var G__21608 = (new goog.Uri());
G__21608.setScheme(cljs.core.name.call(null,(function (){var or__4131__auto__ = scheme;
if(cljs.core.truth_(or__4131__auto__)){
return or__4131__auto__;
} else {
return new cljs.core.Keyword(null,"http","http",382524695);
}
})()));
G__21608.setDomain(server_name);
G__21608.setPort(server_port);
G__21608.setPath(uri);
G__21608.setQuery(query_string,true);
return G__21608;
})());
});
/**
* Returns dash separated string `s` in camel case.
*/
cljs_http.util.camelize = (function cljs_http$util$camelize(s){
return clojure.string.join.call(null,"-",cljs.core.map.call(null,clojure.string.capitalize,clojure.string.split.call(null,cljs.core.str.cljs$core$IFn$_invoke$arity$1(s),/-/)));
});
/**
* Build the headers from the map.
*/
cljs_http.util.build_headers = (function cljs_http$util$build_headers(m){
return cljs.core.clj__GT_js.call(null,cljs.core.zipmap.call(null,cljs.core.map.call(null,cljs_http.util.camelize,cljs.core.keys.call(null,m)),cljs.core.vals.call(null,m)));
});
/**
* Returns the user agent.
*/
cljs_http.util.user_agent = (function cljs_http$util$user_agent(){
return goog.userAgent.getUserAgentString();
});
/**
* Returns true if the user agent is an Android client.
*/
cljs_http.util.android_QMARK_ = (function cljs_http$util$android_QMARK_(){
return cljs.core.re_matches.call(null,/.*android.*/i,cljs_http.util.user_agent.call(null));
});
/**
* Transit decode an object from `s`.
*/
cljs_http.util.transit_decode = (function cljs_http$util$transit_decode(s,type,opts){
var rdr = cognitect.transit.reader.call(null,type,opts);
return cognitect.transit.read.call(null,rdr,s);
});
/**
* Transit encode `x` into a String.
*/
cljs_http.util.transit_encode = (function cljs_http$util$transit_encode(x,type,opts){
var wrtr = cognitect.transit.writer.call(null,type,opts);
return cognitect.transit.write.call(null,wrtr,x);
});
/**
* JSON decode an object from `s`.
*/
cljs_http.util.json_decode = (function cljs_http$util$json_decode(s){
var v = (((!(clojure.string.blank_QMARK_.call(null,s))))?JSON.parse(s):null);
if((!((v == null)))){
return cljs.core.js__GT_clj.call(null,v,new cljs.core.Keyword(null,"keywordize-keys","keywordize-keys",1310784252),true);
} else {
return null;
}
});
/**
* JSON encode `x` into a String.
*/
cljs_http.util.json_encode = (function cljs_http$util$json_encode(x){
return JSON.stringify(cljs.core.clj__GT_js.call(null,x));
});
cljs_http.util.parse_headers = (function cljs_http$util$parse_headers(headers){
return cljs.core.reduce.call(null,(function (p1__21610_SHARP_,p2__21609_SHARP_){
var vec__21611 = clojure.string.split.call(null,p2__21609_SHARP_,/:\s+/);
var k = cljs.core.nth.call(null,vec__21611,(0),null);
var v = cljs.core.nth.call(null,vec__21611,(1),null);
if(((clojure.string.blank_QMARK_.call(null,k)) || (clojure.string.blank_QMARK_.call(null,v)))){
return p1__21610_SHARP_;
} else {
return cljs.core.assoc.call(null,p1__21610_SHARP_,clojure.string.lower_case.call(null,k),v);
}
}),cljs.core.PersistentArrayMap.EMPTY,clojure.string.split.call(null,(function (){var or__4131__auto__ = headers;
if(cljs.core.truth_(or__4131__auto__)){
return or__4131__auto__;
} else {
return "";
}
})(),/(\n)|(\r)|(\r\n)|(\n\r)/));
});
//# sourceMappingURL=util.js.map?rel=1582812677821

View file

@ -0,0 +1 @@
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/cljs_http\/util.js","sources":["util.cljs?rel=1582812677822"],"lineCount":128,"mappings":";AAAA;;;;;;;AAQA;;;;4BAAA,5BAAMA,gEAGHC;AAHH,AAIE,oBAAIA;AACF,IAAAC,aACM,EAAI,AAACI,+BAAKL,cACR,oCAAA,mFAAA,6DAAA,pLAACM,wBAAIN,iOACLA;eAHR,AAAAE,wBAAAD,WAAA,IAAA,lDAAOE;eAAP,AAAAD,wBAAAD,WAAA,IAAA,lDAAgBG;AAAhB,AAIE,QAAA,qDAAc,AAACG,mCAAc,uDAAA,VAAKJ,0DAAaC;;AALnD;;;AAOF;;;2BAAA,mCAAAI,9DAAMM;AAAN,AAAA,IAAAL,aAAAD;IAAAC,iBAAA,EAAA,EAAA,GAAA,CAAAA,cAAA,SAAA,EAAA,EAAA,CAAA,AAAAA,iDAAA,WAAA,CAAAC,gCAAA,AAAAD,+BAAA,KAAA,OAAA,QAAA,AAAAE,0BAAAC,mBAAAH,YAAAA;aAAA,AAAAI,wBAAAJ,eAAA,hDAEWM;kBAFX,AAAAF,wBAAAJ,eAAA,rDAEkBO;kBAFlB,AAAAH,wBAAAJ,eAAA,rDAE8BQ;UAF9B,AAAAJ,wBAAAJ,eAAA,7CAE0CS;mBAF1C,AAAAL,wBAAAJ,eAAA,tDAE8CU;AAF9C,AAGE,mDAAK,iBAAAC,WAAM,KAAAC;AAAN,AAAA,AAAAD,mBACc,AAACE,yBAAK,iBAAAC,mBAAIR;AAAJ,AAAA,oBAAAQ;AAAAA;;AAAA;;;;AADpB,AAAAH,mBAEcJ;;AAFd,AAAAI,iBAGYH;;AAHZ,AAAAG,iBAIYF;;AAJZ,AAAAE,+BAAA,bAKaD;;AALbC;;;AAOP;;;0BAAA,1BAAMI,4DAEHC;AAFH,2FAGO,8EAAA,9EAACC,+BAAM,4CAAKD,7HACZ,AAACnB,wBAAIqB,jEACL,qCAAA,9BAACC;;AAER;;;+BAAA,\/BAAMC,sEAEHC;AAFH,AAEM,OAACC,+BAAQ,AAACC,2BAAO,AAAC1B,wBAAIkB,wBAAS,AAACS,yBAAKH,IAAI,AAACI,yBAAKJ;;AAErD;;;4BAAA,5BAAMK;AAAN,AAEK,OAACC;;AAEN;;;gCAAA,hCAAMC;AAAN,AAEK,sCAAA,\/BAACC,8CAA8B,AAACH;;AAErC;;;gCAAA,hCAAMI,wEAEHd,EAAEe,KAAKC;AAFV,AAGE,IAAMC,MAAI,AAACC,mCAASH,KAAKC;AAAzB,AACE,OAACG,iCAAOF,IAAIjB;;AAEhB;;;gCAAA,hCAAMoB,wEAEHC,EAAEN,KAAKC;AAFV,AAGE,IAAMM,OAAK,AAACC,mCAASR,KAAKC;AAA1B,AACE,OAACQ,kCAAQF,KAAKD;;AAElB;;;6BAAA,7BAAMI,kEAEHzB;AAFH,AAGE,IAAM0B,IAAE,EAAA,6DAAA,1DAAQ,AAACC,sCAAsB3B,MAAG,AAAC4B,WAAc5B;AAAzD,AACE,GAAM,GAAA,MAAA,LAAO0B;AAAb,AACE,wCAAA,2EAAA,5GAACG,+BAAQH;;AADX;;;AAGJ;;;6BAAA,7BAAMI,kEAEHT;AAFH,AAEM,OAACU,eAAkB,AAACzB,+BAAQe;;AAElC,+BAAA,\/BAAMW,sEAAeC;AAArB,AACE,kCAAA,WAAAC,iBAAAC,vDAACC;AAAD,AACE,IAAAC,aAAY,+BAAAF,iBAAA,hDAAClC;QAAb,AAAAxB,wBAAA4D,WAAA,IAAA,3CAAOC;QAAP,AAAA7D,wBAAA4D,WAAA,IAAA,3CAASX;AAAT,AACE,GAAI,EAAI,AAACC,sCAAOW,QAAG,AAACX,sCAAOD;AAA3BQ;;AACK,iCAAAA,1BAACK,2CAAS,AAACC,oCAAWF,GAAGZ;;GAHlC,mCAII,AAACzB,+BAAM,iBAAAH,mBAAImC;AAAJ,AAAA,oBAAAnC;AAAAA;;AAAA;;KAAP","names":["cljs-http.util\/basic-auth","credentials","vec__21601","cljs.core\/nth","username","password","cljs.core\/map?","cljs.core\/map","no.en.core\/base64-encode","p__21604","map__21605","cljs.core\/PROTOCOL_SENTINEL","cljs.core\/apply","cljs.core\/hash-map","cljs.core\/get","cljs-http.util\/build-url","scheme","server-name","server-port","uri","query-string","G__21608","goog\/Uri","cljs.core\/name","or__4131__auto__","cljs-http.util\/camelize","s","clojure.string\/split","clojure.string\/capitalize","clojure.string\/join","cljs-http.util\/build-headers","m","cljs.core\/clj->js","cljs.core\/zipmap","cljs.core\/keys","cljs.core\/vals","cljs-http.util\/user-agent","goog.userAgent\/getUserAgentString","cljs-http.util\/android?","cljs.core\/re-matches","cljs-http.util\/transit-decode","type","opts","rdr","cognitect.transit\/reader","cognitect.transit\/read","cljs-http.util\/transit-encode","x","wrtr","cognitect.transit\/writer","cognitect.transit\/write","cljs-http.util\/json-decode","v","clojure.string\/blank?","js\/JSON.parse","cljs.core\/js->clj","cljs-http.util\/json-encode","js\/JSON.stringify","cljs-http.util\/parse-headers","headers","p1__21610#","p2__21609#","cljs.core\/reduce","vec__21611","k","cljs.core\/assoc","clojure.string\/lower-case"]}