Skip to content

Commit b47186b

Browse files
committed
[UPD] Add all handlers
1 parent a138dcf commit b47186b

File tree

14 files changed

+428
-0
lines changed

14 files changed

+428
-0
lines changed

api/handler/article.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package handler
2+
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"io"
7+
"net/http"
8+
9+
"github.com/plaenkler/booklooker/api/models"
10+
)
11+
12+
func DeleteArticle(token string, req models.ArticleRequest) (*models.ArticleResponse, error) {
13+
url := baseURL + models.ArticlePath + "?token=" + token
14+
jsonReq, err := json.Marshal(req)
15+
if err != nil {
16+
return nil, err
17+
}
18+
httpReq, err := http.NewRequest("DELETE", url, bytes.NewBuffer(jsonReq))
19+
if err != nil {
20+
return nil, err
21+
}
22+
httpReq.Header.Set("Content-Type", "application/json")
23+
client := &http.Client{}
24+
resp, err := client.Do(httpReq)
25+
if err != nil {
26+
return nil, err
27+
}
28+
defer resp.Body.Close()
29+
jsonResp, err := io.ReadAll(resp.Body)
30+
if err != nil {
31+
return nil, err
32+
}
33+
var articleResp models.ArticleResponse
34+
err = json.Unmarshal(jsonResp, &articleResp)
35+
if err != nil {
36+
return nil, err
37+
}
38+
return &articleResp, nil
39+
}

api/handler/article_list.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package handler
2+
3+
import (
4+
"encoding/json"
5+
"io"
6+
"net/http"
7+
"net/url"
8+
"strconv"
9+
10+
"github.com/plaenkler/booklooker/api/models"
11+
)
12+
13+
func GetArticleList(token string, req models.ArticleListRequest) (*models.ArticleListResponse, error) {
14+
values := url.Values{}
15+
values.Set("field", req.Field)
16+
values.Set("showPrice", strconv.FormatBool(req.ShowPrice))
17+
values.Set("showStock", strconv.FormatBool(req.ShowStock))
18+
values.Set("mediaType", string(req.MediaType))
19+
20+
url := baseURL + models.ArticleListPath + "?token=" + token + "&" + values.Encode()
21+
22+
resp, err := http.Get(url)
23+
if err != nil {
24+
return nil, err
25+
}
26+
defer resp.Body.Close()
27+
jsonResp, err := io.ReadAll(resp.Body)
28+
if err != nil {
29+
return nil, err
30+
}
31+
var articleListResp models.ArticleListResponse
32+
err = json.Unmarshal(jsonResp, &articleListResp)
33+
if err != nil {
34+
return nil, err
35+
}
36+
return &articleListResp, nil
37+
}

api/handler/article_status.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package handler
2+
3+
import (
4+
"encoding/json"
5+
"io"
6+
"net/http"
7+
8+
"github.com/plaenkler/booklooker/api/models"
9+
)
10+
11+
func GetArticleStatus(token string, req models.ArticleStatusRequest) (*models.ArticleStatusResponse, error) {
12+
url := baseURL + models.ArticleStatusPath + "?token=" + token + "&orderNo=" + req.OrderNo
13+
resp, err := http.Get(url)
14+
if err != nil {
15+
return nil, err
16+
}
17+
defer resp.Body.Close()
18+
jsonResp, err := io.ReadAll(resp.Body)
19+
if err != nil {
20+
return nil, err
21+
}
22+
var articleStatusResp models.ArticleStatusResponse
23+
err = json.Unmarshal(jsonResp, &articleStatusResp)
24+
if err != nil {
25+
return nil, err
26+
}
27+
return &articleStatusResp, nil
28+
}

api/handler/authenticate.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package handler
2+
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"io"
7+
"net/http"
8+
9+
"github.com/plaenkler/booklooker/api/models"
10+
)
11+
12+
func Authenticate(req models.AuthenticateRequest) (*models.AuthenticateResponse, error) {
13+
url := baseURL + models.AuthenticatePath
14+
jsonReq, err := json.Marshal(req)
15+
if err != nil {
16+
return nil, err
17+
}
18+
resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonReq))
19+
if err != nil {
20+
return nil, err
21+
}
22+
defer resp.Body.Close()
23+
jsonResp, err := io.ReadAll(resp.Body)
24+
if err != nil {
25+
return nil, err
26+
}
27+
var authResp models.AuthenticateResponse
28+
err = json.Unmarshal(jsonResp, &authResp)
29+
if err != nil {
30+
return nil, err
31+
}
32+
return &authResp, nil
33+
}

api/handler/constants.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package handler
2+
3+
const (
4+
baseURL = "https://api.booklooker.de/2.0/"
5+
)

