Exemple #1
0
        public static void GetParameters(IBeetleConfig config, out IList <BeetleParameter> parameters)
        {
            if (config == null)
            {
                config = BeetleConfig.Instance;
            }
            var request = HttpContext.Current.Request;

            var queryParams = request.QueryString.ToDictionary();

            if (request.ContentLength > 0)
            {
                request.InputStream.Position = 0;
                var body = new StreamReader(request.InputStream).ReadToEnd();
                var d    = config.Serializer.Deserialize <Dictionary <string, dynamic> >(body);
                if (d != null)
                {
                    foreach (var i in d)
                    {
                        var v = i.Value;
                        queryParams.Add(i.Key, v == null ? string.Empty : v.ToString());
                    }
                }
            }

            parameters = Server.Helper.GetBeetleParameters(queryParams);
        }
Exemple #2
0
        public static void GetParameters(IBeetleConfig config, out IList <BeetleParameter> parameters, out dynamic postData)
        {
            if (config == null)
            {
                config = BeetleConfig.Instance;
            }
            var request = HttpContext.Current.Request;

            var queryParams = request.QueryString.ToDictionary();

            postData = null;
            if (request.ContentLength > 0)
            {
                request.InputStream.Position = 0;
                var body = new StreamReader(request.InputStream).ReadToEnd();
                postData = config.Serializer.DeserializeToDynamic(body);
                if (postData != null)
                {
                    foreach (var p in TypeDescriptor.GetProperties(postData))
                    {
                        var v = postData[p.Name];
                        queryParams.Add(p.Name, v == null ? string.Empty : v.ToString());
                    }
                }
            }

            parameters = Server.Helper.GetBeetleParameters(queryParams);
        }
Exemple #3
0
        public static void GetParameters(IBeetleConfig config, HttpRequest request, out IList <BeetleParameter> parameters)
        {
            if (config == null)
            {
                config = BeetleConfig.Instance;
            }

            var queryParams = request.Query.ToDictionary(k => k.Key, k => k.Value.ToString());

            if (queryParams.ContainsKey("!beetle-use-body") && request.ContentLength > 0)
            {
                if (request.Body.CanSeek)
                {
                    request.Body.Position = 0;
                }

                var body = new StreamReader(request.Body).ReadToEnd();
                var d    = config.Serializer.Deserialize <Dictionary <string, dynamic> >(body);
                if (d != null)
                {
                    foreach (var i in d)
                    {
                        var v = i.Value;
                        queryParams[i.Key] = v == null ? string.Empty : v.ToString();
                    }
                }
            }

            parameters = Server.Helper.GetBeetleParameters(queryParams);
        }
Exemple #4
0
        internal static IContentHandler <IEnumerable> GetEnumerableHandler(IBeetleConfig actionConfig, IBeetleService service)
        {
            var config = actionConfig ?? service?.Config;

            return(config?.EnumerableHandler
                   ?? service?.ContextHandler?.EnumerableHandler
                   ?? EnumerableHandler.Instance);
        }
Exemple #5
0
        internal static IQueryHandler <IQueryable> GetQueryHandler(IBeetleConfig actionConfig, IBeetleService service)
        {
            var config = actionConfig ?? service?.Config;

            return(config?.QueryableHandler
                   ?? service?.ContextHandler?.QueryableHandler
                   ?? QueryableHandler.Instance);
        }
Exemple #6
0
 public ActionContext(string name, object value,
                      IEnumerable <BeetleParameter> parameters,
                      int?maxResultCount,
                      IBeetleConfig config, IBeetleService service)
 {
     Name           = name;
     Value          = value;
     Parameters     = parameters;
     MaxResultCount = maxResultCount;
     Config         = config;
     Service        = service;
 }
Exemple #7
0
        public static object CreateType(string typeName, string initialValues, IBeetleConfig config)
        {
            var type = Type.GetType(typeName);

            if (type == null)
            {
                throw new ArgumentException(string.Format(Resources.TypeCouldNotBeFound, typeName));
            }

            var obj = Activator.CreateInstance(type);

            CopyValuesFromJson(initialValues, obj, config);
            return(obj);
        }
