Skip to content

Commit 669236a

Browse files
committed
refactor: use a common function to send a GET request
1 parent b9029e6 commit 669236a

13 files changed

+45
-121
lines changed

internal/testutils/testutils.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ func MustExtractAPITokenFromEnv() string {
1313
return apiToken
1414
}
1515

16-
1716
// ToStringPtr returns a pointer to the given string.
1817
func ToStringPtr(s string) *string {
1918
return &s
20-
}
19+
}

method_get.go

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,14 @@
11
package paperswithcode_go
22

33
import (
4-
"encoding/json"
54
"github.com/codingpot/paperswithcode-go/v2/models"
65
)
76

87
// MethodGet returns a method in a paper.
98
// See https://paperswithcode-client.readthedocs.io/en/latest/api/client.html#paperswithcode.client.PapersWithCodeClient.method_list
109
func (c *Client) MethodGet(methodID string) (*models.Method, error) {
1110
url := c.baseURL + "/methods/" + methodID
12-
13-
response, err := c.httpClient.Get(url)
14-
if err != nil {
15-
return nil, err
16-
}
17-
1811
var result models.Method
19-
20-
err = json.NewDecoder(response.Body).Decode(&result)
21-
if err != nil {
22-
return nil, err
23-
}
24-
25-
return &result, nil
26-
}
12+
err := c.sendGetRequest(url, &result)
13+
return &result, err
14+
}

method_get_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,4 @@ func TestClient_MethodGet(t *testing.T) {
4040
assert.Equal(t, tt.want, got)
4141
})
4242
}
43-
}
43+
}

method_list.go

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package paperswithcode_go
22

33
import (
4-
"encoding/json"
54
"fmt"
65
"github.com/codingpot/paperswithcode-go/v2/models"
76
)
@@ -19,18 +18,7 @@ func (m MethodListParams) String() string {
1918

2019
func (c *Client) MethodList(params MethodListParams) (*models.MethodList, error) {
2120
url := c.baseURL + "/methods?" + params.String()
22-
23-
response, err := c.httpClient.Get(url)
24-
if err != nil {
25-
return nil, err
26-
}
27-
2821
var listResult models.MethodList
29-
30-
err = json.NewDecoder(response.Body).Decode(&listResult)
31-
if err != nil {
32-
return nil, err
33-
}
34-
35-
return &listResult, nil
36-
}
22+
err := c.sendGetRequest(url, &listResult)
23+
return &listResult, err
24+
}

method_list_test.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,22 @@ func TestClient_MethodList(t *testing.T) {
2020
ItemsPerPage: 2,
2121
},
2222
want: &models.MethodList{
23-
Count: 1129,
2423
Next: toPtr("https://paperswithcode.com/api/v1/methods/?items_per_page=2&page=2"),
2524
Previous: nil,
2625
Results: []*models.Method{
2726
{
28-
ID: "1cycle",
29-
Name: "1cycle",
30-
FullName: "1cycle learning rate scheduling policy",
27+
ID: "1cycle",
28+
Name: "1cycle",
29+
FullName: "1cycle learning rate scheduling policy",
3130
Description: "",
32-
Paper: toPtr("a-disciplined-approach-to-neural-network"),
31+
Paper: toPtr("a-disciplined-approach-to-neural-network"),
3332
},
3433
{
35-
ID: "1d-cnn",
36-
Name: "1D CNN",
37-
FullName: "1-Dimensional Convolutional Neural Networks",
34+
ID: "1d-cnn",
35+
Name: "1D CNN",
36+
FullName: "1-Dimensional Convolutional Neural Networks",
3837
Description: "1D Convolutional Neural Networks are similar to well known and more established 2D Convolutional Neural Networks. 1D Convolutional Neural Networks are used mainly used on text and 1D signals.",
39-
Paper: toPtr("convolutional-neural-network-and-rule-based"),
38+
Paper: toPtr("convolutional-neural-network-and-rule-based"),
4039
},
4140
},
4241
},
@@ -54,11 +53,14 @@ func TestClient_MethodList(t *testing.T) {
5453
assert.NoError(t, err)
5554
}
5655

56+
// we don't want to test count values as it's changing.
57+
tt.want.Count = got.Count
58+
5759
assert.Equal(t, tt.want, got)
5860
})
5961
}
6062
}
6163

6264
func toPtr(s string) *string {
6365
return &s
64-
}
66+
}

paper_get.go

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,14 @@
11
package paperswithcode_go
22

33
import (
4-
"encoding/json"
54
"fmt"
65
"github.com/codingpot/paperswithcode-go/v2/models"
7-
"net/url"
86
)
97

108
// PaperGet returns a single paper. Note that paperID is hyphen cased (e.g., generative-adversarial-networks).
119
func (c *Client) PaperGet(paperID string) (*models.Paper, error) {
12-
paperGetURL := fmt.Sprintf("%s/papers/%s/", c.baseURL, url.QueryEscape(paperID))
13-
response, err := c.httpClient.Get(paperGetURL)
14-
if err != nil {
15-
return nil, err
16-
}
17-
10+
paperGetURL := fmt.Sprintf("%s/papers/%s/", c.baseURL, paperID)
1811
var paperGetResult models.Paper
19-
err = json.NewDecoder(response.Body).Decode(&paperGetResult)
20-
if err != nil {
21-
return nil, err
22-
}
23-
24-
return &paperGetResult, nil
12+
err := c.sendGetRequest(paperGetURL, &paperGetResult)
13+
return &paperGetResult, err
2514
}

