public static async Task <object> FormLoadComplete(string formSessionInfoId) { Uri uri = await RestConstants.GetUriAsync(SERVICE_URL, "FormLoadComplete"); FormServiceRequestBody requestBody = new FormServiceRequestBody { UserContext = await AuthService.Instance.GetUserContextAsync(), FormSessionInfoId = formSessionInfoId }; try { HttpClient httpClient = new HttpClient(); var response = await httpClient.PostAsync(uri, RestConstants.SerializeBody(requestBody)); if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); var resultWrapper = JsonConvert.DeserializeObject <FormLoadCompleteResponse>(responseBody); return(resultWrapper.FormLoadCompleteResult); } } catch (Exception ex) { Debug.WriteLine(@" ERROR {0}", ex.Message); } return(null); }
// TODO dry these methods up with a good generic... public static async Task <StandAloneFormSessionInfo> GetFormSessionSurfaceJson(FlowExecutionStateInstruction instruction, bool useNamedSession = false) { Uri uri = await RestConstants.GetUriAsync(SERVICE_URL, "GetFormSessionSurfaceJson"); try { FormServiceRequestBody requestBody = new FormServiceRequestBody { UserContext = useNamedSession ? new UserContext(RestConstants.NamedSessionId) : await AuthService.Instance.GetUserContextAsync(), FormSessionInfoId = instruction.FormSessionId }; var serializedBody = RestConstants.SerializeBody(requestBody); HttpClient httpClient = new HttpClient(); var response = await httpClient.PostAsync(uri, serializedBody); if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); var resultWrapper = JsonConvert.DeserializeObject <GetFormSessionSurfaceJsonResponse>(responseBody); // we need $type field to specify component type in form data // NewtonJson can't deserialize field which starts with '$', so we needed to replace it to get correct deserialization. resultWrapper.GetFormSessionSurfaceJsonResult = resultWrapper.GetFormSessionSurfaceJsonResult.Replace("$type", "__type"); StandAloneFormSessionInfo info = JsonConvert.DeserializeObject <StandAloneFormSessionInfo>( resultWrapper.GetFormSessionSurfaceJsonResult); return(info); } } catch (Exception ex) { Debug.WriteLine(@" ERROR {0}", ex.Message); } return(null); }