Example #1
0
        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
            });
        }
Example #2
0
        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);
            }
        }