Пример #1
0
        /// <summary>
        /// Returns a new query being added a NavigateToSelfLinkQueryStep.
        /// </summary>
        /// <param name="hypermediaQuery">this IHypermediaQuery</param>
        /// <returns>the query</returns>
        public static IHypermediaQuery FollowSelf(this IHypermediaQuery hypermediaQuery)
        {
            var query = hypermediaQuery.Clone();

            query.AddStep(new NavigateToSelfLinkQueryStep());
            return(query);
        }
        /// <summary>
        /// Executes the query
        /// </summary>
        /// <param name="query">the query</param>
        /// <returns>result of the query</returns>
        public Task <CrichtonRepresentor> ExecuteQueryAsync(IHypermediaQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            return(query.ExecuteAsync(TransitionRequestHandler));
        }
Пример #3
0
        public HypermediaQueryLocation(Type queryType, IHypermediaQuery queryParameter = null)
        {
            if (!typeof(HypermediaQueryResult).GetTypeInfo().IsAssignableFrom(queryType))
            {
                throw new HypermediaQueryException($"HypermediaQueryLocation requires a type derived from '{typeof(HypermediaQueryResult)}'");
            }

            QueryType      = queryType;
            QueryParameter = queryParameter;
        }
Пример #4
0
        /// <summary>
        /// Returns a new query being added a NavigateToRelativeUrlQueryStep.
        /// </summary>
        /// <param name="hypermediaQuery">this IHypermediaQuery</param>
        /// <param name="url">the url</param>
        /// <returns>the query</returns>
        public static IHypermediaQuery WithUrl(this IHypermediaQuery hypermediaQuery, string url)
        {
            if (url == null)
            {
                throw new ArgumentNullException("url");
            }

            var query = hypermediaQuery.Clone();

            query.AddStep(new NavigateToRelativeUrlQueryStep(url));
            return(query);
        }
Пример #5
0
        /// <summary>
        /// Returns a new query being added a NavigateToTransitionQueryStep.
        /// </summary>
        /// <param name="hypermediaQuery">this IHypermediaQuery</param>
        /// <param name="rel">the rel</param>
        /// <returns>the query</returns>
        public static IHypermediaQuery Follow(this IHypermediaQuery hypermediaQuery, string rel)
        {
            if (rel == null)
            {
                throw new ArgumentNullException("rel");
            }

            var query = hypermediaQuery.Clone();

            query.AddStep(new NavigateToTransitionQueryStep(rel));
            return(query);
        }
Пример #6
0
        /// <summary>
        /// Returns a new query being added a NavigateToRepresentorQueryStep.
        /// </summary>
        /// <param name="hypermediaQuery">this IHypermediaQuery</param>
        /// <param name="representor">the representor</param>
        /// <returns>the query</returns>
        public static IHypermediaQuery WithRepresentor(this IHypermediaQuery hypermediaQuery,
                                                       CrichtonRepresentor representor)
        {
            if (representor == null)
            {
                throw new ArgumentNullException("representor");
            }

            var query = hypermediaQuery.Clone();

            query.AddStep(new NavigateToRepresentorQueryStep(representor));
            return(query);
        }
Пример #7
0
        /// <summary>
        /// Returns a new query being added a PostToTransitionQueryStep.
        /// </summary>
        /// <param name="hypermediaQuery">this IHypermediaQuery</param>
        /// <param name="rel">the rel</param>
        /// <param name="data">the data</param>
        /// <returns>the query</returns>
        public static IHypermediaQuery FollowWithData(this IHypermediaQuery hypermediaQuery, string rel, object data)
        {
            if (rel == null)
            {
                throw new ArgumentNullException("rel");
            }
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }

            var query = hypermediaQuery.Clone();

            query.AddStep(new PostToTransitionQueryStep(rel, data));
            return(query);
        }
Пример #8
0
 /// <summary>
 /// Base class for query results.
 /// </summary>
 /// <param name="query">The query used to retrieve this result.</param>
 protected HypermediaQueryResult(IHypermediaQuery query) : base(query)
 {
     Query = query;
 }
Пример #9
0
 public void AddQuery(string relation, IHypermediaQuery query)
 {
     Queries.Add(relation, query);
 }
Пример #10
0
 /// <summary>
 /// Returns a 201 Created and puts a Location to the Query result in the header.
 /// </summary>
 /// <param name="controller"></param>
 /// <param name="queryType">The type of the QueryResult which will be returned when following the Location header.</param>
 /// <param name="queryParameter">The query which was requested. Used by the Formatter to produce the Location header.</param>
 /// <returns></returns>
 public static ActionResult CreatedQuery(this ControllerBase controller, Type queryType, IHypermediaQuery queryParameter = null)
 {
     return(controller.Ok(new HypermediaQueryLocation(queryType, queryParameter)));
 }
Пример #11
0
 public void Init()
 {
     query   = MockRepository.GenerateMock <IHypermediaQuery>();
     Fixture = GetFixture();
 }
Пример #12
0
 public HypermediaObjectQueryReference(Type hypermediaObjectType, IHypermediaQuery query, object key = null) : base(hypermediaObjectType, key)
 {
     Query = query;
 }
Пример #13
0
 /// <summary>
 /// Constructor for HypermediaObject which are acces using a query. Required to propperly build the self Link.
 /// </summary>
 protected HypermediaObject(IHypermediaQuery query)
 {
     Init();
     // hypemedia object is a queryresult so it needs a selflink with query
     Links.Add(DefaultHypermediaRelations.Self, new HypermediaObjectQueryReference(GetType(), query));
 }
 public void Init()
 {
     sut     = new HypermediaQuery();
     Fixture = GetFixture();
 }