Skip to content

Commit fdcd40d

Browse files
committed
Switch to v3 api
1 parent b8027a7 commit fdcd40d

File tree

8 files changed

+26
-45
lines changed

8 files changed

+26
-45
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ You can get it by signing up at https://detectlanguage.com
1313
## Installation
1414

1515
```
16-
go get -u github.com/detectlanguage/detectlanguage-go@v1.0.1
16+
go get -u github.com/detectlanguage/detectlanguage-go@v2.0.0
1717
```
1818

1919
### Configuration

user.go renamed to account.go

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

33
// UserStatusResponse is the resource containing account status information
4-
type UserStatusResponse struct {
4+
type AccountStatusResponse struct {
55
Date string `json:"date,omitempty"`
66
Requests int `json:"requests"`
77
Bytes int `json:"bytes"`
@@ -13,7 +13,7 @@ type UserStatusResponse struct {
1313
}
1414

1515
// UserStatus fetches account status
16-
func (c *Client) UserStatus() (out *UserStatusResponse, err error) {
17-
err = c.get(nil, "user/status", &out)
16+
func (c *Client) AccountStatus() (out *AccountStatusResponse, err error) {
17+
err = c.get(nil, "account/status", &out)
1818
return
1919
}

user_test.go renamed to account_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
"github.com/stretchr/testify/assert"
77
)
88

9-
func TestUserStatus(t *testing.T) {
10-
response, err := client.UserStatus()
9+
func TestAccountStatus(t *testing.T) {
10+
response, err := client.AccountStatus()
1111

1212
if assert.NoError(t, err) {
1313
assert.NotEmpty(t, response.Date)

client.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"context"
66
"encoding/json"
77
"io"
8-
"io/ioutil"
98
"net/http"
109
"net/url"
1110
"time"
@@ -16,7 +15,7 @@ const defaultUserAgent = "detectlanguage-go/" + Version
1615
const defaultTimeout = 10 * time.Second
1716

1817
var apiBaseURL = &url.URL{
19-
Scheme: "https", Host: "ws.detectlanguage.com", Path: "/0.2/",
18+
Scheme: "https", Host: "ws.detectlanguage.com", Path: "/v3/",
2019
}
2120

2221
// A Client provides an HTTP client for DetectLanguage API operations.
@@ -70,9 +69,9 @@ func (c *Client) setBody(req *http.Request, in interface{}) error {
7069
if err != nil {
7170
return err
7271
}
73-
req.Body = ioutil.NopCloser(bytes.NewReader(buf))
72+
req.Body = io.NopCloser(bytes.NewReader(buf))
7473
req.GetBody = func() (io.ReadCloser, error) {
75-
return ioutil.NopCloser(bytes.NewReader(buf)), nil
74+
return io.NopCloser(bytes.NewReader(buf)), nil
7675
}
7776
req.Header.Set("Content-Type", "application/json")
7877
req.ContentLength = int64(len(buf))
@@ -107,7 +106,7 @@ func (c *Client) do(ctx context.Context, method, path string, in, out interface{
107106
return nil
108107
}
109108

110-
buf, _ := ioutil.ReadAll(res.Body)
109+
buf, _ := io.ReadAll(res.Body)
111110
apiErr := &APIError{Status: res.Status, StatusCode: res.StatusCode}
112111
if json.Unmarshal(buf, &apiErrorResponse{Error: apiErr}) != nil {
113112
apiErr.Message = string(buf)

detect.go

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,33 @@
11
package detectlanguage
22

3+
import "context"
4+
35
// DetectRequest contains language detection request params
46
type DetectRequest struct {
57
Query string `json:"q"`
68
}
79

8-
// DetectResponse is a resource containing language detection response
9-
type DetectResponse struct {
10-
Data *DetectResponseData `json:"data"`
11-
}
12-
13-
// DetectResponseData contains language detection response data
14-
type DetectResponseData struct {
15-
Detections []*DetectionResult `json:"detections"`
16-
}
17-
1810
// DetectionResult is single language detection result
1911
type DetectionResult struct {
20-
Language string `json:"language"`
21-
Reliable bool `json:"isReliable"`
22-
Confidence float32 `json:"confidence"`
12+
Language string `json:"language"`
13+
Score float64 `json:"score"`
2314
}
2415

2516
// DetectBatchRequest contains batch language detection request params
2617
type DetectBatchRequest struct {
2718
Query []string `json:"q"`
2819
}
2920

30-
// DetectBatchResponse is a resource batch containing language detection response
31-
type DetectBatchResponse struct {
32-
Data *DetectBatchResponseData `json:"data"`
33-
}
34-
35-
// DetectBatchResponseData contains batch language detection response data
36-
type DetectBatchResponseData struct {
37-
Detections [][]*DetectionResult `json:"detections"`
38-
}
39-
4021
// Detect executes language detection for a single text
4122
func (c *Client) Detect(in string) (out []*DetectionResult, err error) {
42-
var response DetectResponse
43-
err = c.post(nil, "detect", &DetectRequest{Query: in}, &response)
23+
var response []*DetectionResult
24+
err = c.post(context.TODO(), "detect", &DetectRequest{Query: in}, &response)
4425

4526
if err != nil {
4627
return nil, err
4728
}
4829

49-
return response.Data.Detections, err
30+
return response, err
5031
}
5132

5233
// DetectCode executes language detection for a single text and returns detected language code
@@ -67,12 +48,12 @@ func (c *Client) DetectCode(in string) (out string, err error) {
6748
// DetectBatch executes language detection with multiple texts.
6849
// It is significantly faster than doing a separate request for each text indivdually.
6950
func (c *Client) DetectBatch(in []string) (out [][]*DetectionResult, err error) {
70-
var response DetectBatchResponse
71-
err = c.post(nil, "detect", &DetectBatchRequest{Query: in}, &response)
51+
var response [][]*DetectionResult
52+
err = c.post(nil, "detect-batch", &DetectBatchRequest{Query: in}, &response)
7253

7354
if err != nil {
7455
return nil, err
7556
}
7657

77-
return response.Data.Detections, err
58+
return response, err
7859
}

detect_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ func TestDetect(t *testing.T) {
1111

1212
if assert.NoError(t, err) {
1313
assert.Equal(t, "lt", detections[0].Language)
14-
assert.True(t, detections[0].Reliable)
15-
assert.Greater(t, detections[0].Confidence, float32(0))
14+
assert.Greater(t, detections[0].Score, float64(0))
1615
}
1716
}
1817

@@ -25,7 +24,7 @@ func TestDetectCode(t *testing.T) {
2524
}
2625

2726
func TestDetectCodeFailure(t *testing.T) {
28-
code, err := client.DetectCode("")
27+
code, err := client.DetectCode(" ")
2928

3029
assert.EqualError(t, err, "Language not detected")
3130
assert.Equal(t, code, "")

languages.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package detectlanguage
22

3+
import "context"
4+
35
// Language is the resource representing language
46
type Language struct {
57
Code string `json:"code"`
@@ -8,6 +10,6 @@ type Language struct {
810

911
// Languages retrieves the list of supported languages
1012
func (c *Client) Languages() (out []*Language, err error) {
11-
err = c.get(nil, "languages", &out)
13+
err = c.get(context.TODO(), "languages", &out)
1214
return
1315
}

version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
package detectlanguage
22

33
// Version is the API client version
4-
const Version = "1.0.1"
4+
const Version = "2.0.0"

0 commit comments

Comments
 (0)