protected override async Task <object> ProcessOperation(InstantAccessOperation operation, string content)
        {
            switch (operation)
            {
            case InstantAccessOperation.Purchase:
                return(await
                       ProcessFulfillPurchase(
                           Serializer.Deserialize <PurchaseRequest>(content))
                       .ConfigureAwait(false));

            case InstantAccessOperation.Revoke:
                return(await
                       ProcessRevokePurchase(
                           Serializer.Deserialize <PurchaseRequest>(content))
                       .ConfigureAwait(false));

            case InstantAccessOperation.SubscriptionActivate:
                return(await
                       ProcessSubscriptionActivate(
                           Serializer.Deserialize <SubscriptionActivateRequest>(content))
                       .ConfigureAwait(false));

            case InstantAccessOperation.SubscriptionDeactivate:
                return(await
                       ProcessSubscriptionRevoke(
                           Serializer.Deserialize <SubscriptionDeactivateRequest>(content))
                       .ConfigureAwait(false));

            default:
                throw new ArgumentException(
                          $"Operation[{operation}] is not supported by {nameof(PurchaseController)}");
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Post()
        {
            try
            {
                string content;
                using (var sr = new StreamReader(Request.Body))
                {
                    content = await sr.ReadToEndAsync();
                }

                if (!signer.Verify(new DTARequest(Request, content), CredentialStore))
                {
                    return(StatusCode(StatusCodes.Status403Forbidden));
                }

                var jObject = JObject.Parse(content);
                InstantAccessOperation operation = GetInstantAccessOperation(jObject["operation"].ToString());
                var result = await ProcessOperation(operation, jObject).ConfigureAwait(false);

                return(new JsonResult(result, Serializer.SerializerSettings));
            }

            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
Ejemplo n.º 3
0
        protected override async Task <object> ProcessOperation(InstantAccessOperation operation, string content)
        {
            if (operation != InstantAccessOperation.GetUserId)
            {
                throw new ArgumentException(
                          $"Operation[{operation}] is not supported by {nameof(AccountLinkingController)}");
            }

            return(await GetUserId(Serializer.Deserialize <GetUserIdRequest>(content)).ConfigureAwait(false));
        }
Ejemplo n.º 4
0
 protected abstract Task <object> ProcessOperation(InstantAccessOperation operation, string content);