예제 #1
0
        /// <summary>
        /// Implement to provide data to the collection.
        /// </summary>
        protected sealed override void Update()
        {
            var endpoint = EndpointFactory.Build(_updateRequestType, new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = JsonRepository.Execute <List <IJsonMember> >(Auth, endpoint, _additionalParameters);

            Items.Clear();
            Items.AddRange(newData.Select(jm =>
            {
                var member  = jm.GetFromCache <Member>(Auth);
                member.Json = jm;
                return(member);
            }));
        }
예제 #2
0
        public void Init()
        {
            this.TestFilePath = $"{AppDomain.CurrentDomain.BaseDirectory.Replace(@"bin\Debug", "TestFiles")}\\Destiny\\";

            this.TestContext = new LinkerSharpContext();

            var TestFactory = new EndpointFactory <IProducer>();

            this.TestProducer = TestFactory.GetFrom($"file->{this.TestFilePath}", this.TestContext);

            this.TestMessage = new TransmissionMessageDTO()
            {
                Content = "this is a test file.", Name = "Testfile.txt", Destiny = this.TestFilePath
            };
        }
예제 #3
0
        /// <summary>
        /// Implement to provide data to the collection.
        /// </summary>
        protected sealed override void Update()
        {
            var endpoint = EndpointFactory.Build(EntityRequestType.Card_Read_CheckLists, new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = JsonRepository.Execute <List <IJsonCheckList> >(Auth, endpoint);

            Items.Clear();
            Items.AddRange(newData.Select(jc =>
            {
                var checkList  = jc.GetFromCache <CheckList>(Auth);
                checkList.Json = jc;
                return(checkList);
            }));
        }
예제 #4
0
        /// <summary>
        /// Implement to provide data to the collection.
        /// </summary>
        protected sealed override void Update()
        {
            var endpoint = EndpointFactory.Build(EntityRequestType.Board_Read_Labels, new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = JsonRepository.Execute <List <IJsonLabel> >(Auth, endpoint);

            Items.Clear();
            Items.AddRange(newData.Select(jb =>
            {
                var board  = jb.GetFromCache <Label>(Auth);
                board.Json = jb;
                return(board);
            }));
        }
        /// <summary>
        /// Removes a member from a board.
        /// </summary>
        /// <param name="member">The member to remove.</param>
        public void Remove(Member member)
        {
            var error = NotNullRule <Member> .Instance.Validate(null, member);

            if (error != null)
            {
                throw new ValidationException <Member>(member, new[] { error });
            }

            var endpoint = EndpointFactory.Build(EntityRequestType.Board_Write_RemoveMember, new Dictionary <string, object> {
                { "_id", OwnerId }, { "_memberId", member.Id }
            });

            JsonRepository.Execute(Auth, endpoint);
        }
예제 #6
0
 public void add(EndpointFactory factory)
 {
     lock (this)
     {
         for (int i = 0; i < _factories.Count; i++)
         {
             EndpointFactory f = (EndpointFactory)_factories[i];
             if (f.type() == factory.type())
             {
                 Debug.Assert(false);
             }
         }
         _factories.Add(factory);
     }
 }
예제 #7
0
        protected override async Task SubmitData(IJsonCustomField json, CancellationToken ct)
        {
            var parameter = TrelloConfiguration.JsonFactory.Create <IJsonParameter>();

            parameter.Object = json;
            json.Type        = Data.Type;
            var endpoint = EndpointFactory.Build(EntityRequestType.CustomField_Write_Update, new Dictionary <string, object>
            {
                { "_cardId", _ownerId },
                { "_id", Data.Definition.Id },
            });
            var newData = await JsonRepository.Execute <IJsonParameter, IJsonCustomField>(Auth, endpoint, parameter, ct);

            Merge(newData);
        }
예제 #8
0
    public void AddressScheme_NoMatch_CaseSensitive()
    {
        // Arrange
        var endpoint = EndpointFactory.CreateRouteEndpoint(
            "/a",
            metadata: new object[] { new EndpointNameMetadata("name1"), new SuppressLinkGenerationMetadata(), });

        var addressScheme = CreateAddressScheme(endpoint);

        // Act
        var endpoints = addressScheme.FindEndpoints("NAME1");

        // Assert
        Assert.Empty(endpoints);
    }
예제 #9
0
        /// <summary>
        /// Implement to provide data to the collection.
        /// </summary>
        protected sealed override void Update()
        {
            var endpoint = EndpointFactory.Build(EntityRequestType.Card_Read_Attachments, new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = JsonRepository.Execute <List <IJsonAttachment> >(Auth, endpoint);

            Items.Clear();
            Items.AddRange(newData.Select(ja =>
            {
                var attachment  = TrelloConfiguration.Cache.Find <Attachment>(a => a.Id == ja.Id) ?? new Attachment(ja, OwnerId, Auth);
                attachment.Json = ja;
                return(attachment);
            }));
        }
예제 #10
0
 public EndpointFactory get(short type)
 {
     lock (this)
     {
         for (int i = 0; i < _factories.Count; i++)
         {
             EndpointFactory f = (EndpointFactory)_factories[i];
             if (f.type() == type)
             {
                 return(f);
             }
         }
         return(null);
     }
 }
        /// <summary>
        /// Manually updates the collection's data.
        /// </summary>
        /// <param name="ct">(Optional) A cancellation token for async processing.</param>
        public sealed override async Task Refresh(CancellationToken ct = default(CancellationToken))
        {
            var endpoint = EndpointFactory.Build(_requestType, new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = await JsonRepository.Execute <List <IJsonPowerUpData> >(Auth, endpoint, ct);

            Items.Clear();
            Items.AddRange(newData.Select(jn =>
            {
                var powerUp  = jn.GetFromCache <PowerUpData, IJsonPowerUpData>(Auth);
                powerUp.Json = jn;
                return(powerUp);
            }));
        }
예제 #12
0
        public async Task Delete(CancellationToken ct)
        {
            if (_deleted)
            {
                return;
            }
            CancelUpdate();

            var endpoint = EndpointFactory.Build(EntityRequestType.Label_Write_Delete, new Dictionary <string, object> {
                { "_id", Data.Id }
            });
            await JsonRepository.Execute(Auth, endpoint, ct);

            _deleted = true;
        }
예제 #13
0
 public void add(EndpointFactory factory)
 {
     lock(this)
     {
         for(int i = 0; i < _factories.Count; i++)
         {
             EndpointFactory f = (EndpointFactory)_factories[i];
             if(f.type() == factory.type())
             {
                 Debug.Assert(false);
             }
         }
         _factories.Add(factory);
     }
 }
예제 #14
0
        /// <summary>
        /// Implement to provide data to the collection.
        /// </summary>
        protected override void Update()
        {
            var endpoint = EndpointFactory.Build(_requestType, new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = JsonRepository.Execute <List <IJsonPowerUpData> >(Auth, endpoint);

            Items.Clear();
            Items.AddRange(newData.Select(jn =>
            {
                var powerUp  = jn.GetFromCache <PowerUpData>(Auth);
                powerUp.Json = jn;
                return(powerUp);
            }));
        }
예제 #15
0
        /// <summary>
        /// Implement to provide data to the collection.
        /// </summary>
        protected sealed override void Update()
        {
            IncorporateLimit(_additionalParameters);

            var endpoint = EndpointFactory.Build(_updateRequestType, _requestParameters);
            var newData  = JsonRepository.Execute <List <IJsonCard> >(Auth, endpoint, _additionalParameters);

            Items.Clear();
            Items.AddRange(newData.Select(jc =>
            {
                var card  = jc.GetFromCache <Card>(Auth);
                card.Json = jc;
                return(card);
            }));
        }
    public void AddressScheme_UnsuppressedEndpoint_IsUsed()
    {
        // Arrange
        var endpoint = EndpointFactory.CreateRouteEndpoint(
            "/a",
            metadata: new object[] { new SuppressLinkGenerationMetadata(), new EncourageLinkGenerationMetadata(), new RouteNameMetadata("a"), });

        // Act
        var addressScheme = CreateAddressScheme(endpoint);

        // Assert
        var allMatches = GetMatchesWithRequiredValuesPlusNamedMatches(addressScheme);

        Assert.Same(endpoint, Assert.Single(allMatches).Entry.Data);
    }
예제 #17
0
        /// <summary>
        /// Adds a label to the collection.
        /// </summary>
        /// <param name="name">The name of the label.</param>
        /// <param name="color">The color of the label to add.</param>
        /// <returns>The <see cref="Label"/> generated by Trello.</returns>
        public Label Add(string name, LabelColor?color)
        {
            var json = TrelloConfiguration.JsonFactory.Create <IJsonLabel>();

            json.Name           = name ?? string.Empty;
            json.Color          = color;
            json.ForceNullColor = !color.HasValue;
            json.Board          = TrelloConfiguration.JsonFactory.Create <IJsonBoard>();
            json.Board.Id       = OwnerId;

            var endpoint = EndpointFactory.Build(EntityRequestType.Board_Write_AddLabel);
            var newData  = JsonRepository.Execute(Auth, endpoint, json);

            return(new Label(newData, Auth));
        }
예제 #18
0
        /// <summary>
        /// Implement to provide data to the collection.
        /// </summary>
        protected sealed override void Update()
        {
            var endpoint = EndpointFactory.Build(EntityRequestType.Organization_Read_Memberships, new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = JsonRepository.Execute <List <IJsonOrganizationMembership> >(Auth, endpoint, _additionalParameters);

            Items.Clear();
            Items.AddRange(newData.Select(jom =>
            {
                var membership  = TrelloConfiguration.Cache.Find <OrganizationMembership>(c => c.Id == jom.Id) ?? new OrganizationMembership(jom, OwnerId, Auth);
                membership.Json = jom;
                return(membership);
            }));
        }
        internal sealed override async Task PerformRefresh(bool force, CancellationToken ct)
        {
            var endpoint = EndpointFactory.Build(EntityRequestType.Organization_Read_Memberships, new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = await JsonRepository.Execute <List <IJsonOrganizationMembership> >(Auth, endpoint, ct, AdditionalParameters);

            Items.Clear();
            Items.AddRange(newData.Select(jom =>
            {
                var membership  = TrelloConfiguration.Cache.Find <OrganizationMembership>(jom.Id) ?? new OrganizationMembership(jom, OwnerId, Auth);
                membership.Json = jom;
                return(membership);
            }));
        }
예제 #20
0
    public void GetPathByRouteValues_UsesFirstTemplateThatSucceeds(string[] routeNames, string[] routeValues, string expectedPath)
    {
        // Arrange
        var endpointControllerAction = EndpointFactory.CreateRouteEndpoint(
            "Home/Index",
            order: 3,
            defaults: new { controller = "Home", action = "Index", },
            requiredValues: new { controller = "Home", action = "Index", });
        var endpointController = EndpointFactory.CreateRouteEndpoint(
            "Home",
            order: 2,
            defaults: new { controller = "Home", action = "Index", },
            requiredValues: new { controller = "Home", action = "Index", });
        var endpointEmpty = EndpointFactory.CreateRouteEndpoint(
            "",
            order: 1,
            defaults: new { controller = "Home", action = "Index", },
            requiredValues: new { controller = "Home", action = "Index", });

        // This endpoint should be used to generate the link when an id is present
        var endpointControllerActionParameter = EndpointFactory.CreateRouteEndpoint(
            "Home/Index/{id}",
            order: 0,
            defaults: new { controller = "Home", action = "Index", },
            requiredValues: new { controller = "Home", action = "Index", });

        var linkGenerator = CreateLinkGenerator(endpointControllerAction, endpointController, endpointEmpty, endpointControllerActionParameter);

        var httpContext = CreateHttpContext();

        httpContext.Request.RouteValues = new RouteValueDictionary(new { controller = "Home", action = "Index" });

        var values = new RouteValueDictionary();

        for (int i = 0; i < routeNames.Length; i++)
        {
            values[routeNames[i]] = routeValues[i];
        }

        // Act
        var generatedPath = linkGenerator.GetPathByRouteValues(
            httpContext,
            routeName: null,
            values: values);

        // Assert
        Assert.Equal(expectedPath, generatedPath);
    }
예제 #21
0
        public void Init()
        {
            this.TestFilePath = $"{AppDomain.CurrentDomain.BaseDirectory.Replace(@"bin\Debug", "TestFiles")}\\Destiny\\";

            this.TestContext = new LinkerSharpContext();

            var TestFactory = new EndpointFactory <IProducer>();

            this.TestProducer = new FTPProducer($"ftp->{this.TestFilePath}", this.TestContext, new FTPConnectorMock(FTPConnectorMock.Behaviour.SUCCESS));


            this.TestMessage = new TransmissionMessageDTO()
            {
                Content = "This is a test file.", Name = "Testfile.txt", Destiny = this.TestFilePath
            };
        }
        internal sealed override async Task PerformRefresh(bool force, CancellationToken ct)
        {
            var endpoint = EndpointFactory.Build(EntityRequestType.Board_Read_CustomFields,
                                                 new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = await JsonRepository.Execute <List <IJsonCustomFieldDefinition> >(Auth, endpoint, ct, AdditionalParameters);

            Items.Clear();
            Items.AddRange(newData.Select(ja =>
            {
                var field  = TrelloConfiguration.Cache.Find <CustomFieldDefinition>(ja.Id) ?? new CustomFieldDefinition(ja, Auth);
                field.Json = ja;
                return(field);
            }));
        }
예제 #23
0
        protected override void SubmitData(IJsonCheckItem json)
        {
            // Checklist should be downloaded already since CheckItem ctor is internal,
            // but allow for the case where it has not been anyway.
            var checkList = TrelloConfiguration.Cache.Find <CheckList>(cl => cl.Id == _ownerId) ?? new CheckList(_ownerId);
            // This may make a call to get the card, but it can't be avoided.  We need its ID.
            var endpoint = EndpointFactory.Build(EntityRequestType.CheckItem_Write_Update, new Dictionary <string, object>
            {
                { "_cardId", checkList.Card.Id },
                { "_checklistId", _ownerId },
                { "_id", Data.Id },
            });
            var newData = JsonRepository.Execute(Auth, endpoint, json);

            Merge(newData);
        }
예제 #24
0
        /// <summary>
        /// Removes a member from the collection.
        /// </summary>
        /// <param name="ct">(Optional) A cancellation token for async processing.</param>
        /// <param name="member">The member to remove.</param>
        public async Task Remove(IMember member, CancellationToken ct = default(CancellationToken))
        {
            var error = NotNullRule <IMember> .Instance.Validate(null, member);

            if (error != null)
            {
                throw new ValidationException <IMember>(member, new[] { error });
            }

            var endpoint = EndpointFactory.Build(EntityRequestType.Card_Write_RemoveMember, new Dictionary <string, object> {
                { "_id", OwnerId }, { "_memberId", member.Id }
            });
            await JsonRepository.Execute(Auth, endpoint, ct);

            Items.Remove(member);
        }
예제 #25
0
        private static string GetId()
        {
            var endpoint = EndpointFactory.Build(EntityRequestType.Service_Read_Me);

            _myJson = JsonRepository.Execute <IJsonMember>(TrelloAuthorization.Default, endpoint);

            // If this object exists in the cache already as a regular Member, it needs to be replaced.
            var meAsMember = TrelloConfiguration.Cache.Find <Member>(m => m.Id == _myJson.Id);

            if (meAsMember != null)
            {
                TrelloConfiguration.Cache.Remove(meAsMember);
            }

            return(_myJson.Id);
        }
        public void Delete()
        {
            if (_deleted)
            {
                return;
            }
            CancelUpdate();

            var endpoint = EndpointFactory.Build(EntityRequestType.Organization_Write_Delete, new Dictionary <string, object> {
                { "_id", Data.Id }
            });

            JsonRepository.Execute(Auth, endpoint);

            _deleted = true;
        }
        /// <summary>
        /// Manually updates the collection's data.
        /// </summary>
        /// <param name="ct">(Optional) A cancellation token for async processing.</param>
        public sealed override async Task Refresh(CancellationToken ct = default(CancellationToken))
        {
            IncorporateLimit(_additionalParameters);

            _requestParameters["_id"] = OwnerId;
            var endpoint = EndpointFactory.Build(_updateRequestType, _requestParameters);
            var newData  = await JsonRepository.Execute <List <IJsonCard> >(Auth, endpoint, ct, _additionalParameters);

            Items.Clear();
            Items.AddRange(newData.Select(jc =>
            {
                var card  = jc.GetFromCache <Card, IJsonCard>(Auth);
                card.Json = jc;
                return(card);
            }));
        }
예제 #28
0
        /// <summary>
        /// Manually updates the collection's data.
        /// </summary>
        /// <param name="ct">(Optional) A cancellation token for async processing.</param>
        public sealed override async Task Refresh(CancellationToken ct = default(CancellationToken))
        {
            var endpoint = EndpointFactory.Build(EntityRequestType.CustomFieldDefinition_Read_Options,
                                                 new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = await JsonRepository.Execute <List <IJsonCustomDropDownOption> >(Auth, endpoint, ct);

            Items.Clear();
            Items.AddRange(newData.Select(jb =>
            {
                var option  = jb.GetFromCache <DropDownOption, IJsonCustomDropDownOption>(Auth);
                option.Json = jb;
                return(option);
            }));
        }
예제 #29
0
        internal sealed override async Task PerformRefresh(bool force, CancellationToken ct)
        {
            var endpoint = EndpointFactory.Build(EntityRequestType.Card_Read_Labels,
                                                 new Dictionary <string, object> {
                { "_id", OwnerId }
            });
            var newData = await JsonRepository.Execute <List <IJsonLabel> >(Auth, endpoint, ct, AdditionalParameters);

            Items.Clear();
            Items.AddRange(newData.Select(ja =>
            {
                var label  = ja.GetFromCache <Label, IJsonLabel>(Auth);
                label.Json = ja;
                return(label);
            }));
        }
예제 #30
0
    public void GetTemplateBinder_CanCache()
    {
        // Arrange
        var endpoint1  = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), });
        var dataSource = new DynamicEndpointDataSource(endpoint1);

        var linkGenerator = CreateLinkGenerator(dataSources: new[] { dataSource });

        var expected = linkGenerator.GetTemplateBinder(endpoint1);

        // Act
        var actual = linkGenerator.GetTemplateBinder(endpoint1);

        // Assert
        Assert.Same(expected, actual);
    }
예제 #31
0
        internal static async Task <string> GetId(TrelloAuthorization auth, CancellationToken ct)
        {
            var endpoint = EndpointFactory.Build(EntityRequestType.Service_Read_Me);

            _myJson = await JsonRepository.Execute <IJsonMember>(auth, endpoint, ct);

            // If this object exists in the cache already as a regular Member, it needs to be replaced.
            var meAsMember = TrelloConfiguration.Cache.Find <Member>(_myJson.Id);

            if (meAsMember != null)
            {
                TrelloConfiguration.Cache.Remove(meAsMember);
            }

            return(_myJson.Id);
        }
예제 #32
0
파일: WSEndpoint.cs 프로젝트: externl/ice
 public WSEndpointFactory(ProtocolInstance instance, EndpointFactory del)
 {
     _instance = instance;
     _delegate = del;
 }
예제 #33
0
 public EndpointFactory clone(ProtocolInstance instance, EndpointFactory del)
 {
     return new TcpEndpointFactory(instance);
 }
예제 #34
0
 //
 // Register an EndpointFactory.
 //
 public void addEndpointFactory(EndpointFactory factory)
 {
     _instance.endpointFactoryManager().add(factory);
 }
		public IEndpointFactory Build()
		{
			var endpointFactory = new EndpointFactory(_transportFactories, _endpointBuilders, _defaults);

			return endpointFactory;
		}