예제 #1
0
        internal MastodonConnection(string instanceUri, IFunctionContainer functionContainer)
        {
            this.InstanceUri = instanceUri;
            this.Auth        = MastodonAuthenticationHouse.Get(this.InstanceUri);
            this.container   = functionContainer;

            if (!this.Auth.HasAuthenticated)
            {
                // 認証完了した時の処理
                this.Auth.Completed += (sender, e) =>
                {
                    this.ImportAuthenticationData();
                    Task.Run(async() =>
                    {
                        await this.StartFunctionAsync();
                    }).Wait();
                };

                // 認証開始
                this.Auth.StartOAuthLogin();
            }
            else
            {
                this.ImportAuthenticationData();
                this.StartFunctionAsync();
            }
        }
        public ManagementToken(ODataRoute route, DataObjectEdmModel model)
        {
            Contract.Requires <ArgumentNullException>(route != null);
            Contract.Requires <ArgumentNullException>(model != null);

            Route     = route;
            _model    = model;
            Functions = new FunctionContainer(this);
        }
예제 #3
0
 internal MastodonConnection(string instanceUri, IFunctionContainer functionContainer, OAuthAccessTokenRepository tokenRepo)
 {
     this.InstanceUri = instanceUri;
     this.container   = functionContainer;
     InitializeAsync(tokenRepo);
 }
        /// <summary>
        /// Осуществляет регистрацию пользовательских OData-функций.
        /// </summary>
        /// <param name="container">Container of user functions.</param>
        /// <param name="dataService">Сервис данных.</param>
        public void RegisterODataUserFunctions(IFunctionContainer container, IDataService dataService)
        {
            Dictionary <string, Type> parametersTypes = new Dictionary <string, Type>();

            if (!container.IsRegistered("FunctionWithLcs1"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "entitySet", typeof(string) }
                };
                container.Register(new Function(
                                       "FunctionWithLcs1",
                                       (queryParameters, parameters) =>
                {
                    var type  = queryParameters.GetDataObjectType(parameters["entitySet"] as string);
                    var lcs   = queryParameters.CreateLcs(type);
                    var dobjs = dataService.LoadObjects(lcs);
                    return(dobjs.AsEnumerable());
                },
                                       typeof(IEnumerable <DataObject>),
                                       parametersTypes));
            }

            if (!container.IsRegistered("FunctionWithLcs2"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "entitySet", typeof(string) }, { "query", typeof(string) }
                };
                container.Register(new Function(
                                       "FunctionWithLcs2",
                                       (queryParameters, parameters) =>
                {
                    var type  = queryParameters.GetDataObjectType(parameters["entitySet"] as string);
                    var uri   = $"http://a/b/c?{parameters["query"]}";
                    var lcs   = queryParameters.CreateLcs(type, uri);
                    var dobjs = dataService.LoadObjects(lcs);
                    return(dobjs.Length);
                },
                                       typeof(int),
                                       parametersTypes));
            }

            if (!container.IsRegistered("FunctionString"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "stringParam", typeof(string) }
                };
                container.Register(new Function(
                                       "FunctionString",
                                       (queryParameters, parameters) => parameters["stringParam"],
                                       typeof(string),
                                       parametersTypes));
            }

            if (!container.IsRegistered("FunctionInt"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "intParam", typeof(int) }
                };
                container.Register(new Function(
                                       "FunctionInt",
                                       (queryParameters, parameters) => parameters["intParam"],
                                       typeof(int),
                                       parametersTypes));
            }

            if (!container.IsRegistered("FunctionEntity"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "intParam", typeof(int) }
                };
                container.Register(new Function(
                                       "FunctionEntity",
                                       (queryParameters, parameters) =>
                {
                    var result = (dataService as SQLDataService).Query <Страна>(Страна.Views.СтранаE).ToArray();
                    return(result[(int)parameters["intParam"]]);
                },
                                       typeof(Страна),
                                       parametersTypes));
            }

            if (!container.IsRegistered("FunctionEntitiesCollection"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "intParam", typeof(int) }
                };
                container.Register(new Function(
                                       "FunctionEntitiesCollection",
                                       (queryParameters, parameters) =>
                {
                    var top               = (int)parameters["intParam"];
                    var result            = (dataService as SQLDataService).Query <Страна>(Страна.Views.СтранаE).Take(top).ToArray();
                    queryParameters.Count = result.Length;
                    return(result);
                },
                                       typeof(IEnumerable <Страна>),
                                       parametersTypes));
            }

            if (!container.IsRegistered("FunctionSelectExpandEntity"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "intParam", typeof(int) }
                };
                container.Register(new Function(
                                       "FunctionSelectExpandEntity",
                                       (queryParameters, parameters) =>
                {
                    var result = (dataService as SQLDataService).Query <Медведь>(Медведь.Views.МедведьE).ToArray();
                    return(result[(int)parameters["intParam"]]);
                },
                                       typeof(Медведь),
                                       parametersTypes));
            }

            if (!container.IsRegistered("FunctionEnum"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "пол", typeof(tПол) }
                };
                container.Register(new Function(
                                       "FunctionEnum",
                                       (queryParameters, parameters) =>
                {
                    return((tПол)parameters["пол"]);
                },
                                       typeof(tПол),
                                       parametersTypes));
            }
        }
