Esempio n. 1
0
        /// <summary>
        /// Create a factory to build an IHypermediaResolver that communicates with the server via HTTP, with the ability to cache the results of HypermediaLinks. The HttpClient used for the network communication is provided as a parameter to the factory method.
        /// </summary>
        /// <param name="builder">The HypermediaResolverBuilder</param>
        /// <param name="linkHcoCache">The cache to store and retrieve results of HypermediaLinks</param>
        /// <returns></returns>
        public static IHttpHypermediaResolverFactory CreatedCachedHttpHypermediaResolverFactory(
            this IHypermediaResolverBuilder builder,
            ILinkHcoCache <HttpLinkHcoCacheEntry> linkHcoCache)
        {
            var dependencies = builder.BuildDependencies();

            return(new HttpHypermediaResolverFactory(
                       dependencies.HypermediaReader,
                       dependencies.ParameterSerializer,
                       dependencies.ProblemReader,
                       linkHcoCache));
        }
Esempio n. 2
0
        /// <summary>
        /// Create an IHypermediaResolver that communicates with the Server via HTTP using the given HttpClient.
        /// </summary>
        /// <param name="builder">The HypermediaResolverBuilder</param>
        /// <param name="httpClient">The HttpClient to use for the network communication. Set up headers like Authentication beforehand.</param>
        /// <param name="disposeHttpClient">If <c>true</c>, disposes the injected HttpClient when the IHypermediaResolver is disposed</param>
        /// <returns></returns>
        public static IHypermediaResolver CreateHttpHypermediaResolver(
            this IHypermediaResolverBuilder builder,
            HttpClient httpClient,
            bool disposeHttpClient = true)
        {
            var dependencies = builder.BuildDependencies();
            var resolver     = new HttpHypermediaResolver(
                httpClient,
                disposeHttpClient,
                dependencies.HypermediaReader,
                dependencies.ParameterSerializer,
                dependencies.ProblemReader,
                NoLinkCache <HttpLinkHcoCacheEntry> .Instance);

            return(resolver);
        }
 /// <summary>
 /// Use the SIREN format (https://github.com/kevinswiber/siren) to read incoming data
 /// </summary>
 /// <returns></returns>
 public static IHypermediaResolverBuilder WithSirenHypermediaReader(this IHypermediaResolverBuilder builder)
 {
     return(builder.WithCustomHypermediaReader((register, parser) => new SirenHypermediaReader(register, parser)));
 }
 /// <summary>
 /// Incoming problem-JSON strings will be parsed using the System.Text.Json library
 /// </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IHypermediaResolverBuilder WithSystemTextJsonProblemReader(this IHypermediaResolverBuilder builder)
 {
     return(builder.WithCustomProblemStringReader(() => new SystemTextJsonProblemStringReader()));
 }
 /// <summary>
 /// Outgoing objects will be serialized into a JSON wrapper object using the System.Text.Json library
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="options"></param>
 /// <returns></returns>
 public static IHypermediaResolverBuilder WithSingleSystemTextJsonObjectParameterSerializer(this IHypermediaResolverBuilder builder, JsonWriterOptions options = default)
 {
     return(builder.WithCustomParameterSerializer(() => new SingleSystemTextJsonObjectParameterSerializer(options)));
 }
 /// <summary>
 /// Incoming JSON strings will be parsed using the System.Text.Json library
 /// </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IHypermediaResolverBuilder WithSystemTextJsonStringParser(this IHypermediaResolverBuilder builder)
 {
     return(builder.WithCustomStringParser(() => new SystemTextJsonStringParser()));
 }
Esempio n. 7
0
 /// <summary>
 /// Outgoing objects will be serialized into a JSON wrapper object using the Newtonsoft.Json library
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="formatting"></param>
 /// <returns></returns>
 public static IHypermediaResolverBuilder WithSingleNewtonsoftJsonObjectParameterSerializer(this IHypermediaResolverBuilder builder, Formatting formatting = Formatting.None)
 {
     return(builder.WithCustomParameterSerializer(() => new SingleNewtonsoftJsonObjectParameterSerializer(formatting)));
 }
Esempio n. 8
0
 /// <summary>
 /// Incoming JSON strings will be parsed using the Newtonsoft.Json library
 /// </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IHypermediaResolverBuilder WithNewtonsoftJsonStringParser(this IHypermediaResolverBuilder builder)
 {
     return(builder.WithCustomStringParser(() => new NewtonsoftJsonStringParser()));
 }