public static NintexFormSerialize FromDefinition(NintexFormDefinition def, ClientContext ctx, Web web, List list) { var result = new NintexFormSerialize(); result.listId = list.Id.ToString("B"); result.contentTypeId = def.ListContentTypeNameOrId; result.formXml = def.FormXml; return(result); }
public override void DeployModel(object modelHost, DefinitionBase model) { NintexFormDefinition formModel = (NintexFormDefinition)model; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = null, ObjectType = typeof(Object), ObjectDefinition = formModel, ModelHost = modelHost }); //https://help.nintex.com/en-US/sdks/sdk2013/FormSDK/Topics/SDK_NF_API_OPS__2013_WWSvcOps.htm?tocpath=Nintex%20Software%20Development%20Kit%7CNintex%20Forms%202013%20Software%20Development%20Kit%7CNintex%20Forms%20SDK%20Samples%7CMigrate%20Forms%20with%20the%20Nintex%20Forms%20API%7CInvoking%20methods%20from%20the%20REST%20API%7C_____2 //https://help.nintex.com/en-US/sdks/sdk2013/#FormSDK/Topics/SDK_NF_API_REF_PublishFormXml.htm%3FTocPath%3DNintex%2520Software%2520Development%2520Kit%7CNintex%2520Forms%25202013%2520Software%2520Development%2520Kit%7CNintex%2520Forms%25202013%2520SDK%2520Reference%7CWeb%2520Services%2520Reference%7C_____4 base.DeployModel(modelHost, model); var listModelHost = modelHost.WithAssertAndCast <ListModelHost>("modelHost", value => value.RequireNotNull()); var web = listModelHost.HostWeb; var list = listModelHost.HostList; var clientContext = listModelHost.HostClientContext; string formDigestValue = clientContext.GetFormDigestDirect().DigestValue; var publishUrl = UrlUtility.CombineUrl(clientContext.Url, "/_vti_bin/NintexFormsServices/NfRestService.svc/PublishFormXml"); using (var webrequestexecutor = clientContext.WebRequestExecutorFactory.CreateWebRequestExecutor(clientContext, publishUrl)) { webrequestexecutor.RequestContentType = "application/json"; webrequestexecutor.RequestContentType = "application/json; charset=utf-8"; webrequestexecutor.RequestHeaders.Add("X-RequestDigest", formDigestValue); //executor.RequestHeaders.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); //executor.RequestHeaders.Add(HttpRequestHeader.ContentEncoding, "utf-8"); webrequestexecutor.RequestMethod = "POST"; var serializedObject = NintexFormSerialize.FromDefinition(formModel, clientContext, web, list); HttpWebRequest request = webrequestexecutor.WebRequest; ClientRuntimeContext.SetupRequestCredential(clientContext, request); var FireExecutingWebRequestEventInternalMethod = typeof(ClientContext).GetMethod("FireExecutingWebRequestEventInternal", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FireExecutingWebRequestEventInternalMethod.Invoke(clientContext, new object[] { new WebRequestEventArgs(webrequestexecutor) }); var requestStream = webrequestexecutor.GetRequestStream(); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(NintexFormSerialize)); ser.WriteObject(requestStream, serializedObject); requestStream.Close(); var result = ""; var response = request.GetResponse(); using (StreamReader sr = new StreamReader(response.GetResponseStream())) { result = sr.ReadToEnd(); } //executor.Execute(); //string result = ""; //using (StreamReader sr = new StreamReader(executor.GetResponseStream())) //{ // result = sr.ReadToEnd(); //} InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = result, ObjectType = typeof(string), ObjectDefinition = formModel, ModelHost = modelHost }); } }