public async Task <FormUrlResult> GenerateFormUrl(FormUrlOptions parameters) { if (parameters == null) { throw new Exception("parameters not provided"); } if (parameters.formsAppId == null) { Form form = await oneBlinkApiClient.GetRequest <Form>($"/forms/{parameters.formId}"); parameters.formsAppId = form.formsAppIds[0]; } if (parameters.formsAppId == null) { throw new Exception("This form has not been added to a forms app yet."); } FormsListFormsApp formsApp = await oneBlinkApiClient.GetRequest <FormsListFormsApp>($"/forms-apps/{parameters.formsAppId}"); string preFillFormDataId = null; if (parameters.preFillData != null) { PrefillClient prefillClient = new PrefillClient(oneBlinkApiClient); PreFillMeta preFillMeta = await prefillClient.GetPreFillMeta((int)parameters.formId); string preFillMetaId = await prefillClient.PutPreFillData <dynamic>(parameters.preFillData, preFillMeta); preFillFormDataId = preFillMeta.preFillFormDataId; } string userToken = null; if (parameters.username != null) { AesUserToken aesUserToken = new AesUserToken(parameters.secret); userToken = aesUserToken.encrypt(parameters.username); } // Default expiry for token is 8 hours int jwtExpiry = parameters.expiryInSeconds ?? 28800; string token = Token.GenerateJSONWebToken(accessKey: oneBlinkApiClient.accessKey, oneBlinkApiClient.secretKey, jwtExpiry); string formUrl = _generateFormUrl( formId: parameters.formId, formsApp: formsApp, token: token, externalId: parameters.externalId, preFillFormDataId: preFillFormDataId, userToken: userToken, previousFormSubmissionApprovalId: parameters.previousFormSubmissionApprovalId ); string expiry = DateTime.UtcNow.AddSeconds(jwtExpiry).ToString("o"); return(new FormUrlResult() { formUrl = formUrl, expiry = expiry }); }
public async void can_crud_forms_app() { FormsAppsClient formsAppsClient = new FormsAppsClient(ACCESS_KEY, SECRET_KEY, TenantName.ONEBLINK_TEST); FormsAppPWASettings pWASettings = new FormsAppPWASettings(); var newFormsApp = new FormsListFormsApp(); newFormsApp.name = "Unit test app"; newFormsApp.slug = DateTime.Now.ToFileTimeUtc().ToString(); newFormsApp.organisationId = organisationId; newFormsApp.formsAppEnvironmentId = formsAppEnvironmentId; newFormsApp.formIds = new List <long>(); newFormsApp.pwaSettings = pWASettings; newFormsApp.notificationEmailAddresses = new List <string>() { "*****@*****.**" }; var savedFormsApp = await formsAppsClient.Create <FormsListFormsApp>(newFormsApp); Assert.NotNull(savedFormsApp); var retrievedFormsApp = await formsAppsClient.Get <FormsListFormsApp>(savedFormsApp.id); Assert.NotNull(retrievedFormsApp); String updatedName = "Unit test app updated"; retrievedFormsApp.name = updatedName; var updatedFormsApp = await formsAppsClient.Update <FormsListFormsApp>(retrievedFormsApp); Assert.Equal(updatedName, updatedFormsApp.name); // create and delete user FormsAppUser newUser = new FormsAppUser(); newUser.formsAppId = updatedFormsApp.id; newUser.email = "*****@*****.**"; FormsAppUser savedUser = await formsAppsClient.CreateUser(newUser); Assert.NotNull(savedUser); await formsAppsClient.DeleteUser(savedUser.id); await formsAppsClient.Delete(updatedFormsApp.id); try { var deletedFormsApp = await formsAppsClient.Get <FormsListFormsApp>(updatedFormsApp.id); throw new Exception("FormsApp was able to be retrieved after being deleted!"); } catch (OneBlink.SDK.OneBlinkAPIException ex) { Assert.Equal("App not found", ex.Message); } }