Example #1
0
        public IRestEndpoint GetFromResource(IEndpointContext endpointContext, [NotNull] IRestResource resource)
        {
            if (resource == null)
            {
                throw new ArgumentNullException(nameof(resource));
            }

            switch (resource)
            {
            case IRestCollection collection:
                return(new RestCollectionEndpoint(endpointContext, collection));

            case IRestItem item:
                return(new RestItemEndpoint(endpointContext, item));

            case IRestScalar scalar:
                return(new RestScalarEndpoint(endpointContext, scalar));

            case IRestDictionary dictionary:
                return(new RestDictionaryEndpoint(endpointContext, dictionary));

            case IRestDirectory directory:
                return(new RestDirectoryEndpoint(endpointContext, directory));

            default:
                throw new IncorrectResourceTypeException(resource.GetType());
            }
        }
        public override async Task <TResponse> GetAsync <TResponse>(IRestResource <BitBucketClientContext> resource, BitBucketClientContext context)
        {
            var url      = this.BuildUri(context, () => resource.GetResourceUrl(context));
            var response = await this.GetAsync(url.Uri).ConfigureAwait(false);

            return(await response.DeserializeAsync <TResponse>().ConfigureAwait(false));
        }
Example #3
0
        public IRestResource GetField(string fieldName)
        {
            if (!_context.Fields.FieldExists(fieldName))
            {
                throw new FieldNotFoundException(fieldName, true);
            }

            var namedField = new NamedField <TItem>(fieldName, _context.Fields);

            if (!_context.AuthorizationChecker.CanGetField(_item, namedField))
            {
                throw new NotAuthorizedForFieldException(AuthorizableVerb.Get, fieldName);
            }

            IRestResource fullResource = _context.Fields.GetFullResource(fieldName, _item, _context.Transaction);

            if (fullResource != null)
            {
                return(fullResource);
            }

            if (ScalarFieldHelper.IsScalarType(namedField.Reader.FieldType))
            {
                return(new EngineRestScalar <TItem>(_context, _item, namedField));
            }

            return(new EngineRestPoco <TItem>(_context, _item, namedField));
        }
Example #4
0
        public IRestEndpoint Next(INextPath resourceName)
        {
            IRestResource resource = Directory.GetChild(resourceName.GetCoded());

            if (resource == null)
            {
                return(null);
            }

            return(Context.Services.EndpointResolver.GetFromResource(Context, resource));
        }
        public IRestEndpoint GetEndpointFromPath(string resourcePath)
        {
            IRestResource startResource = _startResourceFactory.GetStartResource(_requestContext);

            var           context       = new EndpointContext(_requestContext, _services);
            IRestEndpoint startEndpoint = _services.EndpointResolver.GetFromResource(context, startResource);

            var           nextAggregator = new NextAggregator(startEndpoint, _services.NameSwitcher ?? new VoidNamingConventionSwitcher());
            IRestEndpoint endpoint       = nextAggregator.AggregateNext(resourcePath);

            //var wrappedEndpoint = new NamingSwitcherEndpointWrapper(endpoint, namingConventionSwitcher);

            return(endpoint);
        }
        private static IRestItem AsItem([NotNull] this IRestResource resource)
        {
            if (resource == null)
            {
                throw new ArgumentNullException(nameof(resource));
            }

            if (resource is IRestItem item)
            {
                return(item);
            }

            throw new ArgumentException("Resource was not an item.", nameof(resource));
        }
        private static IRestScalar AsScalar([NotNull] this IRestResource resource)
        {
            if (resource == null)
            {
                throw new ArgumentNullException(nameof(resource));
            }

            if (resource is IRestScalar scalar)
            {
                return(scalar);
            }

            throw new ArgumentException("Resource was not a scalar.", nameof(resource));
        }
        protected async Task <IRestActionResult> ExecuteAsync(IRestAction action, IRestResource resource = null)
        {
            try {
                resource = resource ?? DefaultResource;
                var context = new RestActionExecutionContext(ClientSettings, resource, _httpClient);
                return(await action.ExecuteAsync(context));
            }
            catch (Exception ex) {
                var(actionName, request) = action.ToLogInfo();
                await Log.WriteErrorAsync(GetType().Name, actionName, request, ex);

                throw;
            }
        }
        private static IRestCollection AsCollection([NotNull] this IRestResource resource)
        {
            if (resource == null)
            {
                throw new ArgumentNullException(nameof(resource));
            }

            if (resource is IRestCollection collection)
            {
                return(collection);
            }

            throw new ArgumentException("Resource was not a collection.", nameof(resource));
        }
        public override async Task <IEnumerable <TResponse> > GetAllAsync <TResponse>(IRestResource <BitBucketClientContext> resource,
                                                                                      BitBucketClientContext context)
        {
            var results = new List <TResponse>(200);
            var url     = this.BuildUri(context, () => resource.GetPagingUrl(context));

            var response = await this.GetAsync(url.Uri).ConfigureAwait(false);

            var page = await response.DeserializeAsync <BitBucketPagingResponse <TResponse> >().ConfigureAwait(false);

            results.AddRange(page.Values);

            while (page.Next.HasValue())
            {
                response = await this.GetAsync(page.Next).ConfigureAwait(false);

                page = await response.DeserializeAsync <BitBucketPagingResponse <TResponse> >().ConfigureAwait(false);

                results.AddRange(page.Values);
            }

            return(results);
        }
Example #11
0
 public SingletonStartResourceFactory(IRestResource singletonResource)
 {
     _singletonResource = singletonResource;
 }
 public abstract Task <IEnumerable <TResponse> > GetAllAsync <TResponse>(IRestResource <TContext> resource, TContext context);
Example #13
0
        public IRestEndpoint Next(INextPath fieldName)
        {
            IRestResource resource = Item.GetField(fieldName.GetCoded());

            return(Context.Services.EndpointResolver.GetFromResource(Context, resource));
        }
 public RestActionExecutionContext(ILykkeServiceRestClientSettings clientSettings, IRestResource resource, HttpClient client)
 {
     ClientSettings = clientSettings;
     Resource       = resource;
     Client         = client;
 }
        public override async Task <TResponse> PostAsync <TRequest, TResponse>(TRequest instance, IRestResource <BitBucketClientContext> resource,
                                                                               BitBucketClientContext context)
        {
            var url     = this.BuildUri(context, () => resource.GetActionUrl(context));
            var request = new HttpRequestMessage(HttpMethod.Post, url.Uri);

            request.Serialize(instance);

            var response = await this.SendAsync(request).ConfigureAwait(false);

            return(await response.DeserializeAsync <TResponse>().ConfigureAwait(false));
        }
 public abstract Task <TResponse> PostAsync <TRequest, TResponse>(TRequest instance, IRestResource <TContext> resource,
                                                                  TContext context);
 public abstract Task <PagingResponse <TResponse> > GetPageAsync <TResponse>(IRestResource <TContext> resource, TContext context);
 public abstract Task <TResponse> GetAsync <TResponse>(IRestResource <TContext> resource, TContext context);