http: return ?string
parent
ba6bcdb469
commit
4a1970a322
|
@ -5,7 +5,10 @@
|
|||
import http
|
||||
|
||||
fn main() {
|
||||
html := http.get('https://news.ycombinator.com')
|
||||
html := http.get('https://news.ycombinator.com') or {
|
||||
println('Failed fetching from URL')
|
||||
return
|
||||
}
|
||||
mut pos := 0
|
||||
for {
|
||||
pos = html.index_after('https://', pos + 1)
|
||||
|
|
|
@ -33,7 +33,10 @@ fn (f mut Fetcher) fetch() {
|
|||
id := f.ids[f.cursor]
|
||||
f.cursor++
|
||||
f.mu.unlock()
|
||||
resp := http.get('https://hacker-news.firebaseio.com/v0/item/${id}.json')
|
||||
resp := http.get('https://hacker-news.firebaseio.com/v0/item/${id}.json') or {
|
||||
println('failed to fetch data from /v0/item/${id}.json')
|
||||
exit(1)
|
||||
}
|
||||
story := json.decode(Story, resp) or {
|
||||
println('failed to decode a story')
|
||||
exit(1)
|
||||
|
@ -48,9 +51,12 @@ fn (f mut Fetcher) fetch() {
|
|||
|
||||
// Fetches top HN stories in 8 coroutines
|
||||
fn main() {
|
||||
resp := http.get('https://hacker-news.firebaseio.com/v0/topstories.json')
|
||||
resp := http.get('https://hacker-news.firebaseio.com/v0/topstories.json') or {
|
||||
println('failed to fetch data from /v0/topstories.json')
|
||||
return
|
||||
}
|
||||
ids := json.decode( []int, resp) or {
|
||||
println('failed to fetch topstories.json')
|
||||
println('failed to decode topstories.json')
|
||||
return
|
||||
}
|
||||
fetcher := &Fetcher{ids: ids}
|
||||
|
|
|
@ -28,23 +28,32 @@ pub:
|
|||
}
|
||||
|
||||
// embed 'http'
|
||||
pub fn get(url string) string {
|
||||
if url == '' {
|
||||
println('http: empty get url')
|
||||
return ''
|
||||
pub fn fetch(typ, url, data string) ?Response {
|
||||
req := new_request('GET', url, '') or {
|
||||
return error(err)
|
||||
}
|
||||
mut req := new_request('GET', url, '')
|
||||
resp := req.do()
|
||||
return resp
|
||||
}
|
||||
|
||||
pub fn get(url string) ?string {
|
||||
resp := fetch('GET', url, '') or {
|
||||
return error(err)
|
||||
}
|
||||
return resp.body
|
||||
}
|
||||
|
||||
pub fn post(url, data string) string {
|
||||
req := new_request('POST', url, data)
|
||||
resp := req.do()
|
||||
pub fn post(url, data string) ?string {
|
||||
resp := fetch('POST', url, data) or {
|
||||
return error(err)
|
||||
}
|
||||
return resp.body
|
||||
}
|
||||
|
||||
pub fn new_request(typ, _url, _data string) *Request {
|
||||
pub fn new_request(typ, _url, _data string) ?Request {
|
||||
if _url == '' {
|
||||
return error('http: empty url')
|
||||
}
|
||||
mut url := _url
|
||||
mut data := _data
|
||||
// req.headers['User-Agent'] = 'V $VERSION'
|
||||
|
@ -54,7 +63,7 @@ pub fn new_request(typ, _url, _data string) *Request {
|
|||
data = ''
|
||||
}
|
||||
// req.headers = new_map(0, sizeof(string))// []string{}
|
||||
return &Request {
|
||||
return Request {
|
||||
typ: typ
|
||||
url: url
|
||||
data: data
|
||||
|
@ -64,12 +73,6 @@ pub fn new_request(typ, _url, _data string) *Request {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
fn (req &Request) do() Response {
|
||||
mut resp := Response{}
|
||||
return resp
|
||||
}
|
||||
*/
|
||||
fn (req mut Request) free() {
|
||||
req.headers.free()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue