-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclient_api.go
More file actions
94 lines (78 loc) · 2.45 KB
/
client_api.go
File metadata and controls
94 lines (78 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package main
import (
"context"
"fmt"
"slices"
"github.com/green-ecolution/green-ecolution-backend/pkg/client"
)
type GreenEcolutionClient struct {
client *client.APIClient
provider string
}
func NewGreenEcolutionRepo(cfg *client.Configuration, provider string) *GreenEcolutionClient {
return &GreenEcolutionClient{
client: client.NewAPIClient(cfg),
provider: provider,
}
}
func (r *GreenEcolutionClient) GetInfo(ctx context.Context) (*client.AppInfo, error) {
info, _, err := r.client.InfoAPI.GetAppInfo(ctx).Execute()
if err != nil {
return nil, err
}
return info, nil
}
func (r *GreenEcolutionClient) GetAll(ctx context.Context) ([]Tree, error) {
trees, _, err := r.client.TreeAPI.GetAllTrees(ctx).Provider(r.provider).Execute()
if err != nil {
return nil, err
}
mapSeq := MapIter(slices.Values(trees.Data), func(t client.Tree) Tree {
return Tree{
Tree: t,
ObjectID: CombineToID(t.Latitude, t.Longitude),
}
})
return slices.Collect(mapSeq), nil
}
func (r *GreenEcolutionClient) Create(ctx context.Context, tree Tree) error {
body := client.TreeCreate{
Description: fmt.Sprintf("%s - Dieser Baum wurde importiert", tree.Description),
Latitude: tree.Latitude,
Longitude: tree.Longitude,
Number: tree.Number,
PlantingYear: tree.PlantingYear,
Species: tree.Species,
Provider: &r.provider,
}
_, _, err := r.client.TreeAPI.CreateTree(ctx).Body(body).Execute()
return err
}
func (r *GreenEcolutionClient) Update(ctx context.Context, id int32, tree Tree) error {
body := client.TreeUpdate{
Description: tree.Description,
Latitude: tree.Latitude,
Longitude: tree.Longitude,
Number: tree.Number,
PlantingYear: tree.PlantingYear,
Species: tree.Species,
Provider: &r.provider,
}
_, _, err := r.client.TreeAPI.UpdateTree(ctx, id).Body(body).Execute()
return err
}
func (r *GreenEcolutionClient) Delete(ctx context.Context, id int32) error {
_, err := r.client.TreeAPI.DeleteTree(ctx, id).Execute()
return err
}
func (r *GreenEcolutionClient) Archive(ctx context.Context, id int32) error {
_, err := r.client.TreeAPI.DeleteTree(ctx, id).Execute() // TODO: Archive
return err
}
func (r *GreenEcolutionClient) RefreshToken(ctx context.Context, refreshToken string) (*client.ClientToken, error) {
body := client.RefreshTokenRequest{
RefreshToken: refreshToken,
}
token, _, err := r.client.UserAPI.V1UserTokenRefreshPost(ctx).Body(body).Execute()
return token, err
}