public async Task <ActionResult <DecisionResponse> > TokenProvisioning(DecisionRequest model, CancellationToken ct) { var response = new DecisionResponse { AcctId = model.AcctId, BusinessAcctId = model.BusinessAcctId, Last4CardNumber = model.Last4CardNumber }; var settings = await _responseSettingsStorage .Get(model.BusinessAcctId, model.AcctId, ct); if (settings == null) { await SaveTokenProvisioning(model, 404, 0, null); return(NotFound()); } if (!SecretsAreEqual(settings.SharedSecret)) { await SaveTokenProvisioning(model, 403, 0, null); return(StatusCode(403, "SharedSecret in Authorization header doesn't match the one configured")); } await Task .Delay(settings.DelayMls, ct); var customResult = GetCustomResult(settings.StatusCode); if (customResult != null) { await SaveTokenProvisioning(model, settings.StatusCode, settings.DelayMls, null); return(customResult); } response.Contacts = settings.ContactsJson.DeserializeTo <List <ContactItem> >(); await SaveTokenProvisioning(model, settings.StatusCode, settings.DelayMls, response); return(response); }
public async Task <ActionResult <ResponseSettingsModel> > GetSettings(int businessId, int cardholderId, CancellationToken ct) { var entity = await _responseSettingsStorage .Get(businessId, cardholderId, ct); if (entity == null) { return(NotFound()); } return(new ResponseSettingsModel { SharedSecret = entity.SharedSecret, StatusCode = entity.StatusCode, TimeoutMls = entity.DelayMls, Contacts = entity.ContactsJson.DeserializeTo <List <ContactItem> >() }); }