public static object CreateComponentInstance(InvokerContext context) { var assemblyResolverHelper = new ApiAssemblyLoader(context.BinPath); var instance = assemblyResolverHelper.LoadAndUnwrap(context.Assembly, context.Type); return(instance); }
public ActionResult SentimentQueryLaunch(DateInterval interval) { if (Session["Query"] != null) { return(Json(new { Error = "There is already a sentiment query in progress." })); } var mq = new Queue <String>(); var ev = new AutoResetEvent(false); var context = new InvokerContext( new QuerySentiment(), new { interval.DateFrom, interval.DateTo, CompanyName = Session["CompanyName"] }, message => { mq.Enqueue(message); ev.Set(); }, track => { }); Session["Query"] = new QueryContext(context, mq, ev); Task.Run(() => { invoker.Invoke(context); ev.Set(); }).ContinueWith(t => { mq.Enqueue("Error: " + t.Exception.GetBaseException().ToString()); ev.Set(); }, TaskContinuationOptions.OnlyOnFaulted); return(SentimentQueryProgress()); }
public string GetProfileContent(string profileServiceName, string application, string profile) { var invoker = new ProfileInvoker <string>((i, node, path) => { string url = i.JoinURL(node, path); string query = $"?application={application}&profile={profile}"; try { var result = HttpRequestClient.Request(url + query, "GET", false).Send().GetBodyContent(true); return(result); } catch (Exception e) { LogManager.Error("GetProfileContent error", e.Message); } return(string.Empty); }); var context = new InvokerContext( new DirectoryContext("Profile/Pull", profileServiceName), new ClusterContext(FailoverCluster.NAME), new LoadBalanceContext(RandomLoadBalance.NAME)); return(ClientInvoker.Invoke(invoker, context)); }
public virtual ResultWithData <string> SayHello(string name, int age, InvokerContext context = null) { var actualContext = context as ServiceInvokerContext; var foodInvoker = new DemoInvoker <ResultWithData <string> >((invoker, node, path) => { LogManager.Info("==test==", JsonConvert.SerializeObject(node)); string url = invoker.JoinURL(node, path) + "?name=" + name + "&age=" + age; var request = HttpRequestClient.Request(url, "GET", false); request.Headers.Add("SystemId", actualContext.SystemId); request.Headers.Add("Version", actualContext.Version); return(request.Send() .GetBodyContent <ResultWithData <string> >(close: true)); }); return(ClientInvoker.Invoke(foodInvoker, context)); }
public async Task Invoke(HttpContext context) { var moduleRequest = new DefaultModuleRequestContext(context); // below directory should contain SampleApi output assemblies within a folder named same with X-ApiKey request header var binPath = Path.Combine(Program.ApiPluginPath, moduleRequest.ApiKey); var invokerContext = InvokerContext.Create(binPath, moduleRequest.Class, moduleRequest.Method, moduleRequest.SerializedContent); var invoker = OperationInvoker.Create(); var result = await invoker.Invoke(invokerContext); var serialized = JsonConvert.SerializeObject(result); var bytes = Encoding.UTF8.GetBytes(serialized); context.Response.ContentType = "application/json"; await context.Response.Body.WriteAsync(bytes, 0, bytes.Length); }
public static void Main(string[] args) { var binPath = Path.Combine(AppContext.BaseDirectory, "plugins"); const string serializedCalendarServiceCreateData = "{\"person\":{\"Firstname\":\"Den\",\"Lastname\":\"Olk\"},\"event\":{\"Date\":\"2016-03-24T00:00:53.1894199+02:00\",\"Title\":\"Sample event\"}}"; const string serializedContactServiceAddData = "{\"person\":{\"Firstname\":\"Den\",\"Lastname\":\"Olk\"}}"; const string serializedContactServiceAddListData = "{\"persons\":[{\"Firstname\":\"Den\",\"Lastname\":\"Olk\"}]}"; const string serializedCalculatorServiceSumData = "{\"value1\":3,\"value2\":7}"; const string serializedCalculatorServiceSumListData = "{\"values\":[3,-1,-2]}"; var contextCalendarCreate = InvokerContext.Create(binPath, "SampleApi", "SampleApi.Services.CalendarService", "Create", serializedCalendarServiceCreateData); var contextCalendarGetAll = InvokerContext.Create(binPath, "SampleApi", "SampleApi.Services.CalendarService", "GetAll", null); var contextContactAdd = InvokerContext.Create(binPath, "SampleApi", "SampleApi.Services.ContactService", "Add", serializedContactServiceAddData); var contextContactAddList = InvokerContext.Create(binPath, "SampleApi", "SampleApi.Services.ContactService", "Add", serializedContactServiceAddListData); var contextCalculatorSum = InvokerContext.Create(binPath, "SampleApi", "SampleApi.Services.CalculatorService", "Sum", serializedCalculatorServiceSumData); var contextCalculatorSumList = InvokerContext.Create(binPath, "SampleApi", "SampleApi.Services.CalculatorService", "Sum", serializedCalculatorServiceSumListData); var contextExternalProcess = InvokerContext.Create(binPath, "SampleApi", "SampleApi.Services.ExternalService", "Send", serializedContactServiceAddData); var invoker = OperationInvoker.Create(); var resultCalendarCreate = invoker.Invoke(contextCalendarCreate); var resultCalendarGetAll = invoker.Invoke(contextCalendarGetAll); var resultContactAdd = invoker.Invoke(contextContactAdd); var resultContactAddList = invoker.Invoke(contextContactAddList); var resultCalculatorSum = invoker.Invoke(contextCalculatorSum); var resultCalculatorSumList = invoker.Invoke(contextCalculatorSumList); var resultExternalProcess = invoker.Invoke(contextExternalProcess); Console.WriteLine("resultCalendarCreate = {0}\r\n", JsonConvert.SerializeObject(resultCalendarCreate)); Console.WriteLine("resultCalendarGetAll = {0}\r\n", JsonConvert.SerializeObject(resultCalendarGetAll)); Console.WriteLine("resultContactAdd = {0}\r\n", JsonConvert.SerializeObject(resultContactAdd)); Console.WriteLine("resultContactAddList = {0}\r\n", JsonConvert.SerializeObject(resultContactAddList)); Console.WriteLine("resultCalculatorSum = {0}\r\n", JsonConvert.SerializeObject(resultCalculatorSum)); Console.WriteLine("resultCalculatorSumList = {0}\r\n", JsonConvert.SerializeObject(resultCalculatorSumList)); Console.WriteLine("resultExternalProcess = {0}\r\n", JsonConvert.SerializeObject(resultExternalProcess)); Console.ReadLine(); }
public ActionResult SentimentQueryLaunch(DateInterval interval) { if (Session["Query"] != null) return Json(new { Error = "There is already a sentiment query in progress." }); var mq = new Queue<String>(); var ev = new AutoResetEvent(false); var context = new InvokerContext( new QuerySentiment(), new { interval.DateFrom, interval.DateTo, CompanyName = Session["CompanyName"] }, message => { mq.Enqueue(message); ev.Set(); }, track => { }); Session["Query"] = new QueryContext(context, mq, ev); Task.Run(() => { invoker.Invoke(context); ev.Set(); }).ContinueWith(t => { mq.Enqueue("Error: " + t.Exception.GetBaseException().ToString()); ev.Set(); }, TaskContinuationOptions.OnlyOnFaulted); return SentimentQueryProgress(); }
public virtual TestData GetData(TestData testData,string a, InvokerContext context = null) { var dic = new Dictionary<string, object>(); dic.Add("a", a); return this.Invoke<TestData>(testData, dic, context); }
public virtual string GetStringResult(InvokerContext context = null) { return this.Invoke<string>(context); }