;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\210\300\310!\207" [require cl-lib url-parse json browse-url dash time-stamp rx s] 2) #@42 The default MIME type used for requests. (defconst web/request-mimetype 'application/x-www-form-urlencoded (#$ . 272)) #@44 The MIME type used for multipart requests. (defconst web-multipart-mimetype 'multipart/form-data (#$ . 397)) #@366 Parse an HTTP response header. Each header line is stored in the hash with a symbol form of the header name. The status line is expected to be the first line of the data. The status is stored in the header as well with the following keys: status-version status-code status-string which are stored as symbols the same as the normal header keys. (fn DATA) (defalias 'web-header-parse #[257 "\300\301\302\"\303\304\"\211@\305\306\"\2030\307\310\311\312\"#\210\307\313\311\314\"#\210\307\315\311\316\"\206-\317#\210A\320:\203]@\262\305\321\"\203V\322\311\312\"\227!\311\314\"\307 #\266A\262\2023\266\207" [make-hash-table :test equal split-string " \n" string-match "HTTP/\\([0-9.]+\\) \\([0-9]\\{3\\}\\)\\( \\(.*\\)\\)*" puthash status-version match-string 1 status-code 2 status-string 4 "" nil "^\\([A-Za-z0-9.-]+\\):[ ]*\\(.*\\)" intern] 12 (#$ . 513)]) #@716 Decode the chunked encoding stream on the process CON. DATA is a lump of data from the stream, as passed from a filter function for example. CONSUMER is a function that will be called with the resulting data like: CON CHUNK the CON is the same as the CON in this call. The `chunk' is the chunk that has been read. Only complete chunks are sent to the CONSUMER. When the chunked stream ends the CONSUMER is called with CHUNK being `:done'. This can be used to do clean up. It is NOT expected that the callback will have to clean up the CON, that should be done by the caller. CON is used to store state with the process property `:chunked-encoding-buffer' being used as a buffer. (fn CON DATA CONSUMER) (defalias 'web/chunked-decode-stream #[771 "\300\301\"\211\203\211P\202\262\262\302\303\"\204 \304\301#\207\305\306\"\307\310\"\311G\\\211\\G\311\\W\203@\304\301#\207O\211\311\\O\311\\\312O\203d\313\232\204d\314\315\312C\312$\210\316=\203t\n\317\"\266\317\207GV\203\203\304\n\301 #\207\n\"\210\304\n\301\320#\210\211\205\234\321\n\n#\207" [process-get :chunked-encoding-buffer string-match "^\\([0-9A-Fa-f]+\\) \n" process-put match-string 1 string-to-number 16 2 nil #1=" \n" cl--assertion-failed (equal trailing #1#) 0 :done "" web/chunked-decode-stream] 15 (#$ . 1413)]) #@51 Kill the buffer and clean the process. (fn PROC) (defalias 'web/cleanup-process #[257 "\300!\301!\210\302!\207" [process-buffer delete-process kill-buffer] 4 (#$ . 2766)]) #@108 The location of the cookie jar file. Override this with dynamic scope if you need to use a specific file. (defconst web-cookie-jar-file (expand-file-name "web-cookies" user-emacs-directory) (#$ . 2949)) #@22 (fn COOKIE-HEADER) (defalias 'web/cookie-split #[257 "\300\301\"\205O\302\303\"\302\304\"\305\306\"\211@\307A\310\307\211\203C\211A\262\242\262\262T\262\305\311\312!\313#\211\203?\211B\262\210\202\266\211\237\262E\266\205\207" [string-match "\\([^=]+\\)=\\(.*\\)" match-string 1 2 s-split ";" nil 0 "=" s-trim t] 14 (#$ . 3159)]) #@165 Maintains a cookie jar. Cookies are written to file "web-cookie-jar-file" in a JSON format but prefixed by the url that caused the cookie to be set. (fn CON HDR) (defalias 'web/cookie-handler #[514 "\301 \302\303\"\216\304\305\"\306\307\"\205\265\310\311\"\310\312\"\313\314\"\211@\315A\316\315\211\203N\211A\262\242\262\262T\262\313\317\320!\321#\211\203J\211B\262\210\202&\266\211\237\262\3221\254\205\246r\323!q\210eb\210\324 \325\"\326E!\301 \302\327\"\216\330\331\332\333\334BBB!\315\321#\203\224\335\315\321\315\311%\210\202\236db\210\336\337\261\210)\266\340\341 !)0\266\205\202\265\342\343#\262\266\205\262)\207" [web-cookie-jar-file match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] gethash set-cookie string-match "\\([^=]+\\)=\\(.*\\)" match-string 1 2 s-split ";" nil 0 "=" s-trim t (error) find-file-noselect process-get :web-url json-encode #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] re-search-forward rx-to-string and bol (" " (group-n 1 (* anything))) replace-match " " "\n" write-file buffer-file-name message "web/cookie-handler: '%s' writing cookies to '%s'"] 18 (#$ . 3525)]) #@86 Filter for the client when we're doing chunking. (fn CALLBACK CON MODE HEADER DATA) (defalias 'web/chunked-filter #[1285 "\300=\203#\210\211\301=\205?\302!\207\303=\2030\211\301=\2030\304\305\"#\210\302!\207\306\305\304\305\"\206<\307P#\207" [stream :done web/cleanup-process batch process-get :web-buffer process-put ""] 11 (#$ . 4725)]) #@72 Does the content-length filtering. (fn CALLBACK CON MODE HEADER DATA) (defalias 'web/content-length-filter #[1285 "\300\301\302\"!\303=\203/\304\305\"PGV\203 \306\305#\207\307\310\"\216#)\207\304\311\"\2067\312G\\V\203O\306\311#\210#\207#\210\313#\210\314!\207" [string-to-number gethash content-length batch process-get :web-buffer process-put make-closure #[0 "\301\300!\207" [V0 web/cleanup-process] 2] :web-len 0 :done web/cleanup-process] 11 (#$ . 5094)]) #@477 Filter function for HTTP POST. Not actually a filter function because it also receives the CALLBACK and the MODE from the actual filter function, a lexical closure inside `web-http-post'. CALLBACK is a user supplied function handling the return from the HTTP server. MODE comes from the `web-http-post' call. This function handles the MODE by either streaming the data to the CALLBACK or by collecting it and then batching it to the CALLBACK. (fn CON DATA CALLBACK MODE) (defalias 'web/http-post-filter #[1028 "r\300!q\210\301\302\"\211\204T\212db\210c\210\211?\205Peb\210\303\304\305\306#\205P\307ed{!d`V\2053`d{\310\311`#\210\310\302#\210\211\205N\312$\266\202)\202}\313\314\"\315\232\203m\316\317\320$#\202}\313\321\"\205}\322%\262)\207" [process-buffer process-get :http-header re-search-forward " \n \n" nil t web-header-parse process-put :http-header-pos web/http-post-filter gethash transfer-encoding "chunked" web/chunked-decode-stream make-closure #[514 "\303\300\301\302%\207" [V0 V1 V2 web/chunked-filter] 8 "\n\n(fn CON DATA)"] content-length web/content-length-filter] 13 (#$ . 5610)]) #@58 Encode a KEY and VALUE for url encoding. (fn KEY VALUE) (defalias 'web/key-value-encode #[514 "\211\247\204\n\211;\203\300\301\302\300\303\"!\302\300\303\"!#\207\300\303\302\300\303\"!\"\207" [format "%s=%s" url-hexify-string "%s"] 9 (#$ . 6764)]) #@426 Convert OBJECT (a hash-table or alist) to an HTTP query string. If OBJECT is of type `hash-table' then the keys and values of the hash are iterated into the string depending on their types. Keys with `number' and `string' values are encoded as "key=value" in the resulting query. Keys with a boolean value (or any other value not already described) are encoded just as "key". Keys may be symbols or strings. (fn OBJECT) (defalias 'web-to-query-string #[257 "\300\301\302!\203\303C\304\305\306\"\"\210\307\242!\262\202!<\205!\310#\207" [mapconcat #[257 "\300@A\"\207" [web/key-value-encode] 4 "\n\n(fn PAIR)"] hash-table-p nil maphash make-closure #[514 "\300\301BC\300\242\"\240\207" [V0 append] 6 "\n\n(fn KEY VALUE)"] reverse "&"] 8 (#$ . 7029)]) #@25 Make a boundary marker. (defalias 'web/to-multipart-boundary #[0 "\300\301\302\303 \304 #!\207" [sha1 format "%s%s" random time-stamp-string] 5 (#$ . 7804)]) #@11 (fn KV) (defalias 'web/is-file #[257 "\211A\300!\205\301!\205\211\207" [bufferp buffer-file-name] 4 (#$ . 7968)]) #@178 Convert DATA, an ALIST or Hashtable, into a Multipart body. Returns a string of the multipart body propertized with `:boundary' with a value of the boundary string. (fn DATA) (defalias 'web-to-multipart #[257 "\300 \301\302\303\"\304\305\"\306#\301\302\307\"\304\310\"\306#\311\312\313\203,\314\232\204,\306P\202-\314\203=\314\232\204=\306P\202>\314$\315#\207" [web/to-multipart-boundary mapconcat make-closure #[257 "\211@A\301\302\300$\207" [V0 format "--%s \nContent-Disposition: form-data; name=\"%s\" \n \n%s"] 8 "\n\n(fn KV)"] -filter #[257 "\300!?\207" [web/is-file] 3 "\n\n(fn KV)"] " \n" #[257 "\211@A\302!\303!\206\304\305\306\300\307!\310\311\312r q\210\313 )D\"!&\207" [V0 buffer-file-coding-system buffer-file-name mm-default-file-encoding "text/plain" format "--%s \nContent-Transfer-Encoding: BASE64 \nContent-Disposition: form-data; name=\"%s\"; filename=\"%s\" \nContent-Type: %s \n \n%s" file-name-nondirectory base64-encode-string apply encode-coding-string buffer-string] 16 "\n\n(fn KV)"] web/is-file propertize format "%s%s--%s-- \n" "" :boundary] 10 (#$ . 8097)]) #@63 Whether to log info messages, specifically from the sentinel. (defvar web-log-info nil (#$ . 9229)) #@43 Sentinel for the HTTP POST. (fn CON EVT) (defalias 'web/http-post-sentinel #[514 "\211\301\267\202\"\205*\302\303!\207\304!\210\205*\302\305!\207\205*\302\306!\207\205*\302\307\"\207" [web-log-info #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("closed\n" 6 "deleted\n" 14 "connection broken by peer\n" 26)) message "web/http-post-sentinel http client post closed" delete-process "web/http-post-sentinel http client post deleted" "web/http-post-sentinel http client broken" "web/http-post-sentinel unexpected evt: %s"] 5 (#$ . 9335)]) #@65 Map a logging variable into the sentinel. (fn CON EVT LOGGING) (defalias 'web/http-post-sentinel-with-logging #[771 "\211\301\")\207" [web-log-info web/http-post-sentinel] 6 (#$ . 9930)]) #@73 Convert HEADERS (hash-table or alist) into a header list. (fn HEADERS) (defalias 'web/header-list #[257 "\300\301!\203\302C\303\304\305#\"\210\211\242\207<\205!\306\304\307\"\"\207" [#[514 "\300\301#\207" [format "%s: %s \n"] 6 "\n\n(fn KEY VAL)"] hash-table-p nil maphash make-closure #[514 "\301\302\300\"C\301\242\"\240\207" [V0 V1 append] 7 "\n\n(fn KEY VAL)"] mapcar #[257 "\300@A\"\207" [V0] 4 "\n\n(fn PAIR)"]] 8 (#$ . 10128)]) #@493 Return a string of all the HEADERS formatted for a request. Content-Type and Content-Length are both computed automatically. METHOD specifies the usual HTTP method and therefore whether there might be a Content-Type on the request body. MIME-TYPE specifies the MIME-TYPE of any TO-SEND. TO-SEND is any request body that needs to be sent. TO-SEND may be propertized with a multipart boundary marker which needs to be set on the Content-Type header. (fn METHOD HEADERS MIME-TYPE TO-SEND) (defalias 'web/header-string #[1028 "\300!\205\301\302\303\"\304\"\305\235\203/G\306V\203/\307\310\203)\307\311\"\202*\312#B\262\203CG\303V\203C\307\313G\"B\262\314\312:\203_@\262\203X\211P\262A\262\202F\207" [web/header-list plist-get text-properties-at 0 :boundary ("POST" "PUT") 1 format "Content-type: %s%s \n" "; boundary=%s" "" "Content-length: %d \n" nil] 12 (#$ . 10587)]) #@12 (fn LOG) (defalias 'web/log #[257 "\211\205r\300\301!q\210\212db\210\302c\210\303\304\"c\210\305c*\207" [get-buffer-create "*web-log*" "web-http " format "%s" "\n"] 4 (#$ . 11501)]) #@2146 Make an HTTP method to the URL or the HOST, PORT, PATH and send DATA. If URL is specified then it takes precedence over SECURE, HOST, PORT and PATH. URL may be HTTP or HTTPS. Important note: any query in URL is currently IGNORED! SECURE is `nil' by default but if `t' then SSL is used. PORT is 80 by default. Even if SECURE it `t'. If you manually specify SECURE you should manually specify PORT to be 443. Using URL negates the need for that, an SSL URL will work correctly. The URL connected to (whether specified by URL or by the HOST and PORT) is recorded on the resulting connection as the process property `:web-url'. EXTRA-HEADERS is an alist or a hash-table of extra headers to send to the server. The full set of headers sent to the server is recorded on the connection with the process property `:web-headers'. DATA is of MIME-TYPE. We try to interpret DATA and MIME-TYPE usefully: If MIME-TYPE is `application/form-www-url-encoded' then `web-to-query-string' is used to to format the DATA into a POST body. If MIME-TYPE is `multipart/form-data' then `web-to-multipart' is called to get a POST body. Any data sent to the server is recorded on the connection with the process property `:web-sent'. When the request comes back the CALLBACK is called. CALLBACK is always passed 3 arguments: the HTTP connection which is a process object, the HTTP header which is a `hash-table' and `data', which is normally a string. `data' depends somewhat on the context. See below. MODE defines what it means for the request to cause the CALLBACK to be fired. When MODE is `stream' then the CALLBACK is called for every chunk of data received after the header has arrived. This allows streaming data to somewhere else; hence `stream' mode. In this mode CALLBACK's `data' argument is a single chunk of the stream or `:done' when the stream ends. The default MODE is `batch' which collects all the data from the response before calling CALLBACK with all the data as a string. (fn METHOD CALLBACK &key URL (HOST "localhost") (PORT 80) SECURE (PATH "/") EXTRA-HEADERS DATA (MIME-TYPE web/request-mimetype) (MODE \='batch) LOGGING) (defalias 'web-http-call #[642 "\302\303\"A@\302\304\"\206\305A@\302\306\"\206\307A@\302\310\"A@\302\311\"\206(\312A@\302\313\"A@\302\314\"A@\302\315\"\206C\316DA@\302 \317\"\206N\320A@\302\n\321\"A@\n\211\203\204\211@\322>\203l\211AA\262\202Y\323\f>A@\203{\316\262\202Y\324\325@\"\210\202Y\210\211\203\216\326\n!\210\206\223\327\330 \203\236 \202\261\331\332\n\203\251\333\202\252\334  \f%!\335! >\204\301\336\337\340D\"\210\211\341H\334\232\204\335! >\204\330\336\337\340D\"\210\211\341H\333\232\204\342\343\344\335! >\204\363\336\337\340D\"\210\341H\334\232\335! >\204\336\337\340D\"\210\341H\333\232D\316$\210\335! >\204 \336\337\340D\"\210\211\345H\335! >\2043\336\337\340D\"\210\211\346H\206c\335! >\204H\336\337\340D\"\210\211\341H\205c\347\335! >\204^\336\337\340D\"\210\341H\350\"\262\335! >\204t\336\337\340D\"\210\351H\211\352\232\203\201\353\202\202\211\262\331\354$\355!\356\331\357\"\360\335\f! >\204\251\336\337\340D\"\210 \341H\334\232\203\266\361\202\321\335\f! >\204\307\336\337\340D\"\210 \341H\333\232\205\321\362&\363\364\211#\210\365\366\367\f\"\"\210\370\366\371\f#\"\210\n9\203\370\n\202\374\372 !\211\373\267\202\374 !\202\375 !\202\f\376$\206\352\331\377 \f\2032\2023\352&\201@\201A\331\201B \"#\210\201@\201C#\210\201@\201D#\210\f\203b\326!\210\201E\"\266\207" [web/request-mimetype cl-struct-url-tags plist-member :url :host (nil "localhost") :port (nil 80) :secure :path (nil "/") :extra-headers :data :mime-type nil :mode (nil batch) :logging (:url :host :port :secure :path :extra-headers :data :mime-type :mode :logging :allow-other-keys) :allow-other-keys error "Keyword argument %s not one of (:url :host :port :secure :path :extra-headers :data :mime-type :mode :logging)" web/log batch url-generic-parse-url format "%s://%s:%d%s" "https" "http" type-of signal wrong-type-argument url 1 cl--assertion-failed (or (equal (url-type parsed-url) "http") (equal (url-type parsed-url) "https")) "The url scheme must be http" 4 5 url-scheme-get-property default-port 6 "" "/" "%s:%s%s" generate-new-buffer open-network-stream "web-http-post-%s" :type plain tls set-process-coding-system raw-text-unix set-process-sentinel make-closure #[514 "\301\300#\207" [V0 web/http-post-sentinel-with-logging] 6 "\n\n(fn CON EVT)"] set-process-filter #[514 "\301\300\302$\207" [V0 V1 web/http-post-filter] 9 "\n\n(fn CON DATA)"] intern #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (quote 514 multipart/form-data 514 application/x-www-form-urlencoded 521)) web-to-multipart web-to-query-string web/header-string "%s %s HTTP/1.1 \nHost: %s \n%s \n%s" process-put :web-url "http://%s" :web-headers :web-sent process-send-string] 31 (#$ . 11696)]) #@324 Make a GET calling CALLBACK with the result. For information on URL or PATH, HOST, PORT and also EXTRA-HEADERS and MODE see `web-http-call'. The callback probably won't work unless you set `lexical-binding' to `t'. (fn CALLBACK &key URL (HOST "localhost") (PORT 80) (PATH "/") EXTRA-HEADERS (MODE \='batch) (LOGGING t)) (defalias 'web-http-get #[385 "\300\301\"A@\300\302\"\206\303A@\300\304\"\206\305A@\300\306\"\206\"\307A@\300\310\"A@\300\311\"\2063\312A@\300\313\"\206>\314A@\211\203m\211@\315>\203U\211AA\262\202B\316 >A@\203d\317\262\202B\320\321@\"\210\202B\210\322\323\n\301\n\302 \304\f\306 \310\311\313&\207" [plist-member :url :host (nil "localhost") :port (nil 80) :path (nil "/") :extra-headers :mode (nil batch) :logging (nil t) (:url :host :port :path :extra-headers :mode :logging :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:url :host :port :path :extra-headers :mode :logging)" web-http-call "GET"] 26 (#$ . 16730)]) #@346 Make a POST and call CALLBACK with the result. For information on URL or PATH, HOST, PORT and also MODE see `web-http-call'. The callback probably won't work unless you set `lexical-binding' to `t'. (fn CALLBACK &key URL (HOST "localhost") (PORT 80) (PATH "/") EXTRA-HEADERS DATA (MIME-TYPE web/request-mimetype) (MODE \='batch) (LOGGING t)) (defalias 'web-http-post #[385 "\301\302\"A@\301\303\"\206\304A@\301\305\"\206\306A@\301\307\"\206\"\310A@\301\311\"A@\301\312\"A@\301\313\"\206<\314DA@\301\315\"\206G\316A@\301 \317\"\206R\320A@ \211\203\201\211@\321>\203i\211AA\262\202V\322 >A@\203x\314\262\202V\323\324@\"\210\202V\210\325\326\f\302\f\303 \305\307\311\312\313\317\315&\207" [web/request-mimetype plist-member :url :host (nil "localhost") :port (nil 80) :path (nil "/") :extra-headers :data :mime-type nil :mode (nil batch) :logging (nil t) (:url :host :port :path :extra-headers :data :mime-type :mode :logging :allow-other-keys) :allow-other-keys error "Keyword argument %s not one of (:url :host :port :path :extra-headers :data :mime-type :mode :logging)" web-http-call "POST"] 32 (#$ . 17751)]) #@47 List of mimetypes that we use to accept JSON. (defvar web-json-expected-mimetypes-list '("application/json" "application/x-javascript" "text/javascript" "text/x-javascript" "text/x-json") (#$ . 18921)) #@87 Default expectation callback for JSON expectation errors. (fn DATA HTTP-CON HEADERS) (defalias 'web-json-default-expectation-failure #[771 "\300\301$\207" [error "web-json failed to read %S as json with %s and %s"] 8 (#$ . 19129)]) #@174 Parse DATA as JSON and return the result. (fn JSON-CANDIDATE-DATA &key (JSON-ARRAY-TYPE json-array-type) (JSON-OBJECT-TYPE json-object-type) (JSON-KEY-TYPE json-key-type)) (defalias 'web/json-parse #[385 "\303\304\"\206\n\305DA@\303\306\"\206\305 DA@\303\307\"\206$\305\nDA@\211\211\203R\211@\310>\203;\211AA\262\202(\311>A@\203I\305\262\202(\312\313@\"\210\202(\210\314!+\207" [json-array-type json-object-type json-key-type plist-member :json-array-type nil :json-object-type :json-key-type (:json-array-type :json-object-type :json-key-type :allow-other-keys) :allow-other-keys error "Keyword argument %s not one of (:json-array-type :json-object-type :json-key-type)" json-read-from-string] 6 (#$ . 19372)]) #@1136 POST DATA to URL expecting a JSON response sent to CALLBACK. See `web-json-expected-mimetypes-list' for the list of Mime Types we accept JSON for. This may be let bound. If the expectation is not met then EXPECTATION-FAILURE-CALLBACK is called being passed the CALLBACK parameters. By default EXPECTATION-FAILURE-CALLBACK is `web-json-default-expectation-failure'. The CALLBACK is called as: CALLBACK RESPONSE-DATA HTTPCON RESPONSE-HEADER so the function may be defined like this: (lambda (data &rest stuff) ...) HEADERS may be specified, these are treated as extra-headers to be sent with the request. The DATA is sent as `application/x-www-form-urlencoded' by default, MIME-TYPE can change that. JSON-ARRAY-TYPE, JSON-OBJECT-TYPE and JSON-KEY-TYPE, if present, are used to let bind the `json-read' variables of the same name affecting the resulting lisp structure. (fn CALLBACK &key URL DATA HEADERS (MIME-TYPE web/request-mimetype) (LOGGING t) (JSON-ARRAY-TYPE json-array-type) (JSON-OBJECT-TYPE json-object-type) (JSON-KEY-TYPE json-key-type) (EXPECTATION-FAILURE-CALLBACK \='web-json-default-expectation-failure)) (defalias 'web-json-post #[385 "\304\305\"A@\304\306\"A@\304\307\"A@\304\310\"\206\311DA@\304\312\"\206&\313A@\304\314\"\2063\311 DA@\304\315\"\206A\311\nDA@\304\316\"\206O\311 DA@\304\317\"\206[\320A@\211\203\212\211@\321>\203r\211AA\262\202_\322>A@\203\201\311\262\202_\323\324@\"\210\202_\210 \n \325\326\327 &\305 \306\f\310\f\330\312& \266\203+\207" [web/request-mimetype json-array-type json-object-type json-key-type plist-member :url :data :headers :mime-type nil :logging (nil t) :json-array-type :json-object-type :json-key-type :expectation-failure-callback (nil web-json-default-expectation-failure) (:url :data :headers :mime-type :logging :json-array-type :json-object-type :json-key-type :expectation-failure-callback :allow-other-keys) :allow-other-keys error "Keyword argument %s not one of (:url :data :headers :mime-type :logging :json-array-type :json-object-type :json-key-type :expectation-failure-callback)" web-http-post make-closure #[771 "\3061\307\310\303\311\304\312\305&0\202\"\301\203\313\314\"\210\302#\262\300#\207" [V0 V1 V2 V3 V4 V5 (error) web/json-parse :json-array-type :json-object-type :json-key-type message "web-json-post expectation failure %S"] 11 "\n\n(fn HTTPCON HEADER HTTP-DATA)"] :extra-headers] 23 (#$ . 20115)]) #@42 History for `web-get' interactive forms. (defvar web-get-history-list nil (#$ . 22589)) #@67 Get the specified URL into the BUFFER. (fn URL &optional BUFFER) (defalias 'web-get #[513 "\300\301\"\302\303#\207" [make-closure #[771 "r\301\300!\203 \300\202\300;\203\302\300!\202\302\303!q\210db\210\211c\210\304p!)\207" [V0 bufferp generate-new-buffer "*web-get*" switch-to-buffer] 5 "\n\n(fn HTTPC HEADER DATA)"] web-http-get :url] 7 (#$ . 22683) (byte-code "\301 \302\303\304\211\305%\262\205\306\307\310\"D\207" [current-prefix-arg browse-url-url-at-point read-from-minibuffer "URL: " nil web-get-history-list read-buffer "Buffer: " ("*web-get*")] 7)]) #@61 Look up NAME in HEADER. (fn HEADER NAME &optional CONVERT) (defalias 'web-header #[770 "\300!\203\301\302!\"\211\205B\262\202\303\"\211\205,\304=\203+\305A!\207\211\207" [hash-table-p gethash intern assoc :num string-to-number] 6 (#$ . 23265)]) (provide 'web)