Ejemplo n.º 1
0
        public async Task CreateProStatus(ProStatus status)
        {
            status.PublicKey = await SettingsService.GetPublicKey();

            var content = JsonConvert.SerializeObject(status);

            await PostAsync($"api/CreateProStatus?code={App.PostProStatusKey}", content);
        }
Ejemplo n.º 2
0
        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"));
        }
Ejemplo n.º 3
0
        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")
            });
        }
    }