api/handler/file_import.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package handler
2+
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"io"
7+
"net/http"
8+
9+
"github.com/plaenkler/booklooker/api/models"
10+
)
11+
12+
func ImportFile(token string, req models.FileImportRequest) (*models.FileImportResponse, error) {
13+
url := baseURL + models.FileImportPath + "?token=" + token
14+
jsonReq, err := json.Marshal(req)
15+
if err != nil {
16+
return nil, err
17+
}
18+
resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonReq))
19+
if err != nil {
20+
return nil, err
21+
}
22+
defer resp.Body.Close()
23+
jsonResp, err := io.ReadAll(resp.Body)
24+
if err != nil {
25+
return nil, err
26+
}
27+
var fileImportResp models.FileImportResponse
28+
err = json.Unmarshal(jsonResp, &fileImportResp)
29+
if err != nil {
30+
return nil, err
31+
}
32+
return &fileImportResp, nil
33+
}

api/handler/file_status.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package handler
2+
3+
import (
4+
"encoding/json"
5+
"io"
6+
"net/http"
7+
8+
"github.com/plaenkler/booklooker/api/models"
9+
)
10+
11+
func GetFileStatus(token string, req models.FileStatusRequest) (*models.FileStatusResponse, error) {
12+
url := baseURL + models.FileStatusPath + "?token=" + token + "&filename=" + req.Filename
13+
resp, err := http.Get(url)
14+
if err != nil {
15+
return nil, err
16+
}
17+
defer resp.Body.Close()
18+
jsonResp, err := io.ReadAll(resp.Body)
19+
if err != nil {
20+
return nil, err
21+
}
22+
var fileStatusResp models.FileStatusResponse
23+
err = json.Unmarshal(jsonResp, &fileStatusResp)
24+
if err != nil {
25+
return nil, err
26+
}
27+
return &fileStatusResp, nil
28+
}

api/handler/import_status.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package handler
2+
3+
import (
4+
"encoding/json"
5+
"io"
6+
"net/http"
7+
8+
"github.com/plaenkler/booklooker/api/models"
9+
)
10+
11+
func GetImportStatus(token string) (*models.ImportStatusResponse, error) {
12+
url := baseURL + models.ImportStatusPath + "?token=" + token
13+
resp, err := http.Get(url)
14+
if err != nil {
15+
return nil, err
16+
}
17+
defer resp.Body.Close()
18+
jsonResp, err := io.ReadAll(resp.Body)
19+
if err != nil {
20+
return nil, err
21+
}
22+
var importStatusResp models.ImportStatusResponse
23+
err = json.Unmarshal(jsonResp, &importStatusResp)
24+
if err != nil {
25+
return nil, err
26+
}
27+
return &importStatusResp, nil
28+
}

api/handler/order.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package handler
2+
3+
import (
4+
"encoding/json"
5+
"io"
6+
"net/http"
7+
8+
"github.com/plaenkler/booklooker/api/models"
9+
)
10+
11+
func GetOrder(token string, req models.OrderRequest) (*models.OrderResponse, error) {
12+
url := baseURL + models.OrderPath + "?token=" + token
13+
14+
query := url + "&orderId=" + req.OrderID
15+
if req.Date != "" {
16+
query = query + "&date=" + req.Date
17+
}
18+
if req.DateFrom != "" {
19+
query = query + "&dateFrom=" + req.DateFrom
20+
}
21+
if req.DateTo != "" {
22+
query = query + "&dateTo=" + req.DateTo
23+
}
24+
25+
resp, err := http.Get(query)
26+
if err != nil {
27+
return nil, err
28+
}
29+
defer resp.Body.Close()
30+
jsonResp, err := io.ReadAll(resp.Body)
31+
if err != nil {
32+
return nil, err
33+
}
34+
var orderResp models.OrderResponse
35+
err = json.Unmarshal(jsonResp, &orderResp)
36+
if err != nil {
37+
return nil, err
38+
}
39+
return &orderResp, nil
40+
}

api/handler/order_cancel.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package handler
2+
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"io"
7+
"net/http"
8+
9+
"github.com/plaenkler/booklooker/api/models"
10+
)
11+
12+
func CancelOrder(token string, req models.OrderCancelRequest) (*models.OrderCancelResponse, error) {
13+
url := baseURL + models.OrderCancelPath + "?token=" + token
14+
jsonReq, err := json.Marshal(req)
15+
if err != nil {
16+
return nil, err
17+
}
18+
httpReq, err := http.NewRequest("PUT", url, bytes.NewBuffer(jsonReq))
19+
if err != nil {
20+
return nil, err
21+
}
22+
httpReq.Header.Set("Content-Type", "application/json")
23+
client := &http.Client{}
24+
resp, err := client.Do(httpReq)
25+
if err != nil {
26+
return nil, err
27+
}
28+
defer resp.Body.Close()
29+
jsonResp, err := io.ReadAll(resp.Body)
30+
if err != nil {
31+
return nil, err
32+
}
33+
var orderCancelResp models.OrderCancelResponse
34+
err = json.Unmarshal(jsonResp, &orderCancelResp)
35+
if err != nil {
36+
return nil, err
37+
}
38+
return &orderCancelResp, nil
39+
}

0 commit comments

Comments
 (0)