Skip to content

Commit d455753

Browse files
committed
Client requires explicit userame for geonames portal
1 parent e32fab2 commit d455753

File tree

7 files changed

+16
-37
lines changed

7 files changed

+16
-37
lines changed

README.md

+3-5
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,15 @@ import github.com/qba73/geonames
2424

2525
Export ENV Var ```GEONAMES_USER```
2626
```go
27-
client, err := geonames.NewClient()
27+
client, err := geonames.NewClient(os.Getenv("GEONAMES_USER"))
2828
if err != nil {
2929
// handle error
3030
}
3131
```
3232

33-
Provide username :
33+
Provide username directly:
3434
```go
35-
client, err := geonames.NewClient(
36-
geonames.WithUserName("dummy_user")
37-
)
35+
client, err := geonames.NewClient("dummy_user")
3836
if err != nil {
3937
// handle error
4038
}

examples/postal/main.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ package main
33
import (
44
"fmt"
55
"log"
6+
"os"
67

78
"github.com/qba73/geonames"
89
)
910

1011
func main() {
1112
// We exported valid "GEONAMES_USER" env var
12-
geo, err := geonames.NewClient()
13+
geo, err := geonames.NewClient(os.Getenv("GEONAMES_USER"))
1314
if err != nil {
1415
panic(err)
1516
}

examples/wikipedia/main.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ package main
33
import (
44
"fmt"
55
"log"
6+
"os"
67

78
"github.com/qba73/geonames"
89
)
910

1011
func main() {
1112
// We exported valid "GEONAMES_USER" env var
12-
geo, err := geonames.NewClient()
13+
geo, err := geonames.NewClient(os.Getenv("GEONAMES_USER"))
1314
if err != nil {
1415
panic(err)
1516
}

geonames.go

+5-14
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"fmt"
88
"io"
99
"net/http"
10-
"os"
1110
"time"
1211
)
1312

@@ -48,16 +47,6 @@ func WithHTTPHeaders(header http.Header) option {
4847
}
4948
}
5049

51-
func WithUserName(username string) option {
52-
return func(c *Client) error {
53-
if username == "" {
54-
return errors.New("nil username")
55-
}
56-
c.userName = username
57-
return nil
58-
}
59-
}
60-
6150
// Client is a client used for communicating with GeoNames web service.
6251
type Client struct {
6352
userName string
@@ -72,9 +61,12 @@ type Client struct {
7261
// NewClient knows how to create a client for GeoNames Web service.
7362
// The username has to be registered at the GeoNames.org website.
7463
// HTTP requests without a valid username will return 403 HTTP errors.
75-
func NewClient(options ...option) (*Client, error) {
64+
func NewClient(username string, options ...option) (*Client, error) {
65+
if username == "" {
66+
return nil, errors.New("nil geonames user")
67+
}
7668
c := Client{
77-
userName: os.Getenv("GEONAMES_USER"),
69+
userName: username,
7870
userAgent: userAgent,
7971
baseURL: "http://api.geonames.org",
8072
httpClient: &http.Client{
@@ -84,7 +76,6 @@ func NewClient(options ...option) (*Client, error) {
8476
"User-Agent": {userAgent},
8577
"Content-Type": {"application/json"}},
8678
}
87-
8879
for _, opt := range options {
8980
if err := opt(&c); err != nil {
9081
return nil, fmt.Errorf("creating geonames client: %w", err)

geonames_test.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,7 @@ func TestWikipediaResolvesGeoNameOnValidInput(t *testing.T) {
6969
defer ts.Close()
7070

7171
name, country := "Castlebar", "IE"
72-
client, err := geonames.NewClient(
73-
geonames.WithUserName("DummyUser"),
74-
geonames.WithBaseURL(ts.URL),
75-
)
72+
client, err := geonames.NewClient("DummyUser", geonames.WithBaseURL(ts.URL))
7673
if err != nil {
7774
t.Fatal(err)
7875
}

postal_test.go

+2-8
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ func TestGetPostalCodes_ReturnsSingleValueOnValidInput(t *testing.T) {
1818
)
1919
defer ts.Close()
2020

21-
client, err := geonames.NewClient(
22-
geonames.WithUserName("DummyUser"),
23-
geonames.WithBaseURL(ts.URL),
24-
)
21+
client, err := geonames.NewClient("DummyUser", geonames.WithBaseURL(ts.URL))
2522
if err != nil {
2623
t.Fatal(err)
2724
}
@@ -64,10 +61,7 @@ func TestGetPostalCodes_ReturnsMultipleValuesOnValidInput(t *testing.T) {
6461
)
6562
defer ts.Close()
6663

67-
client, err := geonames.NewClient(
68-
geonames.WithUserName("DummyUser"),
69-
geonames.WithBaseURL(ts.URL),
70-
)
64+
client, err := geonames.NewClient("DummyUser", geonames.WithBaseURL(ts.URL))
7165
if err != nil {
7266
t.Fatal(err)
7367
}

wikipedia_test.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@ func TestGetPlace_RetrievesSingleGeoNameOnValidInput(t *testing.T) {
1515
ts := newTestServer(testFile, wantReqURI, t)
1616
defer ts.Close()
1717

18-
client, err := geonames.NewClient(
19-
geonames.WithUserName("DummyUser"),
20-
geonames.WithBaseURL(ts.URL),
21-
)
18+
client, err := geonames.NewClient("DummyUser", geonames.WithBaseURL(ts.URL))
2219
if err != nil {
2320
t.Fatal(err)
2421
}

0 commit comments

Comments
 (0)