-
Notifications
You must be signed in to change notification settings - Fork 2
/
dmsmanager.go
101 lines (83 loc) · 3.43 KB
/
dmsmanager.go
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
95
96
97
98
99
100
101
package clients
import (
"context"
"crypto/x509"
"fmt"
"net/http"
"github.com/lamassuiot/lamassuiot/v2/pkg/models"
"github.com/lamassuiot/lamassuiot/v2/pkg/resources"
"github.com/lamassuiot/lamassuiot/v2/pkg/services"
)
type dmsManagerClient struct {
httpClient *http.Client
baseUrl string
}
func NewHttpDMSManagerClient(client *http.Client, url string) services.DMSManagerService {
baseURL := url
return &dmsManagerClient{
httpClient: client,
baseUrl: baseURL,
}
}
func (cli *dmsManagerClient) GetDMSStats(ctx context.Context, input services.GetDMSStatsInput) (*models.DMSStats, error) {
url := cli.baseUrl + "/v1/stats"
resp, err := Get[models.DMSStats](ctx, cli.httpClient, url, nil, map[int][]error{})
return &resp, err
}
func (cli *dmsManagerClient) CreateDMS(ctx context.Context, input services.CreateDMSInput) (*models.DMS, error) {
response, err := Post[*models.DMS](ctx, cli.httpClient, cli.baseUrl+"/v1/dms", resources.CreateDMSBody{
ID: input.ID,
Name: input.Name,
Metadata: input.Metadata,
Settings: input.Settings,
}, map[int][]error{})
if err != nil {
return nil, err
}
return response, nil
}
func (cli *dmsManagerClient) UpdateDMS(ctx context.Context, input services.UpdateDMSInput) (*models.DMS, error) {
response, err := Put[*models.DMS](ctx, cli.httpClient, cli.baseUrl+"/v1/dms/"+input.DMS.ID, input.DMS, map[int][]error{})
if err != nil {
return nil, err
}
return response, nil
}
func (cli *dmsManagerClient) GetDMSByID(ctx context.Context, input services.GetDMSByIDInput) (*models.DMS, error) {
url := cli.baseUrl + "/v1/dms/" + input.ID
resp, err := Get[models.DMS](ctx, cli.httpClient, url, nil, map[int][]error{})
return &resp, err
}
func (cli *dmsManagerClient) GetAll(ctx context.Context, input services.GetAllInput) (string, error) {
url := cli.baseUrl + "/v1/dms"
if input.ExhaustiveRun {
err := IterGet[models.DMS, resources.GetDMSsResponse](ctx, cli.httpClient, url, nil, input.ApplyFunc, map[int][]error{})
return "", err
} else {
resp, err := Get[resources.GetDMSsResponse](ctx, cli.httpClient, url, input.QueryParameters, map[int][]error{})
return resp.NextBookmark, err
}
}
func (cli *dmsManagerClient) CACerts(ctx context.Context, aps string) ([]*x509.Certificate, error) {
return nil, fmt.Errorf("not supported, use the estCli instead")
}
func (cli *dmsManagerClient) Enroll(ctx context.Context, csr *x509.CertificateRequest, aps string) (*x509.Certificate, error) {
return nil, fmt.Errorf("not supported, use the estCli instead")
}
func (cli *dmsManagerClient) Reenroll(ctx context.Context, csr *x509.CertificateRequest, aps string) (*x509.Certificate, error) {
return nil, fmt.Errorf("not supported, use the estCli instead")
}
func (cli *dmsManagerClient) ServerKeyGen(ctx context.Context, csr *x509.CertificateRequest, aps string) (*x509.Certificate, interface{}, error) {
return nil, nil, fmt.Errorf("not supported, use the estCli instead")
}
func (cli *dmsManagerClient) BindIdentityToDevice(ctx context.Context, input services.BindIdentityToDeviceInput) (*models.BindIdentityToDeviceOutput, error) {
response, err := Post[*models.BindIdentityToDeviceOutput](ctx, cli.httpClient, cli.baseUrl+"/v1/dms/bind-identity", resources.BindIdentityToDeviceBody{
BindMode: input.BindMode,
DeviceID: input.DeviceID,
CertificateSerialNumber: input.CertificateSerialNumber,
}, map[int][]error{})
if err != nil {
return nil, err
}
return response, nil
}