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 }