Esempio n. 1
0
        public static object CreateComponentInstance(InvokerContext context)
        {
            var assemblyResolverHelper = new ApiAssemblyLoader(context.BinPath);
            var instance = assemblyResolverHelper.LoadAndUnwrap(context.Assembly, context.Type);

            return(instance);
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
 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();
 }
Esempio n. 8
0
 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);
 }
Esempio n. 9
0
 public virtual string GetStringResult(InvokerContext context = null)
 {
     return this.Invoke<string>(context);
 }