Exemple #8
0
        public static void CopyValuesFromJson(string source, object destination, IBeetleConfig config)
        {
            if (string.IsNullOrEmpty(source))
            {
                return;
            }

            var obj  = config.Serializer.DeserializeToDynamic(source);
            var type = destination.GetType();

            foreach (var p in obj.Properties())
            {
                var propType = GetMemberType(type, p.Name);
                var value    = obj[p.Name];
                SetMemberValue(destination, p.Name, config.Serializer.ConvertFromDynamic(value, propType));
            }
        }
Exemple #9
0
        public static IList <EntityBag> ResolveEntities(dynamic bundle, IBeetleConfig config, Metadata metadata,
                                                        out IList <EntityBag> unknownEntities)
        {
            if (config == null)
            {
                config = BeetleConfig.Instance;
            }

            var  dynEntities        = (IEnumerable)bundle.entities;
            var  entities           = new List <EntityBag>();
            var  unknowns           = new List <EntityBag>();
            bool forceUpdatePackage = bundle.forceUpdate ?? false;

            foreach (dynamic dynEntity in dynEntities)
            {
                // get entity tracking information
                var tracker = dynEntity["$t"];
                if (tracker == null)
                {
                    throw new InvalidOperationException(Resources.CannotFindTrackerInfo);
                }

                // get entity type and other information
                string typeName       = tracker.t.ToString();
                var    type           = Type.GetType(typeName);
                var    state          = Enum.Parse(typeof(EntityState), tracker.s.ToString());
                var    originalValues = new Dictionary <string, object>();
                // entity's index in the client save array
                var index = int.Parse(tracker.i.ToString());

                // read original values
                var ovs = tracker.o != null ? tracker.o as IEnumerable : null;
                if (ovs != null)
                {
                    foreach (dynamic ov in ovs)
                    {
                        string name     = ov.Name.ToString();
                        var    loopType = name.Split('.').Aggregate(type, GetMemberType);
                        if (loopType == null)
                        {
                            throw new BeetleException(string.Format(Resources.OriginalValuePropertyCouldNotBeFound, ov.Name));
                        }

                        var value = config.Serializer.ConvertFromDynamic(ov.Value, loopType);
                        originalValues.Add(name, value);
                    }
                }

                // deserialize entity
                var forceUpdate = forceUpdatePackage || (bool)(tracker.f ?? false);
                if (type != null)
                {
                    var        clientEntity = config.Serializer.ConvertFromDynamic(dynEntity, type);
                    var        entity       = config.Serializer.ConvertFromDynamic(dynEntity, type);
                    EntityType entityType   = null;
                    if (metadata != null)
                    {
                        entityType = metadata.Entities.FirstOrDefault(e => e.Name == typeName);
                    }

                    entities.Add(
                        new EntityBag(clientEntity, entity, state, originalValues, index, entityType, forceUpdate)
                        );
                }
                else
                {
                    unknowns.Add(new EntityBag(dynEntity, dynEntity, state, originalValues, index, forceUpdate));
                }
            }

            unknownEntities = unknowns;
            return(entities);
        }
        protected BeetleController(IBeetleConfig config)
        {
#endif
            Config = config ?? new BeetleConfig();
        }
        protected BeetleController(TContextHandler contextHandler, IBeetleConfig config) : base(config)
        {
#endif
            ContextHandler = contextHandler ?? throw new ArgumentNullException(nameof(contextHandler));
        }
 protected BeetleControllerBase(TContextHandler contextHandler, IBeetleConfig config) : base(config)
 {
Exemple #13
0
 protected BeetleController(IBeetleConfig config)
     : this(null, config)
 {
 }
 public BeetleJsonResult(IBeetleConfig config, ProcessResult processResult)
 {
     _config       = config;
     ProcessResult = processResult;
 }
 protected BeetleControllerBase(IBeetleConfig config)
 {
Exemple #16
0
 public BeetleActionFilterAttribute(IBeetleConfig config) => Config = config;
        public BeetleMediaTypeFormatter(IBeetleConfig config)
        {
            _config = config;

            SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse(config.Serializer.ContentType));
        }