GOOF----LE-8-2.0?]4hh] gguile  gdefine-module*   gweb gclient  gfilenameS fweb/client.scm gimportsS grnrs g bytevectors     gice-9 g binary-ports   giconv   grdelim   grequest   gresponse   guri !  "! #ghttp $# %$ &gsrfi 'gsrfi-1 (&' )( *gsrfi-9 +&* ,+ -ggnu .&*- /. 0"%),/  1gexportsS 2gcurrent-http-proxy 3gopen-socket-for-uri 4ghttp-get 5g http-get* 6g http-head 7g http-post 8ghttp-put 9g http-delete :g http-trace ;g http-options <23456789:;  =gset-current-module >= ?= @gmake-parameter Aggetenv Bf http_proxy Cf Dgstring? Eg string->uri Fgerror Gf Invalid URI Hg I!H J!H Kg ensure-uri Lgthrow-bad-struct M+L N+L Oguri-port Pgdelete-duplicates Qg getaddrinfo Rguri-host Sgnumber->string Tgsymbol->string Ug uri-scheme VgAI_NUMERICSERV Wg addrinfo:addr Xg%default-port-encoding Ygsocket Zg addrinfo:fam [g SOCK_STREAM \g IPPROTO_IP ]gcatch ^g system-error _gconnect `gsetvbuf ag_IOFBF bgset-http-proxy-port?! cgclose dgthrow eg  fe ge hg assoc-set! ig copy-tree jg%%-set-fields kgextend-request lgrequest-content-type mg text/plain nm ogassq-ref pgcharset qgsanitize-request rg content-type sgappend ts us vfutf-8 wgstring->bytevector xg procedure? ygcall-with-encoded-output-string zg bytevector? {grequest-content-length |gbytevector-length }fbad content-length ~gcontent-length funexpected body type fcontent-length, but no body gassq gtransfer-encoding grequest-headers f*transfer-encoding not allowed with no body gvu8 j gresponse-content-length gresponse-content-type gtext-content-type? gbytevector->string f iso-8859-1 gdecode-response-body gbodyS   gportS   gmethodS   gversionS   g keep-alive?S   gheadersS   g decode-body?S   g streaming?S   grequestS     gGET  g build-request g connection c g write-request gwrite-request-body g force-output g request-port g read-response grequest-method gHEAD g close-port gresponse-body-port gdecode?S gread-response-body     g extra-headersS    gissue-deprecation-warning fHThe #:extra-headers argument to http-get has been renamed to #:headers.  fPlease update your code.  f"`http-get*' has been deprecated.  fBInstead, use `http-get' with the #:streaming? #t keyword argument. gmake-syntax-transformer   gdefine-http-verb gmacro g $sc-dispatch   gany  g syntax-object gdefine* gtop  gribcage gdummy g http-verb gmethod gdoc  gm-1a596c681-fb   fl-1a596c681-100 fl-1a596c681-101 fl-1a596c681-102 fl-1a596c681-103    gx   fl-1a596c681-fd    ghygiene     gkeyS  gbody    gport  3   gversion  gquote       g keep-alive?   gheaders    g decode-body?    g streaming?                          gsyntax-violation   f-source expression failed to match any pattern        gPOST gPUT gDELETE gTRACE gOPTIONSC5hho-]4   01<54?>"G4@i4AiB5C$"52RDEFGJh@]45$6"6$&C""g uri-or-string  :gfilenamefweb/client.scm =  ?  >   ?   A   A  >  " @  & >  ) @   : gnameg ensure-uriCKR2KJNOPQRSTUVWh|]4545Ctgai1  gai2  gfilenamefweb/client.scm P   Q  Q %  Q    CXYZ[\]^_W`abhPq]4L4L5>"G4L>"GM$4L>"G"LCigfilenamefweb/client.scm Y   Z  Z   Z  ] 5 _ 6 _   O Ccdh0-134L>"GL(@LL6~gargs /gfilenamefweb/client.scm a  c  d  " d ( e  - f  / f  / C h@]Y4455ZLO LO6g addresses  ;gai  ;gs   ;gfilenamefweb/client.scm S   T   T  W   W   W   T  # X ; X   ; gnamegloopCh]!HHH45K4J$J"5KJ& J " 4J544J& J " 4J5$ 4 5"4 J&J " 4J 55$ " 5 5KOQJ6g uri-or-string  g http-proxy  guri   g addresses   gport  B gloop  gfilenamefweb/client.scm C E   F   F  % F  * H  B H  E I  H J  M J  k K  w L | L 0 L M  J  I  S   gnamegopen-socket-for-urig documentationf9Return an open input/output port for a connection to URI.C3RghiNjkhh-13&3   44 55  " 45(C@gr agk agv  ag additional  agr  N agfilenamefweb/client.scm h i " j  % j " , j - . j " 4 j  9 i N i  V l  a n  a  gnamegextend-requestCkRDlnopqkruvwxyz{|F}~gNh]$45$T4545$"44  554 $" 564 5$T4545$"44  554 $" 5645$K4545$$" 45" 45D645$" $"4>"G"<4&  " 455$4>"G"D}grequest  gbody  gtype   ggdeclared-charset  ( ggtype  { gdeclared-charset  grlen  gblen  glength  )  gfilenamefweb/client.scm q         /       $ ' & 2 (  (  2  9 ? # @  H ) I  P Q  [  c ) e  g  h  r  s  y ( {  {  ~  ' 2    #  )    )               -      "  #  )  1  4  9 > B  G T  X  [ ) u  y z ~      T   gnamegsanitize-requestg documentationk0"Sanitize" the given request and body, ensuring that they are complete and coherent. This method is most useful for methods that send data to the server, like POST, but can be used for any method. Return two values: a request and a bytevector, possibly the same ones that were passed as arguments. If BODY is a string, encodes the string to a bytevector, in an encoding appropriate for REQUEST. Adds a  content-length and  content-type header, as necessary. If BODY is a procedure, it is called with a port as an argument, and the output collected as a bytevector. In the future we might try to instead use a compressing, chunk-encoded port, and call this procedure later. Authors are advised not to rely on the procedure being called at any particular time. Note that we rely on the request itself already having been validated, as is the case by default with a request returned by `build-request'.CqRz|opF} h]"$45${4545"D45$245$#45$" 6CC$$"  6"  6Cgresponse  gbody  grlen  ! gblen  ! gt  0 mgt  R egfilenamefweb/client.scm          !  *  0  9  > # @  D I , N 6 P A R , R ( b , g  m  x  |      gnamegdecode-response-bodyCR3KqgNh-/ 0 3## 45###### #-445 $"  5  4  > G  4  5  $4  >"G"4 &  " 4 5>"G45  & " 4 5&!$"4>"G D$ 4 5D4 5$"4>"G $ 4 5"Dguri  gbody  gport   gmethod   gversion   g keep-alive?   gheaders   g decode-body?   g streaming?   grequest  grequest gbody grequest gresponse  gbody  h gfilenamefweb/client.scm #  3  =  O  j  m   ( "               # * ' - 2  H N Q  a b  h p  u       '   gbodyS gportS gmethodS gversionS g keep-alive?S gheadersS g decode-body?S g streaming?S grequestS  gnamegrequestCR3h)-/ 0 3 ## 45####$"##$4>"G"     6!guri  gbody  gport   gversion   g keep-alive?   g extra-headers   gheaders   g decode-body?   g streaming?    gfilenamefweb/client.scm #  3  S / Z A t   u   y   {          gbodyS gportS gversionS g keep-alive?S g extra-headersS gheadersS g decode-body?S g streaming?S  gnameghttp-getg documentationkConnect to the server corresponding to URI and ask for the resource, using the  GET method. If you already have a port open, pass it as PORT. The port will be closed at the end of the request unless KEEP-ALIVE? is true. Any extra headers in the alist HEADERS will be added to the request. If BODY is not  #f , a message body will also be sent with the HTTP request. If BODY is a string, it is encoded according to the content-type in HEADERS, defaulting to UTF-8. Otherwise BODY should be a bytevector, or  #f for no body. Although it's allowed to send a message body along with any request, usually only POST and PUT requests have bodies. See  http-put and  http-post documentation, for more. If DECODE-BODY? is true, as is the default, the body of the response will be decoded to string, if it is a textual content-type. Otherwise it will be returned as a bytevector. However, if STREAMING? is true, instead of eagerly reading the response body from the server, this function only reads off the headers. The response body will be returned as a port on which the data may be read. Unless KEEP-ALIVE? is true, the port will be closed after the full response body has been read. Returns two values: the response read from the server, and the response body as a string, bytevector, #f value, or as a port (if STREAMING? is true).C4R34h-/03## 45####$"#4>"G     6guri  gbody  gport   gversion   g keep-alive?   g extra-headers   gheaders   g decode-body?   gfilenamefweb/client.scm ! # #  3 $  S & 0 Z & B f )  j *  l +  q )  ,   gbodyS gportS gversionS g keep-alive?S g extra-headersS gheadersS g decode-body?S gnameg http-get*g documentationf2Deprecated in favor of (http-get #:streaming? #t).C5R4 h(i]Cagdummy  #g http-verb  #gmethod   #gdoc   #  # Ch(] 45$@6gx  "gtmp "gfilenamefweb/client.scm 0   " g macro-typeg syntax-rulesgpatternsg http-verbgmethodgdocC5R3h-/03## 45#####     6guri  gbody  gport   gversion   g keep-alive?   gheaders   g decode-body?   g streaming?   gfilenamefweb/client.scm @ e A   @    gbodyS gportS gversionS g keep-alive?S gheadersS g decode-body?S g streaming?S gnameg http-headg documentationk@Fetch message headers for the given URI using the HTTP "HEAD" method. This function is similar to  http-get , except it uses the "HEAD" method. See  http-get for full documentation on the various keyword arguments that are accepted by this function. Returns two values: the resulting response, and  #f . Responses to HEAD requests do not have a body. The second value is only returned so that other procedures can treat all of the http-foo verbs identically.C6R3hi-/03## 45#####     6aguri  gbody  gport   gversion   g keep-alive?   gheaders   g decode-body?   g streaming?   gfilenamefweb/client.scm M e N   M    gbodyS gportS gversionS g keep-alive?S gheadersS g decode-body?S g streaming?S gnameg http-postg documentationkPost data to the given URI using the HTTP "POST" method. This function is similar to  http-get , except it uses the "POST" method. See  http-get for full documentation on the various keyword arguments that are accepted by this function. Returns two values: the resulting response, and the response body.C7R3h]-/03## 45#####     6Uguri  gbody  gport   gversion   g keep-alive?   gheaders   g decode-body?   g streaming?   gfilenamefweb/client.scm W e X   W    gbodyS gportS gversionS g keep-alive?S gheadersS g decode-body?S g streaming?S gnameghttp-putg documentationkPut data at the given URI using the HTTP "PUT" method. This function is similar to  http-get , except it uses the "PUT" method. See  http-get for full documentation on the various keyword arguments that are accepted by this function. Returns two values: the resulting response, and the response body.C8R3h-/03## 45#####     6}guri  gbody  gport   gversion   g keep-alive?   gheaders   g decode-body?   g streaming?   gfilenamefweb/client.scm a e b   a    gbodyS gportS gversionS g keep-alive?S gheadersS g decode-body?S g streaming?S gnameg http-deleteg documentationkDelete data at the given URI using the HTTP "DELETE" method. This function is similar to  http-get , except it uses the "DELETE" method. See  http-get for full documentation on the various keyword arguments that are accepted by this function. Returns two values: the resulting response, and the response body.C9R3h-/03## 45#####     6guri  gbody  gport   gversion   g keep-alive?   gheaders   g decode-body?   g streaming?   gfilenamefweb/client.scm k e l   k    gbodyS gportS gversionS g keep-alive?S gheadersS g decode-body?S g streaming?S gnameg http-traceg documentationkdSend an HTTP "TRACE" request. This function is similar to  http-get , except it uses the "TRACE" method. See  http-get for full documentation on the various keyword arguments that are accepted by this function. Returns two values: the resulting response, and the response body.C:R3h-/03## 45#####     6guri  gbody  gport   gversion   g keep-alive?   gheaders   g decode-body?   g streaming?   gfilenamefweb/client.scm u e v   u    gbodyS gportS gversionS g keep-alive?S gheadersS g decode-body?S g streaming?S gnameg http-optionsg documentationk Query characteristics of an HTTP resource using the HTTP "OPTIONS" method. This function is similar to  http-get , except it uses the "OPTIONS" method. See  http-get for full documentation on the various keyword arguments that are accepted by this function. Returns two values: the resulting response, and the response body.C;RC%gm  ,gproxy : Ogfilenamefweb/client.scm  ! - 9  2 9  8 9 ' : 9  : 9  @ : , A :  E :  Q 9  T 8 n =  C & h  q  % = @ ! K @ R M Z W a@ a g k od u   of C6