public async Task CreateProStatus(ProStatus status) { status.PublicKey = await SettingsService.GetPublicKey(); var content = JsonConvert.SerializeObject(status); await PostAsync($"api/CreateProStatus?code={App.PostProStatusKey}", content); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, [Table("ProStatus")] CloudTable proTable, ILogger log) { log.LogInformation($"C# HTTP trigger {nameof(CreateProStatus)} function processed a request."); var privateKey = Utils.ParseToken(req); if (privateKey == null) { return(new UnauthorizedResult()); } ProStatus status = null; try { var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); status = JsonConvert.DeserializeObject <ProStatus>(requestBody); } catch (Exception ex) { log.LogError("Unable to deserialize pro status: " + ex.Message); } if (status == null || string.IsNullOrWhiteSpace(status.PublicKey) || !status.IsPro) { return(new BadRequestErrorMessageResult("Invalid data to process request")); } var proEntity = new ProStatusEntity(status.PublicKey, privateKey) { Receipt = status.Receipt ?? string.Empty }; try { // Create the InsertOrReplace table operation var insertOrMergeOperation = TableOperation.InsertOrMerge(proEntity); // Execute the operation. var result = await proTable.ExecuteAsync(insertOrMergeOperation); var insertedPro = result.Result as ProStatusEntity; } catch (Exception ex) { log.LogError($"Error {nameof(CreateProStatus)} - Error: " + ex.Message); return(new InternalServerErrorResult()); } return(new OkObjectResult("Pro Status Created")); }
public static async Task <HttpResponseMessage> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = "GetProStatus/{myPublicKey}")] HttpRequest req, string myPublicKey, [Table("ProStatus")] CloudTable proTable, ILogger log) { log.LogInformation($"C# HTTP trigger {nameof(GetProStatus)} function processed a request."); var privateKey = Utils.ParseToken(req); if (privateKey == null) { return new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = new StringContent("You are not authorized to make this request.") } } ; if (string.IsNullOrWhiteSpace(myPublicKey)) { return(new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent("Invalid data to process request") }); } ProStatus status = null; try { var publicKeyFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, myPublicKey); var privateKeyFilter = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, privateKey); var rangeQuery = new TableQuery <ProStatusEntity>().Where( TableQuery.CombineFilters(publicKeyFilter, TableOperators.And, privateKeyFilter)); var entity = (await proTable.ExecuteQuerySegmentedAsync(rangeQuery, null)).FirstOrDefault(); status = new ProStatus { IsPro = entity != null, Receipt = entity?.Receipt ?? string.Empty }; } catch (Exception ex) { log.LogError($"Error {nameof(GetFriends)} - Error: " + ex.Message); return(new HttpResponseMessage(HttpStatusCode.InternalServerError)); } var json = JsonConvert.SerializeObject(status); return(new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(json, Encoding.UTF8, "application/json") }); } }