public Task ApplyAsync(IAbstractModelApplicationRequestContext context, AbstractModel abstractModel,
                               CancellationToken cancellationToken)
        {
            foreach (var parameter in context.RouteData.Values)
            {
                abstractModel.Add(new AbstractModel(parameter.Key, parameter.Value));
            }

            return(Task.FromResult(true));
        }
Esempio n. 2
0
        public bool Handles(IAbstractModelApplicationRequestContext context)
        {
            if (string.IsNullOrWhiteSpace(context.ContentType) ||
                !MediaTypeHeaderValue.TryParse(context.ContentType, out var contentType))
            {
                return(false);
            }

            return(contentType.MediaType.Equals("application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase) ||
                   contentType.MediaType.Equals("multipart/form-data", StringComparison.OrdinalIgnoreCase));
        }
Esempio n. 3
0
        public Task ApplyAsync(IAbstractModelApplicationRequestContext context, AbstractModel abstractModel,
                               CancellationToken cancellationToken)
        {
            foreach (var parameter in context.Query)
            {
                var subModel = new AbstractModel(parameter.Key);

                foreach (var value in parameter.Value)
                {
                    subModel.AddValue(value);
                }

                abstractModel.Add(subModel);
            }

            return(Task.FromResult(true));
        }
Esempio n. 4
0
        public async Task <AbstractModel> DeserializeAsync(IAbstractModelApplicationRequestContext context,
                                                           CancellationToken cancellationToken)
        {
            var abstractModel = new AbstractModel();

            // ReSharper disable once ForCanBeConvertedToForeach
            for (var x = 0; x < _abstractModelApplicators.Length; x++)
            {
                var applicator = _abstractModelApplicators[x];
                if (applicator.Handles(context))
                {
                    await applicator.ApplyAsync(context, abstractModel, cancellationToken);
                }
            }

            return(abstractModel);
        }
Esempio n. 5
0
        public async Task ApplyAsync(IAbstractModelApplicationRequestContext context, AbstractModel abstractModel,
                                     CancellationToken cancellationToken)
        {
            var formCollection = await new FormFeature(context.Form).ReadFormAsync(cancellationToken);

            foreach (var key in formCollection.Keys)
            {
                var newModel = new AbstractModel(key);

                foreach (var value in formCollection[key])
                {
                    newModel.AddValue(value);
                }

                abstractModel.Add(newModel);
            }

            foreach (var file in formCollection.Files ?? new FormFileCollection())
            {
                var name = file.Name;

                if (name == null && ContentDispositionHeaderValue.TryParse(file.ContentDisposition,
                                                                           out var contentDispositionHeaderValue))
                {
                    name = contentDispositionHeaderValue.Name.Value;

                    if (name.StartsWith("\"") && name.EndsWith("\""))
                    {
                        name = name.Substring(1, name.Length - 2);
                    }
                }

                if (name != null)
                {
                    var newModel = new AbstractModel(name);
                    newModel.AddObjectValue(file);
                    abstractModel.Add(newModel);
                }
            }
        }
Esempio n. 6
0
 public bool Handles(IAbstractModelApplicationRequestContext context)
 {
     return(true);
 }
 public async Task ApplyAsync(IAbstractModelApplicationRequestContext context, AbstractModel abstractModel,
                              CancellationToken cancellationToken)
 {
     InnerApply(JToken.Parse(await new StreamReader(context.Stream).ReadToEndAsync()), abstractModel);
 }
 public bool Handles(IAbstractModelApplicationRequestContext context)
 {
     return(context.ContentType != null &&
            context.ContentType.StartsWith("application/json", StringComparison.OrdinalIgnoreCase));
 }