public async Task <ServiceProviderResponse> GetMessageDetailAsync( [FromHeader(Constant.OperationTrackingIdHeader)] string requestId, [FromHeader] string account, string messageId, [FromQuery] string continuationToken = null, [FromQuery] int count = ContinuationToken.DefaultCount) { var currentAccount = await this.ValidateAccount(account); Validator.IsTrue <ArgumentException>(count > 0 && count <= SmsConstant.PagingMaxTakeCount, nameof(count), $"Count should be between 0 and {SmsConstant.PagingMaxTakeCount}."); var token = new AzureStorageContinuationToken(continuationToken); Validator.IsTrue <ArgumentException>(token.IsValid, nameof(token), "ContinuationToken is invalid."); var details = await this.reportManager.GetMessageAsync(account, messageId, count, token.TableContinuationToken); Validator.IsTrue <ArgumentException>(details != null, nameof(details), "Message does not exist."); var response = ServiceProviderResponse.CreateJsonResponse(HttpStatusCode.OK, details); if (details.ContinuationToken != null) { response.Headers = new Dictionary <string, IEnumerable <string> > { { ContinuationToken.ContinuationTokenKey, new List <string> { new AzureStorageContinuationToken(details.ContinuationToken).Token } } }; } return(response); }
public async Task <ServiceProviderResponse> GetPerMessageAggregationAsync( [FromHeader(Constant.OperationTrackingIdHeader)] string requestId, [FromHeader] string account, [FromQuery("startTime")] long startTimeUnixSeconds = long.MinValue, [FromQuery("endTime")] long endTimeUnixSeconds = long.MaxValue, [FromQuery] string continuationToken = null, [FromQuery] int count = ContinuationToken.DefaultCount) { var currentAccount = await this.ValidateAccount(account); Validator.IsTrue <ArgumentException>(count > 0 && count <= SmsConstant.PagingMaxTakeCount, nameof(count), $"Count should be between 0 and {SmsConstant.PagingMaxTakeCount}."); var token = new AzureStorageContinuationToken(continuationToken); Validator.IsTrue <ArgumentException>(token.IsValid, nameof(token), "ContinuationToken is invalid."); var utcNow = DateTime.UtcNow; DateTimeOffset startTime, endTime; try { startTime = DateTimeOffset.FromUnixTimeSeconds(startTimeUnixSeconds); } catch { startTime = new DateTimeOffset(utcNow.Year, utcNow.Month, 1, 0, 0, 0, TimeSpan.Zero); } try { endTime = DateTimeOffset.FromUnixTimeSeconds(endTimeUnixSeconds); } catch { endTime = new DateTimeOffset(utcNow); } var result = await this.reportManager.GetPerMessageAggregationAsync( account, startTime, endTime, count, token.TableContinuationToken); var response = ServiceProviderResponse.CreateJsonResponse(HttpStatusCode.OK, result); if (result.ContinuationToken != null) { response.Headers = new Dictionary <string, IEnumerable <string> > { { ContinuationToken.ContinuationTokenKey, new[] { new AzureStorageContinuationToken(result.ContinuationToken).Token } } }; } return(response); }