提交 5866a8ad 编写于 作者: 麦壳饼's avatar 麦壳饼

Merge branch 'master' of https://github.com/IoTSharp/IoTSharp

......@@ -78,7 +78,7 @@ namespace IoTSharp.TaskAction
set
{
_value = value;
_DynamicOutput = JsonConvert.DeserializeObject<ExpandoObject>(_value, expConverter);
_DynamicOutput = JsonConvert.DeserializeObject<object>(_value, expConverter);
}
}
}
......
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RestSharp;
namespace IoTSharp.TaskAction
{
[DisplayName("用于遥测数组推送的执行器")]
public class TelemetryArrayPullExcutor : ITaskAction
{
public TelemetryArrayPullExcutor()
{
}
public override Task<TaskActionOutput> ExecuteAsync(TaskActionInput input)
{
try
{
// var cache = this.ServiceProvider.GetService(typeof(IMemoryCache)) as IMemoryCache;
return SendData(input);
}
catch (Exception ex)
{
return Task.FromResult(new TaskActionOutput() {ExecutionInfo = ex.Message, ExecutionStatus = false});
}
}
private void Login(ModelExecutorConfig config)
{
}
private async Task<TaskActionOutput> SendData(TaskActionInput input)
{
try
{
var config = JsonConvert.DeserializeObject<ModelExecutorConfig>(input.ExecutorConfig);
var restclient = new RestClient(config.BaseUrl);
restclient.AddDefaultHeader(KnownHeaders.Accept, "*/*");
var request =
new RestRequest(config.Url + (input.DeviceId == Guid.Empty ? "" : "/" + input.DeviceId));
request.AddHeader("X-Access-Token",
config.Token);
request.RequestFormat = DataFormat.Json;
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddJsonBody(JsonConvert.DeserializeObject(input.Input));
var response = await restclient.ExecutePostAsync(request);
if (response.StatusCode == HttpStatusCode.OK)
{
var result = JsonConvert.DeserializeObject<MessagePullResult>(response.Content);
if (result is {success: true})
{
return new TaskActionOutput()
{
ExecutionInfo = response.Content, ExecutionStatus = result.success,
DynamicOutput = input.DynamicInput
};
;
}
else
{
return new TaskActionOutput() {ExecutionInfo = response.Content, ExecutionStatus = false};
;
}
}
else
{
return new TaskActionOutput()
{
ExecutionInfo =
$"StatusCode:{response.StatusCode} StatusDescription:{response.StatusDescription} {response.ErrorMessage}",
ExecutionStatus = false
};
}
}
catch (Exception ex)
{
return new TaskActionOutput() {ExecutionInfo = ex.Message, ExecutionStatus = false};
;
}
}
public static object JPropertyToObject(JProperty property)
{
object obj = null;
switch (property.Value.Type)
{
case JTokenType.Integer:
obj = property.Value.ToObject<int>();
break;
case JTokenType.Float:
obj = property.Value.ToObject<float>();
break;
case JTokenType.String:
obj = property.Value.ToObject<string>();
break;
case JTokenType.Boolean:
obj = property.Value.ToObject<bool>();
break;
case JTokenType.Date:
obj = property.Value.ToObject<DateTime>();
break;
case JTokenType.Bytes:
obj = property.Value.ToObject<byte[]>();
break;
case JTokenType.Guid:
obj = property.Value.ToObject<Guid>();
break;
case JTokenType.Uri:
obj = property.Value.ToObject<Uri>();
break;
case JTokenType.TimeSpan:
obj = property.Value.ToObject<TimeSpan>();
break;
default:
obj = property.Value;
break;
}
return obj;
}
class MessagePullResult
{
public bool success { get; set; }
public string message { get; set; }
public string code { get; set; }
public long timestamp { get; set; }
public dynamic result { get; set; }
}
public class LoginParam
{
}
public class ParamObject
{
public string keyName { get; set; }
public dynamic value { get; set; }
}
class ModelExecutorConfig
{
public string Url { get; set; }
public string BaseUrl { get; set; }
public string Method { get; set; }
public string Password { get; set; }
public string UserName { get; set; }
public string Token { get; set; }
}
}
}
......@@ -1112,7 +1112,10 @@ namespace IoTSharp.Controllers
var __ruleid = obj.Value<string>();
var ruleid = Guid.Parse(__ruleid);
var d = formdata.Value<JToken>().ToObject(typeof(ExpandoObject));
var d = formdata.Value<JToken>().ToObject<object>();
var testabizId = Guid.NewGuid().ToString(); //根据业务保存起来,用来查询执行事件和步骤
var result = await _flowRuleProcessor.RunFlowRules(ruleid, d, Guid.Empty, EventType.TestPurpose, testabizId);
......
......@@ -10,7 +10,6 @@ using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Threading.Tasks;
......@@ -288,7 +287,7 @@ namespace IoTSharp.FlowRuleEngine
try
{
string result = pse.Do(scriptsrc, taskoperation.Data);
obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj = JsonConvert.DeserializeObject<object>(result);
}
catch (Exception ex)
{
......@@ -307,7 +306,7 @@ namespace IoTSharp.FlowRuleEngine
{
try{
string result = pse.Do(scriptsrc, taskoperation.Data);
obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj = JsonConvert.DeserializeObject<object>(result);
}
catch (Exception ex)
{
......@@ -329,7 +328,7 @@ namespace IoTSharp.FlowRuleEngine
try
{
string result = lua.Do(scriptsrc, taskoperation.Data);
obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj = JsonConvert.DeserializeObject<object>(result);
}
catch (Exception ex)
{
......@@ -351,7 +350,7 @@ namespace IoTSharp.FlowRuleEngine
try
{
string result = js.Do(scriptsrc, taskoperation.Data);
obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj = JsonConvert.DeserializeObject<object>(result);
}
catch (Exception ex)
......@@ -375,7 +374,7 @@ namespace IoTSharp.FlowRuleEngine
{
string result = js.Do(scriptsrc, taskoperation.Data);
obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj = JsonConvert.DeserializeObject<object>(result);
}
catch (Exception ex)
{
......@@ -611,7 +610,7 @@ namespace IoTSharp.FlowRuleEngine
using (var pse = _sp.GetRequiredService<PythonScriptEngine>())
{
string result = pse.Do(scriptsrc, data);
obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj = JsonConvert.DeserializeObject<object>(result);
}
}
break;
......@@ -621,7 +620,7 @@ namespace IoTSharp.FlowRuleEngine
using (var pse = _sp.GetRequiredService<SQLEngine>())
{
string result = pse.Do(scriptsrc, data);
obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj = JsonConvert.DeserializeObject<object>(result);
}
}
......@@ -632,7 +631,7 @@ namespace IoTSharp.FlowRuleEngine
using (var lua = _sp.GetRequiredService<LuaScriptEngine>())
{
string result = lua.Do(scriptsrc, data);
obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj = JsonConvert.DeserializeObject<object>(result);
}
}
break;
......@@ -642,7 +641,7 @@ namespace IoTSharp.FlowRuleEngine
using (var js = _sp.GetRequiredService<JavaScriptEngine>())
{
string result = js.Do(scriptsrc, data);
obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj = JsonConvert.DeserializeObject<object>(result);
}
}
break;
......@@ -652,7 +651,7 @@ namespace IoTSharp.FlowRuleEngine
using (var js = _sp.GetRequiredService<CSharpScriptEngine>())
{
string result = js.Do(scriptsrc, data);
obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj = JsonConvert.DeserializeObject<object>(result);
}
}
break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册