예제 #1
0
        private static AweformResponse AweformResponseFromJSON(AweformJSON.Element json)
        {
            AweformResponse response = new AweformResponse();

            response.Id          = json.GetAttributeAsInt64("id");
            response.DateInUtc   = DateTime.Parse(json.GetAttributeAsString("dateInUTC"), CultureInfo.InvariantCulture);
            response.FormId      = json.GetAttributeAsInt64("formId");
            response.WorkspaceId = json.GetAttributeAsInt64("workspaceId");

            List <AweformJSON.Element> attributes = json.GetAttributes();

            foreach (AweformJSON.Element attribute in attributes)
            {
                if (attribute.Name == "id" || attribute.Name == "dateInUTC" || attribute.Name == "formId" || attribute.Name == "workspaceId")
                {
                    continue;
                }

                AweformQuestionAndAnswer questionAndAnswer = new AweformQuestionAndAnswer();
                questionAndAnswer.Question = attribute.Name;
                questionAndAnswer.Answer   = attribute.Value;

                response.Answers.Add(questionAndAnswer);
            }

            return(response);
        }
예제 #2
0
        private static AweformFormDefinition AweformFormDefinitionFromJSON(AweformJSON.Element json)
        {
            AweformFormDefinition formDefinition = new AweformFormDefinition();

            formDefinition.Id          = json.GetAttributeAsInt64("id");
            formDefinition.Name        = json.GetAttributeAsString("name");
            formDefinition.WorkspaceId = json.GetAttributeAsInt64("workspaceId");

            AweformJSON.Element components = json.GetAttribute("components");

            foreach (AweformJSON.Element component in components.Elements)
            {
                AweformFormComponent formComponent = new AweformFormComponent();
                formComponent.Name = component.GetAttributeAsString("name");
                formComponent.Type = (AweformFormComponentType)Enum.Parse(typeof(AweformFormComponentType), component.GetAttributeAsString("type"));

                if (formComponent.Type == AweformFormComponentType.PictureChoice || formComponent.Type == AweformFormComponentType.Rating || formComponent.Type == AweformFormComponentType.Select || formComponent.Type == AweformFormComponentType.YesNo)
                {
                    formComponent.Options = new List <String>();

                    AweformJSON.Element options = component.GetAttribute("options");

                    foreach (AweformJSON.Element option in options.Elements)
                    {
                        formComponent.Options.Add(option.Value);
                    }
                }

                formDefinition.Components.Add(formComponent);
            }

            return(formDefinition);
        }
예제 #3
0
        private static AweformWorkspace AweformWorkspaceFromJSON(AweformJSON.Element json)
        {
            AweformWorkspace workspace = new AweformWorkspace();

            workspace.Id   = json.GetAttributeAsInt64("id");
            workspace.Name = json.GetAttributeAsString("name");

            return(workspace);
        }
예제 #4
0
        private static AweformForm AweformFormFromJSON(AweformJSON.Element json)
        {
            AweformForm form = new AweformForm();

            form.Id          = json.GetAttributeAsInt64("id");
            form.Name        = json.GetAttributeAsString("name");
            form.WorkspaceId = json.GetAttributeAsInt64("workspaceId");

            return(form);
        }
예제 #5
0
        private AweformJSON.Element RequestPaged(String url, Int32 from, Int32 count)
        {
            Int32 startPage = (from / 100);
            Int32 endPage   = ((from + count - 1) / 100);

            Int32 startRequestIndex = (startPage * 100);

            Int32 page = startPage;

            AweformJSON.Element paged = null;

            while (page <= endPage)
            {
                AweformJSON.Element singlePage = Request(url + "?page=" + page);

                if (paged == null)
                {
                    paged = singlePage;
                }
                else
                {
                    foreach (AweformJSON.Element component in singlePage.Elements)
                    {
                        paged.Elements.Add(component);
                    }
                }

                if (singlePage.Elements.Count == 0)
                {
                    break;
                }

                page += 1;
            }

            from -= startRequestIndex;

            if (from > 0)
            {
                paged.Elements.RemoveRange(0, from);
            }

            if (count < paged.Elements.Count)
            {
                paged.Elements.RemoveRange(count, paged.Elements.Count - count);
            }

            if (paged == null)
            {
                throw new AweformException("Zero pages returned");
            }

            return(paged);
        }
예제 #6
0
        private static List <AweformFormDefinition> AweformFormDefinitionsFromJSON(AweformJSON.Element json)
        {
            List <AweformFormDefinition> formsDefinitions = new List <AweformFormDefinition>();

            foreach (AweformJSON.Element jsonForm in json.Elements)
            {
                formsDefinitions.Add(AweformFormDefinitionFromJSON(jsonForm));
            }

            return(formsDefinitions);
        }
예제 #7
0
        private static List <AweformResponse> AweformResponsesFromJSON(AweformJSON.Element json)
        {
            List <AweformResponse> responses = new List <AweformResponse>();

            foreach (AweformJSON.Element jsonForm in json.Elements)
            {
                responses.Add(AweformResponseFromJSON(jsonForm));
            }

            return(responses);
        }
예제 #8
0
        private static List <AweformWorkspace> AweformWorkspacesFromJSON(AweformJSON.Element json)
        {
            List <AweformWorkspace> workspaces = new List <AweformWorkspace>();

            foreach (AweformJSON.Element jsonForm in json.Elements)
            {
                workspaces.Add(AweformWorkspaceFromJSON(jsonForm));
            }

            return(workspaces);
        }
예제 #9
0
        private static List <AweformForm> AweformFormsFromJSON(AweformJSON.Element json)
        {
            List <AweformForm> forms = new List <AweformForm>();

            foreach (AweformJSON.Element jsonForm in json.Elements)
            {
                forms.Add(AweformFormFromJSON(jsonForm));
            }

            return(forms);
        }
예제 #10
0
        private static AweformUser AweformUserFromJSON(AweformJSON.Element json)
        {
            AweformUser user = new AweformUser();

            user.Id           = json.GetAttributeAsInt64("id");
            user.EmailAddress = json.GetAttributeAsString("emailAddress");
            user.Name         = json.GetAttributeAsString("name");
            user.AccountType  = json.GetAttributeAsString("accountType");

            return(user);
        }
예제 #11
0
        protected AweformJSON.Element Request(String url)
        {
            WebClient wc = new WebClient();

            String response = wc.DownloadString(APIURL + url + (url.Contains("?", StringComparison.InvariantCulture) ? "&" : "?") + "apiKey=" + APIKey);

            wc.Dispose();

            AweformJSON.Element component = AweformJSON.Parse(response);

            if (component.GetAttribute("error") != null)
            {
                throw new AweformException(component.GetAttributeAsString("error"));
            }

            return(component);
        }