3
3
using FikaAmazonAPI . Parameter . Order ;
4
4
using FikaAmazonAPI . Search ;
5
5
using System . Collections . Generic ;
6
+ using System . Threading ;
6
7
using System . Threading . Tasks ;
7
8
8
9
namespace FikaAmazonAPI . Services
@@ -18,7 +19,7 @@ public OrderService(AmazonCredential amazonCredential) : base(amazonCredential)
18
19
19
20
public OrderList GetOrders ( ParameterOrderList searchOrderList ) =>
20
21
Task . Run ( ( ) => GetOrdersAsync ( searchOrderList ) ) . ConfigureAwait ( false ) . GetAwaiter ( ) . GetResult ( ) ;
21
- public async Task < OrderList > GetOrdersAsync ( ParameterOrderList searchOrderList )
22
+ public async Task < OrderList > GetOrdersAsync ( ParameterOrderList searchOrderList , CancellationToken cancellationToken = default )
22
23
{
23
24
24
25
var orderList = new OrderList ( ) ;
@@ -46,8 +47,8 @@ public async Task<OrderList> GetOrdersAsync(ParameterOrderList searchOrderList)
46
47
47
48
var queryParameters = searchOrderList . getParameters ( ) ;
48
49
49
- await CreateAuthorizedRequestAsync ( OrdersApiUrls . Orders , RestSharp . Method . Get , queryParameters , parameter : searchOrderList ) ;
50
- var response = await ExecuteRequestAsync < GetOrdersResponse > ( Utils . RateLimitType . Order_GetOrders ) ;
50
+ await CreateAuthorizedRequestAsync ( OrdersApiUrls . Orders , RestSharp . Method . Get , queryParameters , parameter : searchOrderList , cancellationToken : cancellationToken ) ;
51
+ var response = await ExecuteRequestAsync < GetOrdersResponse > ( Utils . RateLimitType . Order_GetOrders , cancellationToken ) ;
51
52
var nextToken = response . Payload . NextToken ;
52
53
orderList = response . Payload . Orders ;
53
54
int PageCount = 1 ;
@@ -59,10 +60,12 @@ public async Task<OrderList> GetOrdersAsync(ParameterOrderList searchOrderList)
59
60
{
60
61
while ( ! string . IsNullOrEmpty ( nextToken ) )
61
62
{
62
- var orderPayload = GetGetOrdersByNextToken ( nextToken , searchOrderList ) ;
63
+ var orderPayload = await GetGetOrdersByNextTokenAsync ( nextToken , searchOrderList , cancellationToken ) ;
63
64
orderList . AddRange ( orderPayload . Orders ) ;
64
65
nextToken = orderPayload . NextToken ;
65
66
67
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
68
+
66
69
if ( searchOrderList . MaxNumberOfPages . HasValue )
67
70
{
68
71
PageCount ++ ;
@@ -77,22 +80,22 @@ public async Task<OrderList> GetOrdersAsync(ParameterOrderList searchOrderList)
77
80
78
81
public OrdersList GetGetOrdersByNextToken ( string nextToken , ParameterOrderList searchOrderList ) =>
79
82
Task . Run ( ( ) => GetGetOrdersByNextTokenAsync ( nextToken , searchOrderList ) ) . ConfigureAwait ( false ) . GetAwaiter ( ) . GetResult ( ) ;
80
- public async Task < OrdersList > GetGetOrdersByNextTokenAsync ( string nextToken , ParameterOrderList searchOrderList )
83
+ public async Task < OrdersList > GetGetOrdersByNextTokenAsync ( string nextToken , ParameterOrderList searchOrderList , CancellationToken cancellationToken = default )
81
84
{
82
85
List < KeyValuePair < string , string > > queryParameters = new List < KeyValuePair < string , string > > ( ) ;
83
86
queryParameters . Add ( new KeyValuePair < string , string > ( "NextToken" , nextToken ) ) ;
84
87
queryParameters . Add ( new KeyValuePair < string , string > ( "MarketplaceIds" , string . Join ( "," , searchOrderList . MarketplaceIds ) ) ) ;
85
88
86
- await CreateAuthorizedRequestAsync ( OrdersApiUrls . Orders , RestSharp . Method . Get , queryParameters , parameter : searchOrderList ) ;
87
- var response = await ExecuteRequestAsync < GetOrdersResponse > ( Utils . RateLimitType . Order_GetOrders ) ;
89
+ await CreateAuthorizedRequestAsync ( OrdersApiUrls . Orders , RestSharp . Method . Get , queryParameters , parameter : searchOrderList , cancellationToken : cancellationToken ) ;
90
+ var response = await ExecuteRequestAsync < GetOrdersResponse > ( Utils . RateLimitType . Order_GetOrders , cancellationToken ) ;
88
91
return response . Payload ;
89
92
}
90
93
91
94
#endregion
92
95
93
96
public Order GetOrder ( ParameterGetOrder parameter ) =>
94
97
Task . Run ( ( ) => GetOrderAsync ( parameter ) ) . ConfigureAwait ( false ) . GetAwaiter ( ) . GetResult ( ) ;
95
- public async Task < Order > GetOrderAsync ( ParameterGetOrder parameter )
98
+ public async Task < Order > GetOrderAsync ( ParameterGetOrder parameter , CancellationToken cancellationToken = default )
96
99
{
97
100
if ( parameter . IsNeedRestrictedDataToken && parameter . RestrictedDataTokenRequest == null )
98
101
{
@@ -109,15 +112,15 @@ public async Task<Order> GetOrderAsync(ParameterGetOrder parameter)
109
112
parameter . RestrictedDataTokenRequest = createRDT ;
110
113
}
111
114
112
- await CreateAuthorizedRequestAsync ( OrdersApiUrls . Order ( parameter . OrderId ) , RestSharp . Method . Get , parameter : parameter ) ;
113
- var response = await ExecuteRequestAsync < GetOrderResponse > ( Utils . RateLimitType . Order_GetOrder ) ;
115
+ await CreateAuthorizedRequestAsync ( OrdersApiUrls . Order ( parameter . OrderId ) , RestSharp . Method . Get , parameter : parameter , cancellationToken : cancellationToken ) ;
116
+ var response = await ExecuteRequestAsync < GetOrderResponse > ( Utils . RateLimitType . Order_GetOrder , cancellationToken ) ;
114
117
if ( response != null && response . Payload != null )
115
118
return response . Payload ;
116
119
else return null ;
117
120
}
118
121
public OrderItemList GetOrderItems ( string orderId , IParameterBasedPII parameterBasedPII = null ) =>
119
122
Task . Run ( ( ) => GetOrderItemsAsync ( orderId , parameterBasedPII ) ) . ConfigureAwait ( false ) . GetAwaiter ( ) . GetResult ( ) ;
120
- public async Task < OrderItemList > GetOrderItemsAsync ( string orderId , IParameterBasedPII ParameterBasedPII = null )
123
+ public async Task < OrderItemList > GetOrderItemsAsync ( string orderId , IParameterBasedPII ParameterBasedPII = null , CancellationToken cancellationToken = default )
121
124
{
122
125
var orderItemList = new OrderItemList ( ) ;
123
126
@@ -135,56 +138,58 @@ public async Task<OrderItemList> GetOrderItemsAsync(string orderId, IParameterBa
135
138
ParameterBasedPII . RestrictedDataTokenRequest = createRDT ;
136
139
}
137
140
138
- await CreateAuthorizedRequestAsync ( OrdersApiUrls . OrderItems ( orderId ) , RestSharp . Method . Get , parameter : ParameterBasedPII ) ;
139
- var response = await ExecuteRequestAsync < GetOrderItemsResponse > ( Utils . RateLimitType . Order_GetOrderItems ) ;
141
+ await CreateAuthorizedRequestAsync ( OrdersApiUrls . OrderItems ( orderId ) , RestSharp . Method . Get , parameter : ParameterBasedPII , cancellationToken : cancellationToken ) ;
142
+ var response = await ExecuteRequestAsync < GetOrderItemsResponse > ( Utils . RateLimitType . Order_GetOrderItems , cancellationToken ) ;
140
143
var nextToken = response . Payload . NextToken ;
141
144
orderItemList . AddRange ( response . Payload . OrderItems ) ;
142
145
while ( ! string . IsNullOrEmpty ( nextToken ) )
143
146
{
144
- var orderItemPayload = GetOrderItemsNextToken ( orderId , nextToken ) ;
147
+ var orderItemPayload = await GetOrderItemsNextTokenAsync ( orderId , nextToken , cancellationToken ) ;
145
148
orderItemList . AddRange ( orderItemPayload . OrderItems ) ;
146
149
nextToken = orderItemPayload . NextToken ;
150
+
151
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
147
152
}
148
153
return orderItemList ;
149
154
}
150
155
151
156
public OrderItemsList GetOrderItemsNextToken ( string orderId , string nextToken ) =>
152
157
Task . Run ( ( ) => GetOrderItemsNextTokenAsync ( orderId , nextToken ) ) . ConfigureAwait ( false ) . GetAwaiter ( ) . GetResult ( ) ;
153
- public async Task < OrderItemsList > GetOrderItemsNextTokenAsync ( string orderId , string nextToken )
158
+ public async Task < OrderItemsList > GetOrderItemsNextTokenAsync ( string orderId , string nextToken , CancellationToken cancellationToken = default )
154
159
{
155
160
List < KeyValuePair < string , string > > queryParameters = new List < KeyValuePair < string , string > > ( ) ;
156
161
queryParameters . Add ( new KeyValuePair < string , string > ( "NextToken" , nextToken ) ) ;
157
162
158
163
159
- await CreateAuthorizedRequestAsync ( OrdersApiUrls . OrderItems ( orderId ) , RestSharp . Method . Get , queryParameters ) ;
160
- var response = await ExecuteRequestAsync < GetOrderItemsResponse > ( Utils . RateLimitType . Order_GetOrderItems ) ;
164
+ await CreateAuthorizedRequestAsync ( OrdersApiUrls . OrderItems ( orderId ) , RestSharp . Method . Get , queryParameters , cancellationToken : cancellationToken ) ;
165
+ var response = await ExecuteRequestAsync < GetOrderItemsResponse > ( Utils . RateLimitType . Order_GetOrderItems , cancellationToken ) ;
161
166
return response . Payload ;
162
167
}
163
168
164
169
public OrderBuyerInfo GetOrderBuyerInfo ( string orderId , List < KeyValuePair < string , string > > queryParameters = null ) =>
165
170
Task . Run ( ( ) => GetOrderBuyerInfoAsync ( orderId , queryParameters ) ) . ConfigureAwait ( false ) . GetAwaiter ( ) . GetResult ( ) ;
166
- public async Task < OrderBuyerInfo > GetOrderBuyerInfoAsync ( string orderId , List < KeyValuePair < string , string > > queryParameters = null )
171
+ public async Task < OrderBuyerInfo > GetOrderBuyerInfoAsync ( string orderId , List < KeyValuePair < string , string > > queryParameters = null , CancellationToken cancellationToken = default )
167
172
{
168
- await CreateAuthorizedRequestAsync ( OrdersApiUrls . OrderBuyerInfo ( orderId ) , RestSharp . Method . Get , queryParameters ) ;
169
- var response = await ExecuteRequestAsync < GetOrderBuyerInfoResponse > ( Utils . RateLimitType . Order_GetOrderBuyerInfo ) ;
173
+ await CreateAuthorizedRequestAsync ( OrdersApiUrls . OrderBuyerInfo ( orderId ) , RestSharp . Method . Get , queryParameters , cancellationToken : cancellationToken ) ;
174
+ var response = await ExecuteRequestAsync < GetOrderBuyerInfoResponse > ( Utils . RateLimitType . Order_GetOrderBuyerInfo , cancellationToken ) ;
170
175
return response . Payload ;
171
176
}
172
177
173
178
public OrderItemsBuyerInfoList GetOrderItemsBuyerInfo ( string orderId ) =>
174
179
Task . Run ( ( ) => GetOrderItemsBuyerInfoAsync ( orderId ) ) . ConfigureAwait ( false ) . GetAwaiter ( ) . GetResult ( ) ;
175
- public async Task < OrderItemsBuyerInfoList > GetOrderItemsBuyerInfoAsync ( string orderId )
180
+ public async Task < OrderItemsBuyerInfoList > GetOrderItemsBuyerInfoAsync ( string orderId , CancellationToken cancellationToken = default )
176
181
{
177
- await CreateAuthorizedRequestAsync ( OrdersApiUrls . OrderItemsBuyerInfo ( orderId ) , RestSharp . Method . Get ) ;
178
- var response = await ExecuteRequestAsync < GetOrderItemsBuyerInfoResponse > ( Utils . RateLimitType . Order_GetOrderItemsBuyerInfo ) ;
182
+ await CreateAuthorizedRequestAsync ( OrdersApiUrls . OrderItemsBuyerInfo ( orderId ) , RestSharp . Method . Get , cancellationToken : cancellationToken ) ;
183
+ var response = await ExecuteRequestAsync < GetOrderItemsBuyerInfoResponse > ( Utils . RateLimitType . Order_GetOrderItemsBuyerInfo , cancellationToken ) ;
179
184
return response . Payload ;
180
185
}
181
186
182
187
public Address GetOrderAddress ( string orderId ) =>
183
188
Task . Run ( ( ) => GetOrderAddressAsync ( orderId ) ) . ConfigureAwait ( false ) . GetAwaiter ( ) . GetResult ( ) ;
184
- public async Task < Address > GetOrderAddressAsync ( string orderId )
189
+ public async Task < Address > GetOrderAddressAsync ( string orderId , CancellationToken cancellationToken = default )
185
190
{
186
- await CreateAuthorizedRequestAsync ( OrdersApiUrls . OrderShipmentInfo ( orderId ) , RestSharp . Method . Get ) ;
187
- var response = await ExecuteRequestAsync < GetOrderAddressResponse > ( Utils . RateLimitType . Order_GetOrderAddress ) ;
191
+ await CreateAuthorizedRequestAsync ( OrdersApiUrls . OrderShipmentInfo ( orderId ) , RestSharp . Method . Get , cancellationToken : cancellationToken ) ;
192
+ var response = await ExecuteRequestAsync < GetOrderAddressResponse > ( Utils . RateLimitType . Order_GetOrderAddress , cancellationToken ) ;
188
193
return response . Payload . ShippingAddress ;
189
194
}
190
195
}
0 commit comments