added url fetching
This commit is contained in:
parent
68cd4b57da
commit
c7378e2ae0
26
fetch.go
Normal file
26
fetch.go
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
package hmm
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Lines returns a chan containing one line of output from the remote url.
|
||||||
|
func Lines(url string) <-chan string {
|
||||||
|
r := make(chan string)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
defer close(r)
|
||||||
|
resp, err := http.Get(url)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s := bufio.NewScanner(resp.Body)
|
||||||
|
for s.Scan() {
|
||||||
|
r <- s.Text()
|
||||||
|
}
|
||||||
|
// ignore errors
|
||||||
|
}()
|
||||||
|
|
||||||
|
return r
|
||||||
|
}
|
27
fetch_test.go
Normal file
27
fetch_test.go
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package hmm
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
type dummy struct{}
|
||||||
|
|
||||||
|
func (d *dummy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
for i := 0; i < 10; i++ {
|
||||||
|
fmt.Fprintf(w, "here is a line: %d\n", i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFetch(t *testing.T) {
|
||||||
|
ts := httptest.NewServer(&dummy{})
|
||||||
|
i := 0
|
||||||
|
for range Lines(ts.URL) {
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
if got, want := i, 10; got != want {
|
||||||
|
t.Fatalf("got %d, want %d", got, want)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user