39 lines
648 B
Go
39 lines
648 B
Go
package fetch
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"net/http"
|
|
)
|
|
|
|
type Fetch struct {
|
|
process func(string, []byte) error
|
|
client *http.Client
|
|
}
|
|
|
|
func New(process func(string, []byte) error) (*Fetch, error) {
|
|
return &Fetch{
|
|
process: process,
|
|
client: &http.Client{},
|
|
}, nil
|
|
}
|
|
|
|
func (fetcher *Fetch) FetchProcess(url string) error {
|
|
req, err := http.NewRequest("GET", url, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
resp, err := fetcher.client.Do(req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer resp.Body.Close()
|
|
b, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := fetcher.process(url, b); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|