Skip to content

Commit 920883c

Browse files
authored
Merge pull request #41 from planetlabs/bigger-pages
Bigger pages
2 parents 65c4006 + dfb9e15 commit 920883c

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed

crawler/crawler.go

+2
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ func (c *crawler) crawlResource(worker *workgroup.Worker[*Task], resourceUrl str
353353
if err != nil {
354354
return c.errorHandler(err)
355355
}
356+
linkLoc.SetQueryParam("limit", "250")
356357
return worker.Add(&Task{Url: linkLoc.String(), Type: featuresTask})
357358
}
358359
}
@@ -413,6 +414,7 @@ func (c *crawler) crawlCollections(worker *workgroup.Worker[*Task], collectionsU
413414
if itemsLinkErr != nil {
414415
return c.errorHandler(itemsLinkErr)
415416
}
417+
itemsLinkLoc.SetQueryParam("limit", "250")
416418
addErr := worker.Add(&Task{Url: itemsLinkLoc.String(), Type: featuresTask})
417419
if addErr != nil {
418420
return addErr

internal/normurl/normurl.go

+13
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,19 @@ func (l *Locator) String() string {
1717
return l.url.String()
1818
}
1919

20+
func (l *Locator) SetQueryParam(param string, value string) {
21+
if l.isFilepath {
22+
return
23+
}
24+
query := l.url.Query()
25+
if value != "" {
26+
query.Set(param, value)
27+
} else {
28+
query.Del(param)
29+
}
30+
l.url.RawQuery = query.Encode()
31+
}
32+
2033
func (l *Locator) IsFilepath() bool {
2134
return l.isFilepath
2235
}

internal/normurl/normurl_test.go

+66
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package normurl_test
33
import (
44
"errors"
55
"fmt"
6+
"net/url"
67
"testing"
78

89
"github.com/planetlabs/go-stac/internal/normurl"
@@ -63,6 +64,71 @@ func TestNew(t *testing.T) {
6364
}
6465
}
6566

67+
func TestSetQueryParam(t *testing.T) {
68+
cases := []struct {
69+
input string
70+
key string
71+
value string
72+
expected string
73+
}{
74+
{
75+
input: "https://example.com",
76+
key: "foo",
77+
value: "bar",
78+
expected: "https://example.com?foo=bar",
79+
},
80+
{
81+
input: "https://example.com?foo=bar",
82+
key: "baz",
83+
value: "qux",
84+
expected: "https://example.com?foo=bar&baz=qux",
85+
},
86+
{
87+
input: "https://example.com?foo=bar&baz=qux",
88+
key: "baz",
89+
value: "bam",
90+
expected: "https://example.com?foo=bar&baz=bam",
91+
},
92+
{
93+
input: "https://example.com?foo=bar&baz=qux",
94+
key: "baz",
95+
value: "",
96+
expected: "https://example.com?foo=bar",
97+
},
98+
{
99+
input: "https://example.com?foo=bar",
100+
key: "baz",
101+
value: "",
102+
expected: "https://example.com?foo=bar",
103+
},
104+
{
105+
input: "/path/to/file",
106+
key: "foo",
107+
value: "bar",
108+
expected: "/path/to/file",
109+
},
110+
}
111+
112+
for i, c := range cases {
113+
t.Run(fmt.Sprintf("case %d", i), func(t *testing.T) {
114+
l, err := normurl.New(c.input)
115+
require.NoError(t, err)
116+
117+
l.SetQueryParam(c.key, c.value)
118+
119+
expUrl, err := url.Parse(c.expected)
120+
require.NoError(t, err)
121+
expQuery := expUrl.Query()
122+
123+
gotUrl, err := url.Parse(l.String())
124+
require.NoError(t, err)
125+
gotQuery := gotUrl.Query()
126+
127+
assert.Equal(t, expQuery, gotQuery)
128+
})
129+
}
130+
}
131+
66132
func TestResolve(t *testing.T) {
67133
cases := []struct {
68134
base string

0 commit comments

Comments
 (0)