/// <summary> /// Executes the workflow activity. /// </summary> /// <param name="executionContext">The execution context.</param> protected override void Execute(CodeActivityContext executionContext) { // Create the tracing service ITracingService tracingService = executionContext.GetExtension <ITracingService>(); if (tracingService == null) { throw new InvalidPluginExecutionException("Failed to retrieve tracing service."); } tracingService.Trace("Entered " + _activityName + ".Execute(), Activity Instance Id: {0}, Workflow Instance Id: {1}", executionContext.ActivityInstanceId, executionContext.WorkflowInstanceId); // Create the context IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>(); if (context == null) { throw new InvalidPluginExecutionException("Failed to retrieve workflow context."); } tracingService.Trace(_activityName + ".Execute(), Correlation Id: {0}, Initiating User: {1}", context.CorrelationId, context.InitiatingUserId); IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>(); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); try { string inputText = Content.Get(executionContext); if (inputText != string.Empty) { inputText = HtmlTools.StripHTML(inputText); IndexDocument myDoc = new IndexDocument { Content = inputText, Reference = (Email.Get(executionContext)).Id.ToString(), Subject = Subject.Get(executionContext), Title = Subject.Get(executionContext) }; DocumentWrapper myWrapper = new DocumentWrapper(); myWrapper.Document = new List <IndexDocument>(); myWrapper.Document.Add(myDoc); //serialize the myjsonrequest to json System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(myWrapper.GetType()); MemoryStream ms = new MemoryStream(); serializer.WriteObject(ms, myWrapper); string jsonMsg = Encoding.Default.GetString(ms.ToArray()); //create the webrequest object and execute it (and post jsonmsg to it) HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(_webAddress); //set request content type so it is treated as a regular form post req.ContentType = "application/x-www-form-urlencoded"; //set method to post req.Method = "POST"; StringBuilder postData = new StringBuilder(); //HttpUtility.UrlEncode //set the apikey request value postData.Append("apikey=" + System.Uri.EscapeDataString(_apiKey) + "&"); //postData.Append("apikey=" + _apiKey + "&"); //set the json request value postData.Append("json=" + jsonMsg + "&"); //set the index name request value postData.Append("index=" + _indexName); //create a stream byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postData.ToString()); req.ContentLength = bytes.Length; System.IO.Stream os = req.GetRequestStream(); os.Write(bytes, 0, bytes.Length); os.Close(); //get the response System.Net.WebResponse resp = req.GetResponse(); //deserialize the response to a ResponseBody object ResponseBody myResponse = new ResponseBody(); System.Runtime.Serialization.Json.DataContractJsonSerializer deserializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(myResponse.GetType()); myResponse = deserializer.ReadObject(resp.GetResponseStream()) as ResponseBody; } } catch (WebException exception) { string str = string.Empty; if (exception.Response != null) { using (StreamReader reader = new StreamReader(exception.Response.GetResponseStream())) { str = reader.ReadToEnd(); } exception.Response.Close(); } if (exception.Status == WebExceptionStatus.Timeout) { throw new InvalidPluginExecutionException( "The timeout elapsed while attempting to issue the request.", exception); } throw new InvalidPluginExecutionException(String.Format(CultureInfo.InvariantCulture, "A Web exception ocurred while attempting to issue the request. {0}: {1}", exception.Message, str), exception); } catch (FaultException <OrganizationServiceFault> e) { tracingService.Trace("Exception: {0}", e.ToString()); // Handle the exception. throw; } catch (Exception e) { tracingService.Trace("Exception: {0}", e.ToString()); throw; } tracingService.Trace("Exiting " + _activityName + ".Execute(), Correlation Id: {0}", context.CorrelationId); }
/// <summary> /// Executes the workflow activity. /// </summary> /// <param name="executionContext">The execution context.</param> protected override void Execute(CodeActivityContext executionContext) { // Create the tracing service ITracingService tracingService = executionContext.GetExtension <ITracingService>(); if (tracingService == null) { throw new InvalidPluginExecutionException("Failed to retrieve tracing service."); } tracingService.Trace("Entered " + _activityName + ".Execute(), Activity Instance Id: {0}, Workflow Instance Id: {1}", executionContext.ActivityInstanceId, executionContext.WorkflowInstanceId); // Create the context IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>(); if (context == null) { throw new InvalidPluginExecutionException("Failed to retrieve workflow context."); } tracingService.Trace(_activityName + ".Execute(), Correlation Id: {0}, Initiating User: {1}", context.CorrelationId, context.InitiatingUserId); IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>(); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); try { string inputText = TextInput.Get(executionContext); if (inputText != string.Empty) { inputText = HtmlTools.StripHTML(inputText); //create the webrequest object and execute it (and post jsonmsg to it) HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(_webAddress); //set request content type so it is treated as a regular form post req.ContentType = "application/x-www-form-urlencoded"; //set method to post req.Method = "POST"; StringBuilder postData = new StringBuilder(); //HttpUtility.UrlEncode //set the apikey request value postData.Append("apikey=" + System.Uri.EscapeDataString(_apiKey) + "&"); //postData.Append("apikey=" + _apiKey + "&"); //set the text request value postData.Append("text=" + System.Uri.EscapeDataString(inputText)); //postData.Append("text=" + inputText); //create a stream byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postData.ToString()); req.ContentLength = bytes.Length; System.IO.Stream os = req.GetRequestStream(); os.Write(bytes, 0, bytes.Length); os.Close(); //get the response System.Net.WebResponse resp = req.GetResponse(); //deserialize the response to a SentimentResponse object SentimentResponse myResponse = new SentimentResponse(); System.Runtime.Serialization.Json.DataContractJsonSerializer deserializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(myResponse.GetType()); myResponse = deserializer.ReadObject(resp.GetResponseStream()) as SentimentResponse; //set output values from the fields of the deserialzed myjsonresponse object Score.Set(executionContext, myResponse.Aggregate.Score); Sentiment.Set(executionContext, myResponse.Aggregate.Sentiment); } } catch (WebException exception) { string str = string.Empty; if (exception.Response != null) { using (StreamReader reader = new StreamReader(exception.Response.GetResponseStream())) { str = reader.ReadToEnd(); } exception.Response.Close(); } if (exception.Status == WebExceptionStatus.Timeout) { throw new InvalidPluginExecutionException( "The timeout elapsed while attempting to issue the request.", exception); } throw new InvalidPluginExecutionException(String.Format(CultureInfo.InvariantCulture, "A Web exception ocurred while attempting to issue the request. {0}: {1}", exception.Message, str), exception); } catch (FaultException <OrganizationServiceFault> e) { tracingService.Trace("Exception: {0}", e.ToString()); // Handle the exception. throw; } catch (Exception e) { tracingService.Trace("Exception: {0}", e.ToString()); throw; } tracingService.Trace("Exiting " + _activityName + ".Execute(), Correlation Id: {0}", context.CorrelationId); }