dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/clients/http/transmission.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  	"path"
    13  	"strconv"
    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/responses"
    20  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/errors"
    21  )
    22  
    23  type TransmissionClient struct {
    24  	baseUrl               string
    25  	authInjector          interfaces.AuthenticationInjector
    26  	enableNameFieldEscape bool
    27  }
    28  
    29  // NewTransmissionClient creates an instance of TransmissionClient
    30  func NewTransmissionClient(baseUrl string, authInjector interfaces.AuthenticationInjector, enableNameFieldEscape bool) interfaces.TransmissionClient {
    31  	return &TransmissionClient{
    32  		baseUrl:               baseUrl,
    33  		authInjector:          authInjector,
    34  		enableNameFieldEscape: enableNameFieldEscape,
    35  	}
    36  }
    37  
    38  // TransmissionById query transmission by id.
    39  func (client *TransmissionClient) TransmissionById(ctx context.Context, id string) (res responses.TransmissionResponse, err errors.EdgeX) {
    40  	path := path.Join(common.ApiTransmissionRoute, common.Id, id)
    41  	err = utils.GetRequest(ctx, &res, client.baseUrl, path, nil, client.authInjector)
    42  	if err != nil {
    43  		return res, errors.NewCommonEdgeXWrapper(err)
    44  	}
    45  	return res, nil
    46  }
    47  
    48  // TransmissionsByTimeRange query transmissions with time range, offset and limit
    49  func (client *TransmissionClient) TransmissionsByTimeRange(ctx context.Context, start int, end int, offset int, limit int) (res responses.MultiTransmissionsResponse, err errors.EdgeX) {
    50  	requestPath := path.Join(common.ApiTransmissionRoute, common.Start, strconv.Itoa(start), common.End, strconv.Itoa(end))
    51  	requestParams := url.Values{}
    52  	requestParams.Set(common.Offset, strconv.Itoa(offset))
    53  	requestParams.Set(common.Limit, strconv.Itoa(limit))
    54  	err = utils.GetRequest(ctx, &res, client.baseUrl, requestPath, requestParams, client.authInjector)
    55  	if err != nil {
    56  		return res, errors.NewCommonEdgeXWrapper(err)
    57  	}
    58  	return res, nil
    59  }
    60  
    61  // AllTransmissions query transmissions with offset and limit
    62  func (client *TransmissionClient) AllTransmissions(ctx context.Context, offset int, limit int) (res responses.MultiTransmissionsResponse, err errors.EdgeX) {
    63  	requestParams := url.Values{}
    64  	requestParams.Set(common.Offset, strconv.Itoa(offset))
    65  	requestParams.Set(common.Limit, strconv.Itoa(limit))
    66  	err = utils.GetRequest(ctx, &res, client.baseUrl, common.ApiAllTransmissionRoute, requestParams, client.authInjector)
    67  	if err != nil {
    68  		return res, errors.NewCommonEdgeXWrapper(err)
    69  	}
    70  	return res, nil
    71  }
    72  
    73  // TransmissionsByStatus queries transmissions with status, offset and limit
    74  func (client *TransmissionClient) TransmissionsByStatus(ctx context.Context, status string, offset int, limit int) (res responses.MultiTransmissionsResponse, err errors.EdgeX) {
    75  	requestPath := path.Join(common.ApiTransmissionRoute, common.Status, status)
    76  	requestParams := url.Values{}
    77  	requestParams.Set(common.Offset, strconv.Itoa(offset))
    78  	requestParams.Set(common.Limit, strconv.Itoa(limit))
    79  	err = utils.GetRequest(ctx, &res, client.baseUrl, requestPath, requestParams, client.authInjector)
    80  	if err != nil {
    81  		return res, errors.NewCommonEdgeXWrapper(err)
    82  	}
    83  	return res, nil
    84  }
    85  
    86  // DeleteProcessedTransmissionsByAge deletes the processed transmissions if the current timestamp minus their created timestamp is less than the age parameter.
    87  func (client *TransmissionClient) DeleteProcessedTransmissionsByAge(ctx context.Context, age int) (res dtoCommon.BaseResponse, err errors.EdgeX) {
    88  	path := path.Join(common.ApiTransmissionRoute, common.Age, strconv.Itoa(age))
    89  	err = utils.DeleteRequest(ctx, &res, client.baseUrl, path, client.authInjector)
    90  	if err != nil {
    91  		return res, errors.NewCommonEdgeXWrapper(err)
    92  	}
    93  	return res, nil
    94  }
    95  
    96  // TransmissionsBySubscriptionName query transmissions with subscriptionName, offset and limit
    97  func (client *TransmissionClient) TransmissionsBySubscriptionName(ctx context.Context, subscriptionName string, offset int, limit int) (res responses.MultiTransmissionsResponse, err errors.EdgeX) {
    98  	requestPath := path.Join(common.ApiTransmissionRoute, common.Subscription, common.Name, subscriptionName)
    99  	requestParams := url.Values{}
   100  	requestParams.Set(common.Offset, strconv.Itoa(offset))
   101  	requestParams.Set(common.Limit, strconv.Itoa(limit))
   102  	err = utils.GetRequest(ctx, &res, client.baseUrl, requestPath, requestParams, client.authInjector)
   103  	if err != nil {
   104  		return res, errors.NewCommonEdgeXWrapper(err)
   105  	}
   106  	return res, nil
   107  }
   108  
   109  // TransmissionsByNotificationId query transmissions with notification id, offset and limit
   110  func (client *TransmissionClient) TransmissionsByNotificationId(ctx context.Context, id string, offset int, limit int) (res responses.MultiTransmissionsResponse, err errors.EdgeX) {
   111  	requestPath := path.Join(common.ApiTransmissionRoute, common.Notification, common.Id, id)
   112  	requestParams := url.Values{}
   113  	requestParams.Set(common.Offset, strconv.Itoa(offset))
   114  	requestParams.Set(common.Limit, strconv.Itoa(limit))
   115  	err = utils.GetRequest(ctx, &res, client.baseUrl, requestPath, requestParams, client.authInjector)
   116  	if err != nil {
   117  		return res, errors.NewCommonEdgeXWrapper(err)
   118  	}
   119  	return res, nil
   120  }