예제 #1
0
        public void Paginate(Func <ResourceCollection <TResource>, bool> getNextPage, string path = null, object pathParameters = null)
        {
            var link       = ResolveLink();
            var parameters = ParameterHelper.CombineParameters(AdditionalQueryParameters, pathParameters);

            client.Paginate(path ?? link, parameters, getNextPage);
        }
예제 #2
0
        public virtual List <TResource> Get(params string[] ids)
        {
            ThrowIfServerVersionIsNotCompatible();

            if (ids == null)
            {
                return(new List <TResource>());
            }
            var actualIds = ids.Where(id => !string.IsNullOrWhiteSpace(id)).ToArray();

            if (actualIds.Length == 0)
            {
                return(new List <TResource>());
            }

            var resources = new List <TResource>();
            var link      = ResolveLink();

            if (!Regex.IsMatch(link, @"\{\?.*\Wids\W"))
            {
                link += "{?ids}";
            }
            var parameters = ParameterHelper.CombineParameters(AdditionalQueryParameters, new { ids = actualIds });

            client.Paginate <TResource>(
                link,
                parameters,
                page =>
            {
                resources.AddRange(page.Items);
                return(true);
            });

            return(resources);
        }
예제 #3
0
        public List <TResource> GetAll()
        {
            var link       = ResolveLink();
            var parameters = ParameterHelper.CombineParameters(AdditionalQueryParameters, new { id = IdValueConstant.IdAll });

            return(client.Get <List <TResource> >(link, parameters));
        }
예제 #4
0
        public async Task Paginate(Func <ResourceCollection <TResource>, bool> getNextPage, string path = null, object pathParameters = null)
        {
            var link = await ResolveLink().ConfigureAwait(false);

            var parameters = ParameterHelper.CombineParameters(GetAdditionalQueryParameters(), pathParameters);
            await Client.Paginate(path ?? link, parameters, getNextPage).ConfigureAwait(false);
        }
예제 #5
0
        public virtual async Task <List <TResource> > Get(params string[] ids)
        {
            if (ids == null)
            {
                return(new List <TResource>());
            }
            var actualIds = ids.Where(id => !string.IsNullOrWhiteSpace(id)).ToArray();

            if (actualIds.Length == 0)
            {
                return(new List <TResource>());
            }

            var resources = new List <TResource>();

            var link = await ResolveLink().ConfigureAwait(false);

            if (!Regex.IsMatch(link, @"\{\?.*\Wids\W"))
            {
                link += "{?ids}";
            }

            var parameters = ParameterHelper.CombineParameters(GetAdditionalQueryParameters(), new { ids = actualIds });
            await Client.Paginate <TResource>(
                link,
                parameters,
                page =>
            {
                resources.AddRange(page.Items);
                return(true);
            })
            .ConfigureAwait(false);

            return(resources);
        }
예제 #6
0
        public async Task <List <TResource> > GetAll()
        {
            var link = await ResolveLink().ConfigureAwait(false);

            var parameters = ParameterHelper.CombineParameters(GetAdditionalQueryParameters(), new { id = IdValueConstant.IdAll });

            return(await Client.Get <List <TResource> >(link, parameters).ConfigureAwait(false));
        }
예제 #7
0
        public TResource Get(string idOrHref)
        {
            if (string.IsNullOrWhiteSpace(idOrHref))
            {
                return(null);
            }
            var link = ResolveLink();

            if (idOrHref.StartsWith("/", StringComparison.OrdinalIgnoreCase))
            {
                return(client.Get <TResource>(idOrHref, AdditionalQueryParameters));
            }
            var parameters = ParameterHelper.CombineParameters(AdditionalQueryParameters, new { id = idOrHref });

            return(client.Get <TResource>(link, parameters));
        }
예제 #8
0
        public ResourceCollection <EventResource> List(int skip                   = 0,
                                                       int?take                   = null,
                                                       string from                = null,
                                                       string to                  = null,
                                                       string regarding           = null,
                                                       string regardingAny        = null,
                                                       bool includeInternalEvents = true,
                                                       string user                = null,
                                                       string users               = null,
                                                       string projects            = null,
                                                       string environments        = null,
                                                       string eventGroups         = null,
                                                       string eventCategories     = null,
                                                       string tenants             = null,
                                                       string tags                = null,
                                                       long?fromAutoId            = null,
                                                       long?toAutoId              = null,
                                                       string documentTypes       = null,
                                                       string eventAgents         = null,
                                                       string projectGroups       = null)
        {
            var parameters = ParameterHelper.CombineParameters(AdditionalQueryParameters, new
            {
                skip,
                take,
                from,
                to,
                regarding,
                regardingAny,
                @internal = includeInternalEvents,
                user,
                users,
                projects,
                environments,
                eventGroups,
                eventCategories,
                tenants,
                tags,
                fromAutoId,
                toAutoId,
                documentTypes,
                eventAgents,
                projectGroups,
            });

            return(Client.List <EventResource>(Repository.Link("Events"), parameters));
        }
예제 #9
0
        public async Task <TaskDetailsResource> GetDetails(TaskResource resource, bool?includeVerboseOutput = null, int?tail = null)
        {
            var args = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase);

            if (includeVerboseOutput.HasValue)
            {
                args.Add("verbose", includeVerboseOutput.Value);
            }

            if (tail.HasValue)
            {
                args.Add("tail", tail.Value);
            }
            var parameters = ParameterHelper.CombineParameters(GetAdditionalQueryParameters(), args);

            return(await Client.Get <TaskDetailsResource>(resource.Link("Details"), parameters).ConfigureAwait(false));
        }
예제 #10
0
        public async Task <TResource> Get(string idOrHref)
        {
            if (string.IsNullOrWhiteSpace(idOrHref))
            {
                return(null);
            }

            var link = await ResolveLink().ConfigureAwait(false);

            var additionalQueryParameters = GetAdditionalQueryParameters();
            var parameters = ParameterHelper.CombineParameters(additionalQueryParameters, new { id = idOrHref });
            var getTask    = idOrHref.StartsWith("/", StringComparison.OrdinalIgnoreCase)
                ? Client.Get <TResource>(idOrHref, additionalQueryParameters).ConfigureAwait(false)
                : Client.Get <TResource>(link, parameters).ConfigureAwait(false);

            return(await getTask);
        }
예제 #11
0
 public async Task <ResourceCollection <EventResource> > List(int skip = 0,
                                                              string filterByUserId      = null,
                                                              string regardingDocumentId = null,
                                                              bool includeInternalEvents = false)
 {
     return(await Client.List <EventResource>(await Repository.Link("Events").ConfigureAwait(false), ParameterHelper.CombineParameters(GetAdditionalQueryParameters(), new
     {
         skip,
         user = filterByUserId,
         regarding = regardingDocumentId,
         @internal = includeInternalEvents.ToString()
     })).ConfigureAwait(false));
 }