dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/clients/http/interval.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  
    14  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/clients/http/utils"
    15  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/clients/interfaces"
    16  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/common"
    17  	dtoCommon "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/common"
    18  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/requests"
    19  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/responses"
    20  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/errors"
    21  )
    22  
    23  type IntervalClient struct {
    24  	baseUrl               string
    25  	authInjector          interfaces.AuthenticationInjector
    26  	enableNameFieldEscape bool
    27  }
    28  
    29  // NewIntervalClient creates an instance of IntervalClient
    30  func NewIntervalClient(baseUrl string, authInjector interfaces.AuthenticationInjector, enableNameFieldEscape bool) interfaces.IntervalClient {
    31  	return &IntervalClient{
    32  		baseUrl:               baseUrl,
    33  		authInjector:          authInjector,
    34  		enableNameFieldEscape: enableNameFieldEscape,
    35  	}
    36  }
    37  
    38  // Add adds new intervals
    39  func (client IntervalClient) Add(ctx context.Context, reqs []requests.AddIntervalRequest) (
    40  	res []dtoCommon.BaseWithIdResponse, err errors.EdgeX) {
    41  	err = utils.PostRequestWithRawData(ctx, &res, client.baseUrl, common.ApiIntervalRoute, nil, reqs, client.authInjector)
    42  	if err != nil {
    43  		return res, errors.NewCommonEdgeXWrapper(err)
    44  	}
    45  	return res, nil
    46  }
    47  
    48  // Update updates intervals
    49  func (client IntervalClient) Update(ctx context.Context, reqs []requests.UpdateIntervalRequest) (
    50  	res []dtoCommon.BaseResponse, err errors.EdgeX) {
    51  	err = utils.PatchRequest(ctx, &res, client.baseUrl, common.ApiIntervalRoute, nil, reqs, client.authInjector)
    52  	if err != nil {
    53  		return res, errors.NewCommonEdgeXWrapper(err)
    54  	}
    55  	return res, nil
    56  }
    57  
    58  // AllIntervals query the intervals with offset, limit
    59  func (client IntervalClient) AllIntervals(ctx context.Context, offset int, limit int) (
    60  	res responses.MultiIntervalsResponse, err errors.EdgeX) {
    61  	requestParams := url.Values{}
    62  	requestParams.Set(common.Offset, strconv.Itoa(offset))
    63  	requestParams.Set(common.Limit, strconv.Itoa(limit))
    64  	err = utils.GetRequest(ctx, &res, client.baseUrl, common.ApiAllIntervalRoute, requestParams, client.authInjector)
    65  	if err != nil {
    66  		return res, errors.NewCommonEdgeXWrapper(err)
    67  	}
    68  	return res, nil
    69  }
    70  
    71  // IntervalByName query the interval by name
    72  func (client IntervalClient) IntervalByName(ctx context.Context, name string) (
    73  	res responses.IntervalResponse, err errors.EdgeX) {
    74  	path := common.NewPathBuilder().EnableNameFieldEscape(client.enableNameFieldEscape).
    75  		SetPath(common.ApiIntervalRoute).SetPath(common.Name).SetNameFieldPath(name).BuildPath()
    76  	err = utils.GetRequest(ctx, &res, client.baseUrl, path, nil, client.authInjector)
    77  	if err != nil {
    78  		return res, errors.NewCommonEdgeXWrapper(err)
    79  	}
    80  	return res, nil
    81  }
    82  
    83  // DeleteIntervalByName delete the interval by name
    84  func (client IntervalClient) DeleteIntervalByName(ctx context.Context, name string) (
    85  	res dtoCommon.BaseResponse, err errors.EdgeX) {
    86  	path := common.NewPathBuilder().EnableNameFieldEscape(client.enableNameFieldEscape).
    87  		SetPath(common.ApiIntervalRoute).SetPath(common.Name).SetNameFieldPath(name).BuildPath()
    88  	err = utils.DeleteRequest(ctx, &res, client.baseUrl, path, client.authInjector)
    89  	if err != nil {
    90  		return res, errors.NewCommonEdgeXWrapper(err)
    91  	}
    92  	return res, nil
    93  }