dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/clients/http/deviceservice.go (about) 1 // 2 // Copyright (C) 2020-2021 Unknown author 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 DeviceServiceClient struct { 25 baseUrl string 26 authInjector interfaces.AuthenticationInjector 27 enableNameFieldEscape bool 28 } 29 30 // NewDeviceServiceClient creates an instance of DeviceServiceClient 31 func NewDeviceServiceClient(baseUrl string, authInjector interfaces.AuthenticationInjector, enableNameFieldEscape bool) interfaces.DeviceServiceClient { 32 return &DeviceServiceClient{ 33 baseUrl: baseUrl, 34 authInjector: authInjector, 35 enableNameFieldEscape: enableNameFieldEscape, 36 } 37 } 38 39 func (dsc DeviceServiceClient) Add(ctx context.Context, reqs []requests.AddDeviceServiceRequest) ( 40 res []dtoCommon.BaseWithIdResponse, err errors.EdgeX) { 41 err = utils.PostRequestWithRawData(ctx, &res, dsc.baseUrl, common.ApiDeviceServiceRoute, nil, reqs, dsc.authInjector) 42 if err != nil { 43 return res, errors.NewCommonEdgeXWrapper(err) 44 } 45 return res, nil 46 } 47 48 func (dsc DeviceServiceClient) Update(ctx context.Context, reqs []requests.UpdateDeviceServiceRequest) ( 49 res []dtoCommon.BaseResponse, err errors.EdgeX) { 50 err = utils.PatchRequest(ctx, &res, dsc.baseUrl, common.ApiDeviceServiceRoute, nil, reqs, dsc.authInjector) 51 if err != nil { 52 return res, errors.NewCommonEdgeXWrapper(err) 53 } 54 return res, nil 55 } 56 57 func (dsc DeviceServiceClient) AllDeviceServices(ctx context.Context, labels []string, offset int, limit int) ( 58 res responses.MultiDeviceServicesResponse, err errors.EdgeX) { 59 requestParams := url.Values{} 60 if len(labels) > 0 { 61 requestParams.Set(common.Labels, strings.Join(labels, common.CommaSeparator)) 62 } 63 requestParams.Set(common.Offset, strconv.Itoa(offset)) 64 requestParams.Set(common.Limit, strconv.Itoa(limit)) 65 err = utils.GetRequest(ctx, &res, dsc.baseUrl, common.ApiAllDeviceServiceRoute, requestParams, dsc.authInjector) 66 if err != nil { 67 return res, errors.NewCommonEdgeXWrapper(err) 68 } 69 return res, nil 70 } 71 72 func (dsc DeviceServiceClient) DeviceServiceByName(ctx context.Context, name string) ( 73 res responses.DeviceServiceResponse, err errors.EdgeX) { 74 path := common.NewPathBuilder().EnableNameFieldEscape(dsc.enableNameFieldEscape). 75 SetPath(common.ApiDeviceServiceRoute).SetPath(common.Name).SetNameFieldPath(name).BuildPath() 76 err = utils.GetRequest(ctx, &res, dsc.baseUrl, path, nil, dsc.authInjector) 77 if err != nil { 78 return res, errors.NewCommonEdgeXWrapper(err) 79 } 80 return res, nil 81 } 82 83 func (dsc DeviceServiceClient) DeleteByName(ctx context.Context, name string) ( 84 res dtoCommon.BaseResponse, err errors.EdgeX) { 85 path := common.NewPathBuilder().EnableNameFieldEscape(dsc.enableNameFieldEscape). 86 SetPath(common.ApiDeviceServiceRoute).SetPath(common.Name).SetNameFieldPath(name).BuildPath() 87 err = utils.DeleteRequest(ctx, &res, dsc.baseUrl, path, dsc.authInjector) 88 if err != nil { 89 return res, errors.NewCommonEdgeXWrapper(err) 90 } 91 return res, nil 92 }