예제 #5
0
 private FunctionContainerBuilder()
 {
     _container = new FunctionContainer();
 }
예제 #6
0
        /// <summary>
        /// Осуществляет регистрацию пользовательских OData-actions.
        /// </summary>
        /// <param name="container">Container of user functions.</param>
        /// <param name="dataService">Сервис данных.</param>
        public void RegisterODataActions(IFunctionContainer container, IDataService dataService)
        {
            Dictionary <string, Type> parametersTypes = new Dictionary <string, Type>();

            if (!container.IsRegistered("ActionWithLcs"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "entitySet", typeof(string) }, { "query", typeof(string) }
                };
                container.Register(new Action(
                                       "ActionWithLcs",
                                       (queryParameters, parameters) =>
                {
                    var type  = queryParameters.GetDataObjectType(parameters["entitySet"] as string);
                    var uri   = $"http://a/b/c?{parameters["query"]}";
                    var lcs   = queryParameters.CreateLcs(type, uri);
                    var dobjs = dataService.LoadObjects(lcs);
                    return(dobjs.AsEnumerable());
                },
                                       typeof(IEnumerable <DataObject>),
                                       parametersTypes));
            }

            if (!container.IsRegistered("ActionVoid"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "entitySet", typeof(string) }, { "query", typeof(string) }
                };
                container.Register(new Action(
                                       "ActionVoid",
                                       (queryParameters, parameters) =>
                {
                    var type  = queryParameters.GetDataObjectType(parameters["entitySet"] as string);
                    var uri   = $"http://a/b/c?{parameters["query"]}";
                    var lcs   = queryParameters.CreateLcs(type, uri);
                    var dobjs = dataService.LoadObjects(lcs);
                    return(null);
                },
                                       typeof(void),
                                       parametersTypes));
            }

            if (!container.IsRegistered("ActionEnum"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "пол", typeof(tПол) }
                };
                container.Register(new Action(
                                       "ActionEnum",
                                       (queryParameters, parameters) =>
                {
                    return((tПол)parameters["пол"]);
                },
                                       typeof(tПол),
                                       parametersTypes));
            }

            if (!container.IsRegistered("ActionEntity"))
            {
                parametersTypes = new Dictionary <string, Type> {
                    { "entity", typeof(КлассСМножествомТипов) }, { "collection", typeof(IEnumerable <КлассСМножествомТипов>) }
                };
                container.Register(new Action(
                                       "ActionEntity",
                                       (queryParameters, parameters) =>
                {
                    IEnumerable <КлассСМножествомТипов> collection = parameters["collection"] as IEnumerable <КлассСМножествомТипов>;
                    var item = collection.ToArray()[0];
                    return(collection);
                },
                                       typeof(IEnumerable <КлассСМножествомТипов>),
                                       parametersTypes));
            }
        }