Line data Source code
1 : using System.Collections.Generic;
2 : using System.Globalization;
3 : using System.Linq;
4 :
5 : namespace Cqrs.WebApi.Formatters.FormMultipart.Infrastructure
6 : {
7 : public class FormData
8 0 : {
9 : private List<ValueFile> _files;
10 :
11 : private List<ValueString> _fields;
12 :
13 : public List<ValueFile> Files
14 : {
15 : get
16 : {
17 : if(_files == null)
18 : _files = new List<ValueFile>();
19 : return _files;
20 : }
21 : set
22 : {
23 : _files = value;
24 : }
25 : }
26 :
27 : public List<ValueString> Fields
28 : {
29 : get
30 : {
31 : if(_fields == null)
32 : _fields = new List<ValueString>();
33 : return _fields;
34 : }
35 : set
36 : {
37 : _fields = value;
38 : }
39 : }
40 :
41 0 : public List<string> GetAllKeys()
42 : {
43 : return Fields.Select(m => m.Name).Concat(Files.Select(m => m.Name)).ToList();
44 : }
45 :
46 0 : public void Add(string name, string value)
47 : {
48 : Fields.Add(new ValueString { Name = name, Value = value});
49 : }
50 :
51 0 : public void Add(string name, HttpFile value)
52 : {
53 : Files.Add(new ValueFile { Name = name, Value = value });
54 : }
55 :
56 0 : public bool TryGetValue(string name, CultureInfo culture, out string value)
57 : {
58 : var field = Fields.FirstOrDefault(m => culture.CompareInfo.Compare(m.Name, name, CompareOptions.IgnoreCase) == 0);
59 : if (field != null)
60 : {
61 : value = field.Value;
62 : return true;
63 : }
64 : value = null;
65 : return false;
66 : }
67 :
68 0 : public bool TryGetValue(string name, CultureInfo culture, out HttpFile value)
69 : {
70 : var field = Files.FirstOrDefault(m => culture.CompareInfo.Compare(m.Name, name, CompareOptions.IgnoreCase) == 0);
71 : if (field != null)
72 : {
73 : value = field.Value;
74 : return true;
75 : }
76 : value = null;
77 : return false;
78 : }
79 :
80 0 : public List<string> GetValues(string name, CultureInfo culture)
81 : {
82 : return Fields
83 : .Where(m => culture.CompareInfo.Compare(m.Name, name, CompareOptions.IgnoreCase) == 0)
84 : .Select(m => m.Value)
85 : .ToList();
86 : }
87 :
88 0 : public List<HttpFile> GetFiles(string name, CultureInfo culture)
89 : {
90 : return Files
91 : .Where(m => culture.CompareInfo.Compare(m.Name, name, CompareOptions.IgnoreCase) == 0)
92 : .Select(m => m.Value)
93 : .ToList();
94 : }
95 :
96 0 : public bool Contains(string name, CultureInfo culture)
97 : {
98 : string val;
99 : HttpFile file;
100 :
101 : return TryGetValue(name, culture, out val) || TryGetValue(name, culture, out file);
102 : }
103 :
104 : public class ValueString
105 0 : {
106 : public string Name { get; set; }
107 : public string Value { get; set; }
108 : }
109 :
110 : public class ValueFile
111 0 : {
112 : public string Name { get; set; }
113 : public HttpFile Value { get; set; }
114 : }
115 : }
116 : }
|