protected override void ExecuteCmdlet() { var uri = GetEndpointUri(); Stopwatch timer = new Stopwatch(); Dictionary <MeasureResponseTimeMode, List <long> > measurements = new Dictionary <MeasureResponseTimeMode, List <long> >(); foreach (var value in (MeasureResponseTimeMode[])Enum.GetValues(typeof(MeasureResponseTimeMode))) { if (value != MeasureResponseTimeMode.Undefined && value != MeasureResponseTimeMode.All && Mode.Has(value)) { measurements[value] = new List <long>(); } } try { for (int i = -(int)WarmUp; i < Count; i++) { bool isWarmUp = i < 0; var probe = WebRequest.CreateHttp(uri); probe.AllowAutoRedirect = false; ClientRuntimeContext.SetupRequestCredential(ClientContext, probe); WriteProgress(isWarmUp ? $"Warming up: {WarmUp + i + 1}/{WarmUp}": $"Sending: {uri}", i); HttpWebResponse response = null; try { try { timer.Restart(); response = probe.GetResponse() as HttpWebResponse; timer.Stop(); } catch (WebException e) { timer.Stop(); response = e.Response as HttpWebResponse; if (response == null) { throw; } } if (!isWarmUp) { long rountTrip = timer.ElapsedMilliseconds; long spRequestDuration = 0; if (Mode.Has(MeasureResponseTimeMode.SPRequestDuration) || Mode.Has(MeasureResponseTimeMode.Latency)) { //try get request duration from headers spRequestDuration = GetSpRequestDuration(response); if (Mode.Has(MeasureResponseTimeMode.SPRequestDuration)) { measurements[MeasureResponseTimeMode.SPRequestDuration].Add(spRequestDuration); } } if (Mode.Has(MeasureResponseTimeMode.RoundTrip)) { measurements[MeasureResponseTimeMode.RoundTrip].Add(rountTrip); } if (Mode.Has(MeasureResponseTimeMode.Latency)) { measurements[MeasureResponseTimeMode.Latency].Add(rountTrip - spRequestDuration); } } if (response.StatusCode != HttpStatusCode.OK) { WriteWarning($"Reply from {uri}: {(int)response.StatusCode}"); } } finally { if (response != null) { response.Dispose(); } } if (!isWarmUp) { WriteVerbose($"Reply from {uri}: {timer.ElapsedMilliseconds}ms"); } WriteProgress($"Sleeping: {Timeout}ms", i); Thread.Sleep((int)Timeout); } _progressRecord.RecordType = ProgressRecordType.Completed; WriteProgress(_progressRecord); } finally { List <ResponseTimeStatistics> response = new List <ResponseTimeStatistics>(); foreach (var value in (MeasureResponseTimeMode[])Enum.GetValues(typeof(MeasureResponseTimeMode))) { if (value != MeasureResponseTimeMode.Undefined && value != MeasureResponseTimeMode.All && Mode.Has(value)) { var statistics = GetStatistics(measurements[value]); statistics.Mode = value; response.Add(statistics); } measurements[value] = new List <long>(); } WriteObject(response, true); } }
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 }); } }
protected override void ExecuteCmdlet() { var uri = GetEndpointUri(); Stopwatch timer = new Stopwatch(); List <long> measurements = new List <long>(); try { for (int i = -(int)WarmUp; i < Count; i++) { bool isWarmUp = i < 0; var probe = WebRequest.CreateHttp(uri); probe.AllowAutoRedirect = false; ClientRuntimeContext.SetupRequestCredential(ClientContext, probe); WriteProgress(isWarmUp ? $"Warming up: {WarmUp + i + 1}/{WarmUp}": $"Sending: {uri}", i); HttpWebResponse response = null; try { try { timer.Restart(); response = probe.GetResponse() as HttpWebResponse; timer.Stop(); } catch (WebException e) { timer.Stop(); response = e.Response as HttpWebResponse; if (response == null) { throw; } } if (!isWarmUp) { measurements.Add(timer.ElapsedMilliseconds); } if (response.StatusCode != HttpStatusCode.OK) { WriteWarning($"Reply from {uri}: {(int)response.StatusCode}"); } } finally { if (response != null) { response.Dispose(); } } if (!isWarmUp) { WriteVerbose($"Reply from {uri}: {timer.ElapsedMilliseconds}ms"); } WriteProgress($"Sleeping: {Timeout}ms", i); Thread.Sleep((int)Timeout); } _progressRecord.RecordType = ProgressRecordType.Completed; WriteProgress(_progressRecord); } finally { WriteObject(GetStatistics(measurements)); } }
public override void DeployModel(object modelHost, DefinitionBase model) { NintexWorkflowDefinition WorkflowModel = (NintexWorkflowDefinition)model; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = null, ObjectType = typeof(Object), ObjectDefinition = WorkflowModel, ModelHost = modelHost }); // https://help.nintex.com/en-US/sdks/sdk2013/#Walkthroughs/WK_Prc_NWF2013_exportandpublishaworkflow.htm%3FTocPath%3DNintex%2520Software%2520Development%2520Kit%7CModifying%2520and%2520Extending%2520Nintex%2520Workflow%2520and%2520Forms%7C_____5 base.DeployModel(modelHost, model); var listModelHost = modelHost as ListModelHost; var baseModelHost = modelHost as CSOMModelHostBase; var web = baseModelHost.HostWeb; var list = listModelHost != null ? listModelHost.HostList : null; var clientContext = baseModelHost.HostClientContext; var formDigestValue = clientContext.GetFormDigestDirect().DigestValue; var publishUrl = UrlUtility.CombineUrl(web.Url, "/_vti_bin/NintexWorkflow/Workflow.asmx"); using (var executor = clientContext.WebRequestExecutorFactory.CreateWebRequestExecutor(clientContext, publishUrl)) { executor.RequestMethod = "POST"; executor.RequestContentType = "text/xml; charset=utf-8"; executor.RequestHeaders.Add("X-RequestDigest", formDigestValue); executor.RequestHeaders.Add("SOAPAction", "\"http://nintex.com/PublishFromNWFXml\""); executor.RequestHeaders.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); executor.WebRequest.AutomaticDecompression = DecompressionMethods.GZip; HttpWebRequest request = executor.WebRequest; ClientRuntimeContext.SetupRequestCredential(clientContext, request); var FireExecutingWebRequestEventInternalMethod = typeof(ClientContext).GetMethod("FireExecutingWebRequestEventInternal", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FireExecutingWebRequestEventInternalMethod.Invoke(clientContext, new object[] { new WebRequestEventArgs(executor) }); var requestStream = executor.GetRequestStream(); using (var streamWriter = new StreamWriter(requestStream, Encoding.UTF8)) { var formatedString = BuildSoapRequest(list, WorkflowModel); streamWriter.Write(formatedString); } requestStream.Close(); var result = ""; var response = request.GetResponse(); using (StreamReader sr = new StreamReader(response.GetResponseStream())) { result = sr.ReadToEnd(); result = ReadSoapResponse(result); } //executor.Execute(); //var result = ReadSoapResponse(executor); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = result, ObjectType = typeof(string), ObjectDefinition = WorkflowModel, ModelHost = modelHost }); } }