private ResourceSettings GetWorkingSettings(ResourceSettings settings)
        {
            if (settings == null)
            {
                return(null);
            }

            var workingSettings = new ResourceSettings();

            workingSettings.BaseUri            = settings.BaseUri;
            workingSettings.SerializerSettings = settings.SerializerSettings;
            foreach (var route in settings.Routes)
            {
                var workingRoute = new Route();
                workingSettings.Routes.Add(workingRoute);

                if (route.Nodes != null)
                {
                    workingRoute.Nodes = route.Nodes.ToArray();
                }
                if (route.Parameters != null)
                {
                    workingRoute.Parameters = route.Parameters.ToArray();
                }
                if (route.Templates != null)
                {
                    workingRoute.Templates = route.Templates.ToArray();
                }
            }

            return(workingSettings);
        }
Beispiel #2
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="Resource{T}" /> class.
 /// </summary>
 /// <param name="client">The client.</param>
 /// <param name="settings">The settings.</param>
 /// <param name="onError">The on error.</param>
 /// <param name="expression">The expression.</param>
 public Resource(INetClient client, ResourceSettings settings, Action <Exception> onError, Expression expression)
 {
     Client     = client;
     Settings   = settings;
     Provider   = new RestQueryProvider <T>(this);
     OnError    = onError;
     Expression = expression ?? Expression.Constant(this);
 }
Beispiel #3
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="Resource{T}" /> class.
 /// </summary>
 public Resource()
 {
     if (Settings == null)
     {
         Settings = new ResourceSettings();
     }
     Settings.Configure(this);
     Provider   = new RestQueryProvider <T>(this);
     Expression = Expression.Constant(this);
 }
        /// <summary>
        ///     Initializes a new instance of the <see cref="RestClient" /> class.
        /// </summary>
        protected RestClient()
        {
            foreach (var property in GetType().GetProperties())
            {
                if (!IsAssignableToGenericType(property.PropertyType, typeof(IQueryable <>)))
                {
                    continue;
                }

                if (property.GetValue(this) != null)
                {
                    continue;
                }

                object element;
                if (property.PropertyType.IsGenericType)
                {
                    var concreteType = Type.GetType($"{property.Name}Resource", false);
                    if (concreteType == null)
                    {
                        var settings = new ResourceSettings();
                        settings.Configure(this, property);

                        var resourceType = typeof(Resource <>).MakeGenericType(property.PropertyType.GenericTypeArguments);
                        element = Activator.CreateInstance(resourceType, this, settings, null, null);
                    }
                    else
                    {
                        element = Activator.CreateInstance(concreteType);
                    }
                }
                else
                {
                    element = Activator.CreateInstance(property.PropertyType);
                }
                property.SetValue(this, element);
            }
        }
Beispiel #5
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="Resource{T}" /> class.
 /// </summary>
 /// <param name="settings">The settings.</param>
 public Resource(ResourceSettings settings)
 {
     Settings   = settings;
     Provider   = new RestQueryProvider <T>(this);
     Expression = Expression.Constant(this);
 }