Mercurial > repos > tabletprog
view modules/http.tp @ 154:6e579a75a0a9
Add JSON parser and sample
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 10 Aug 2013 11:51:47 -0700 |
parents | 075b1e71feff |
children | 55e0dca7d3d7 |
line wrap: on
line source
#{ client:usingPort <- :address :port{ #{ get <- :path { sock <- socket connectTo: address onPort: port sock send: "GET " . path . " HTTP/1.1\r\nHost: " . address . "\r\n\r\n" resp <- "" waiting <- true headerText <- "" rest <- "" while: { waiting } do: { data <- sock recv 4096 resp <- resp . data pos <- resp find: "\r\n\r\n" else: { -1 } if: pos >= 0 { waiting <- false headerText <- resp from: 0 withLength: pos rest <- resp from: pos + 4 } } print: "Headers:\n" . headerText . "\n" print: "Rest:\n" . rest . "\n" _headers <- (headerText split: "\r\n") fold: (dict linear) with: :acc curLine{ //TODO: support multiple headers with the same name part <- curLine partitionOn: ":" acc set: (part before) (trim: (part after)) } _closed <- false #{ } sock close rest } } } client <- :address { client: address usingPort: 80 } }