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)}"); } }
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)); } }
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)); }
protected abstract Task <object> ProcessOperation(InstantAccessOperation operation, string content);