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  }