paper_get_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
)
77

88
func TestClient_PaperGet(t *testing.T) {
9-
c := NewClient(WithAPIToken(apiToken))
9+
c := NewClient()
1010
got, err := c.PaperGet("generative-adversarial-networks")
1111
assert.NoError(t, err)
1212
assert.Equal(t, "generative-adversarial-networks", got.ID)

paper_list.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package paperswithcode_go
22

33
import (
4-
"encoding/json"
54
"fmt"
65
"strings"
76

@@ -11,20 +10,9 @@ import (
1110
// PaperList returns multiple papers.
1211
func (c *Client) PaperList(params PaperListParams) (*models.PaperList, error) {
1312
papersListURL := c.baseURL + "/papers?" + params.Build()
14-
15-
response, err := c.httpClient.Get(papersListURL)
16-
if err != nil {
17-
return nil, err
18-
}
19-
2013
var paperListResult models.PaperList
21-
22-
err = json.NewDecoder(response.Body).Decode(&paperListResult)
23-
if err != nil {
24-
return nil, err
25-
}
26-
27-
return &paperListResult, nil
14+
err := c.sendGetRequest(papersListURL, &paperListResult)
15+
return &paperListResult, err
2816
}
2917

3018
// PaperListParams is the parameter for PaperList method.

paper_method_list.go

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,15 @@
11
package paperswithcode_go
22

33
import (
4-
"encoding/json"
54
"fmt"
65
"github.com/codingpot/paperswithcode-go/v2/models"
7-
"net/http"
86
"net/url"
97
)
108

119
// PaperMethodList returns the methods used in the given paper.
1210
func (c *Client) PaperMethodList(paperID string) (*models.MethodList, error) {
1311
pURL := fmt.Sprintf("%s/papers/%s/methods", c.baseURL, url.QueryEscape(paperID))
14-
response, err := http.Get(pURL)
15-
if err != nil {
16-
return nil, err
17-
}
18-
1912
var methodList models.MethodList
20-
err = json.NewDecoder(response.Body).Decode(&methodList)
21-
if err != nil {
22-
return nil, err
23-
}
24-
13+
err := c.sendGetRequest(pURL, &methodList)
2514
return &methodList, err
2615
}

paper_repository_list.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package paperswithcode_go
22

33
import (
4-
"encoding/json"
54
"fmt"
65
"github.com/codingpot/paperswithcode-go/v2/models"
76
"net/url"
@@ -10,16 +9,7 @@ import (
109
// PaperRepositoryList returns repositories related to the given paper.
1110
func (c *Client) PaperRepositoryList(paperID string) (*models.RepositoryList, error) {
1211
paperURL := fmt.Sprintf("%s/papers/%s/repositories", c.baseURL, url.QueryEscape(paperID))
13-
response, err := c.httpClient.Get(paperURL)
14-
if err != nil {
15-
return nil, err
16-
}
17-
1812
var repoList models.RepositoryList
19-
err = json.NewDecoder(response.Body).Decode(&repoList)
20-
if err != nil {
21-
return nil, err
22-
}
23-
24-
return &repoList, nil
13+
err := c.sendGetRequest(paperURL, &repoList)
14+
return &repoList, err
2515
}

paper_result_list.go

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package paperswithcode_go
22

33
import (
4-
"encoding/json"
54
"fmt"
65
"github.com/codingpot/paperswithcode-go/v2/models"
76
"net/url"
@@ -10,17 +9,7 @@ import (
109
// PaperResultList returns the evaluation results of the paper.
1110
func (c *Client) PaperResultList(paperID string) (*models.ResultList, error) {
1211
pURL := fmt.Sprintf("%s/papers/%s/results", c.baseURL, url.QueryEscape(paperID))
13-
14-
resp, err := c.httpClient.Get(pURL)
15-
if err != nil {
16-
return nil, err
17-
}
18-
1912
var paperResultList models.ResultList
20-
err = json.NewDecoder(resp.Body).Decode(&paperResultList)
21-
if err != nil {
22-
return nil, err
23-
}
24-
25-
return &paperResultList, nil
13+
err := c.sendGetRequest(pURL, &paperResultList)
14+
return &paperResultList, err
2615
}

paper_task_list.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package paperswithcode_go
22

33
import (
4-
"encoding/json"
54
"fmt"
65
"github.com/codingpot/paperswithcode-go/v2/models"
76
"net/url"
@@ -10,16 +9,7 @@ import (
109
// PaperTaskList returns tasks (an area of research) for the given paper.
1110
func (c *Client) PaperTaskList(paperID string) (*models.TaskList, error) {
1211
pURL := fmt.Sprintf("%s/papers/%s/tasks/", c.baseURL, url.QueryEscape(paperID))
13-
resp, err := c.httpClient.Get(pURL)
14-
if err != nil {
15-
return nil, err
16-
}
17-
1812
var taskList models.TaskList
19-
err = json.NewDecoder(resp.Body).Decode(&taskList)
20-
if err != nil {
21-
return nil, err
22-
}
23-
24-
return &taskList, nil
13+
err := c.sendGetRequest(pURL, &taskList)
14+
return &taskList, err
2515
}

send_get_request.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package paperswithcode_go
2+
3+
import "encoding/json"
4+
5+
func (c *Client) sendGetRequest(url string, result interface{}) error {
6+
response, err := c.httpClient.Get(url)
7+
if err != nil {
8+
return err
9+
}
10+
11+
return json.NewDecoder(response.Body).Decode(result)
12+
}

0 commit comments

Comments
 (0)