@@ -20,17 +20,6 @@ public class QueryParser : IQueryParser
20
20
private readonly IControllerContext _controllerContext ;
21
21
private readonly JsonApiOptions _options ;
22
22
23
- private const string FILTER = "filter" ;
24
- private const string SORT = "sort" ;
25
- private const string INCLUDE = "include" ;
26
- private const string PAGE = "page" ;
27
- private const string FIELDS = "fields" ;
28
- private const char OPEN_BRACKET = '[' ;
29
- private const char CLOSE_BRACKET = ']' ;
30
- private const char COMMA = ',' ;
31
- private const char COLON = ':' ;
32
- private const string COLON_STR = ":" ;
33
-
34
23
public QueryParser (
35
24
IControllerContext controllerContext ,
36
25
JsonApiOptions options )
@@ -46,35 +35,35 @@ public virtual QuerySet Parse(IQueryCollection query)
46
35
47
36
foreach ( var pair in query )
48
37
{
49
- if ( pair . Key . StartsWith ( FILTER ) )
38
+ if ( pair . Key . StartsWith ( QueryConstants . FILTER ) )
50
39
{
51
40
if ( disabledQueries . HasFlag ( QueryParams . Filter ) == false )
52
41
querySet . Filters . AddRange ( ParseFilterQuery ( pair . Key , pair . Value ) ) ;
53
42
continue ;
54
43
}
55
44
56
- if ( pair . Key . StartsWith ( SORT ) )
45
+ if ( pair . Key . StartsWith ( QueryConstants . SORT ) )
57
46
{
58
47
if ( disabledQueries . HasFlag ( QueryParams . Sort ) == false )
59
48
querySet . SortParameters = ParseSortParameters ( pair . Value ) ;
60
49
continue ;
61
50
}
62
51
63
- if ( pair . Key . StartsWith ( INCLUDE ) )
52
+ if ( pair . Key . StartsWith ( QueryConstants . INCLUDE ) )
64
53
{
65
54
if ( disabledQueries . HasFlag ( QueryParams . Include ) == false )
66
55
querySet . IncludedRelationships = ParseIncludedRelationships ( pair . Value ) ;
67
56
continue ;
68
57
}
69
58
70
- if ( pair . Key . StartsWith ( PAGE ) )
59
+ if ( pair . Key . StartsWith ( QueryConstants . PAGE ) )
71
60
{
72
61
if ( disabledQueries . HasFlag ( QueryParams . Page ) == false )
73
62
querySet . PageQuery = ParsePageQuery ( querySet . PageQuery , pair . Key , pair . Value ) ;
74
63
continue ;
75
64
}
76
65
77
- if ( pair . Key . StartsWith ( FIELDS ) )
66
+ if ( pair . Key . StartsWith ( QueryConstants . FIELDS ) )
78
67
{
79
68
if ( disabledQueries . HasFlag ( QueryParams . Fields ) == false )
80
69
querySet . Fields = ParseFieldsQuery ( pair . Key , pair . Value ) ;
@@ -94,9 +83,9 @@ protected virtual List<FilterQuery> ParseFilterQuery(string key, string value)
94
83
// expected input = filter[id]=eq:1
95
84
var queries = new List < FilterQuery > ( ) ;
96
85
97
- var propertyName = key . Split ( OPEN_BRACKET , CLOSE_BRACKET ) [ 1 ] ;
86
+ var propertyName = key . Split ( QueryConstants . OPEN_BRACKET , QueryConstants . CLOSE_BRACKET ) [ 1 ] ;
98
87
99
- var values = value . Split ( COMMA ) ;
88
+ var values = value . Split ( QueryConstants . COMMA ) ;
100
89
foreach ( var val in values )
101
90
{
102
91
( var operation , var filterValue ) = ParseFilterOperation ( val ) ;
@@ -111,7 +100,7 @@ protected virtual (string operation, string value) ParseFilterOperation(string v
111
100
if ( value . Length < 3 )
112
101
return ( string . Empty , value ) ;
113
102
114
- var operation = value . Split ( COLON ) ;
103
+ var operation = value . Split ( QueryConstants . COLON ) ;
115
104
116
105
if ( operation . Length == 1 )
117
106
return ( string . Empty , value ) ;
@@ -121,7 +110,7 @@ protected virtual (string operation, string value) ParseFilterOperation(string v
121
110
return ( string . Empty , value ) ;
122
111
123
112
var prefix = operation [ 0 ] ;
124
- value = string . Join ( COLON_STR , operation . Skip ( 1 ) ) ;
113
+ value = string . Join ( QueryConstants . COLON_STR , operation . Skip ( 1 ) ) ;
125
114
126
115
return ( prefix , value ) ;
127
116
}
@@ -132,7 +121,7 @@ protected virtual PageQuery ParsePageQuery(PageQuery pageQuery, string key, stri
132
121
// page[number]=1
133
122
pageQuery = pageQuery ?? new PageQuery ( ) ;
134
123
135
- var propertyName = key . Split ( OPEN_BRACKET , CLOSE_BRACKET ) [ 1 ] ;
124
+ var propertyName = key . Split ( QueryConstants . OPEN_BRACKET , QueryConstants . CLOSE_BRACKET ) [ 1 ] ;
136
125
137
126
const string SIZE = "size" ;
138
127
const string NUMBER = "number" ;
@@ -157,7 +146,7 @@ protected virtual List<SortQuery> ParseSortParameters(string value)
157
146
var sortParameters = new List < SortQuery > ( ) ;
158
147
159
148
const char DESCENDING_SORT_OPERATOR = '-' ;
160
- var sortSegments = value . Split ( COMMA ) ;
149
+ var sortSegments = value . Split ( QueryConstants . COMMA ) ;
161
150
162
151
foreach ( var sortSegment in sortSegments )
163
152
{
@@ -189,14 +178,14 @@ protected virtual List<string> ParseIncludedRelationships(string value)
189
178
throw new JsonApiException ( 400 , "Deeply nested relationships are not supported" ) ;
190
179
191
180
return value
192
- . Split ( COMMA )
181
+ . Split ( QueryConstants . COMMA )
193
182
. ToList ( ) ;
194
183
}
195
184
196
185
protected virtual List < string > ParseFieldsQuery ( string key , string value )
197
186
{
198
187
// expected: fields[TYPE]=prop1,prop2
199
- var typeName = key . Split ( OPEN_BRACKET , CLOSE_BRACKET ) [ 1 ] ;
188
+ var typeName = key . Split ( QueryConstants . OPEN_BRACKET , QueryConstants . CLOSE_BRACKET ) [ 1 ] ;
200
189
201
190
const string ID = "Id" ;
202
191
var includedFields = new List < string > { ID } ;
@@ -205,7 +194,7 @@ protected virtual List<string> ParseFieldsQuery(string key, string value)
205
194
if ( string . Equals ( typeName , _controllerContext . RequestEntity . EntityName , StringComparison . OrdinalIgnoreCase ) == false )
206
195
return includedFields ;
207
196
208
- var fields = value . Split ( COMMA ) ;
197
+ var fields = value . Split ( QueryConstants . COMMA ) ;
209
198
foreach ( var field in fields )
210
199
{
211
200
var attr = _controllerContext . RequestEntity
0 commit comments