dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/clients/http/provisionwatcher.go (about) 1 // 2 // Copyright (C) 2021 IOTech Ltd 3 // Copyright (C) 2023 Intel Corporation 4 // 5 // SPDX-License-Identifier: Apache-2.0 6 7 package http 8 9 import ( 10 "context" 11 "net/url" 12 "strconv" 13 "strings" 14 15 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/clients/http/utils" 16 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/clients/interfaces" 17 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/common" 18 dtoCommon "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/common" 19 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/requests" 20 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/responses" 21 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/errors" 22 ) 23 24 type ProvisionWatcherClient struct { 25 baseUrl string 26 authInjector interfaces.AuthenticationInjector 27 enableNameFieldEscape bool 28 } 29 30 // NewProvisionWatcherClient creates an instance of ProvisionWatcherClient 31 func NewProvisionWatcherClient(baseUrl string, authInjector interfaces.AuthenticationInjector, enableNameFieldEscape bool) interfaces.ProvisionWatcherClient { 32 return &ProvisionWatcherClient{ 33 baseUrl: baseUrl, 34 authInjector: authInjector, 35 enableNameFieldEscape: enableNameFieldEscape, 36 } 37 } 38 39 func (pwc ProvisionWatcherClient) Add(ctx context.Context, reqs []requests.AddProvisionWatcherRequest) (res []dtoCommon.BaseWithIdResponse, err errors.EdgeX) { 40 err = utils.PostRequestWithRawData(ctx, &res, pwc.baseUrl, common.ApiProvisionWatcherRoute, nil, reqs, pwc.authInjector) 41 if err != nil { 42 return res, errors.NewCommonEdgeXWrapper(err) 43 } 44 45 return 46 } 47 48 func (pwc ProvisionWatcherClient) Update(ctx context.Context, reqs []requests.UpdateProvisionWatcherRequest) (res []dtoCommon.BaseResponse, err errors.EdgeX) { 49 err = utils.PatchRequest(ctx, &res, pwc.baseUrl, common.ApiProvisionWatcherRoute, nil, reqs, pwc.authInjector) 50 if err != nil { 51 return res, errors.NewCommonEdgeXWrapper(err) 52 } 53 54 return 55 } 56 57 func (pwc ProvisionWatcherClient) AllProvisionWatchers(ctx context.Context, labels []string, offset int, limit int) (res responses.MultiProvisionWatchersResponse, err errors.EdgeX) { 58 requestParams := url.Values{} 59 if len(labels) > 0 { 60 requestParams.Set(common.Labels, strings.Join(labels, common.CommaSeparator)) 61 } 62 requestParams.Set(common.Offset, strconv.Itoa(offset)) 63 requestParams.Set(common.Limit, strconv.Itoa(limit)) 64 err = utils.GetRequest(ctx, &res, pwc.baseUrl, common.ApiAllProvisionWatcherRoute, requestParams, pwc.authInjector) 65 if err != nil { 66 return res, errors.NewCommonEdgeXWrapper(err) 67 } 68 69 return 70 } 71 72 func (pwc ProvisionWatcherClient) ProvisionWatcherByName(ctx context.Context, name string) (res responses.ProvisionWatcherResponse, err errors.EdgeX) { 73 path := common.NewPathBuilder().EnableNameFieldEscape(pwc.enableNameFieldEscape). 74 SetPath(common.ApiProvisionWatcherRoute).SetPath(common.Name).SetNameFieldPath(name).BuildPath() 75 err = utils.GetRequest(ctx, &res, pwc.baseUrl, path, nil, pwc.authInjector) 76 if err != nil { 77 return res, errors.NewCommonEdgeXWrapper(err) 78 } 79 80 return 81 } 82 83 func (pwc ProvisionWatcherClient) DeleteProvisionWatcherByName(ctx context.Context, name string) (res dtoCommon.BaseResponse, err errors.EdgeX) { 84 path := common.NewPathBuilder().EnableNameFieldEscape(pwc.enableNameFieldEscape). 85 SetPath(common.ApiProvisionWatcherRoute).SetPath(common.Name).SetNameFieldPath(name).BuildPath() 86 err = utils.DeleteRequest(ctx, &res, pwc.baseUrl, path, pwc.authInjector) 87 if err != nil { 88 return res, errors.NewCommonEdgeXWrapper(err) 89 } 90 91 return 92 } 93 94 func (pwc ProvisionWatcherClient) ProvisionWatchersByProfileName(ctx context.Context, name string, offset int, limit int) (res responses.MultiProvisionWatchersResponse, err errors.EdgeX) { 95 requestPath := common.NewPathBuilder().EnableNameFieldEscape(pwc.enableNameFieldEscape). 96 SetPath(common.ApiProvisionWatcherRoute).SetPath(common.Profile).SetPath(common.Name).SetNameFieldPath(name).BuildPath() 97 requestParams := url.Values{} 98 requestParams.Set(common.Offset, strconv.Itoa(offset)) 99 requestParams.Set(common.Limit, strconv.Itoa(limit)) 100 err = utils.GetRequest(ctx, &res, pwc.baseUrl, requestPath, requestParams, pwc.authInjector) 101 if err != nil { 102 return res, errors.NewCommonEdgeXWrapper(err) 103 } 104 105 return 106 } 107 108 func (pwc ProvisionWatcherClient) ProvisionWatchersByServiceName(ctx context.Context, name string, offset int, limit int) (res responses.MultiProvisionWatchersResponse, err errors.EdgeX) { 109 requestPath := common.NewPathBuilder().EnableNameFieldEscape(pwc.enableNameFieldEscape). 110 SetPath(common.ApiProvisionWatcherRoute).SetPath(common.Service).SetPath(common.Name).SetNameFieldPath(name).BuildPath() 111 requestParams := url.Values{} 112 requestParams.Set(common.Offset, strconv.Itoa(offset)) 113 requestParams.Set(common.Limit, strconv.Itoa(limit)) 114 err = utils.GetRequest(ctx, &res, pwc.baseUrl, requestPath, requestParams, pwc.authInjector) 115 if err != nil { 116 return res, errors.NewCommonEdgeXWrapper(err) 117 } 118 119 return 120 }