12
12
// See the License for the specific language governing permissions and
13
13
// limitations under the License.
14
14
15
- namespace RestSharp ;
15
+ namespace RestSharp ;
16
16
17
17
/// <summary>
18
18
/// Parameter container for REST requests
19
19
/// </summary>
20
20
public record Parameter {
21
- public Parameter ( string ? name , object ? value , ParameterType type , bool encode = true ) {
22
- if ( type != ParameterType . RequestBody )
23
- Ensure . NotEmpty ( name , nameof ( name ) ) ;
24
- else {
25
- Ensure . NotNull ( value , nameof ( value ) ) ;
26
- }
27
-
21
+ protected Parameter ( string ? name , object ? value , ParameterType type , bool encode = true ) {
28
22
Name = name ;
29
- Value = type != ParameterType . UrlSegment ? value : value ? . ToString ( ) ? . Replace ( "%2F" , "/" ) . Replace ( "%2f" , "/" ) ;
30
- Type = type == ParameterType . QueryStringWithoutEncode ? ParameterType . QueryString : type ;
31
- Encode = type != ParameterType . QueryStringWithoutEncode && encode ;
23
+ Value = value ;
24
+ Type = type ;
25
+ Encode = encode ;
32
26
}
33
27
34
- public Parameter ( string name , object value , string contentType , ParameterType type , bool encode = true ) : this ( name , value , type , encode )
35
- => ContentType = contentType ;
28
+ // Parameter(string name, object value, string contentType, ParameterType type, bool encode = true) : this(name, value, type, encode)
29
+ // => ContentType = contentType;
36
30
37
31
/// <summary>
38
32
/// Name of the parameter
39
33
/// </summary>
40
- public string ? Name { get ; set ; }
34
+ public string ? Name { get ; }
41
35
42
36
/// <summary>
43
37
/// Value of the parameter
44
38
/// </summary>
45
- public object ? Value { get ; set ; }
39
+ public object ? Value { get ; }
46
40
47
41
/// <summary>
48
42
/// Type of the parameter
49
43
/// </summary>
50
- public ParameterType Type { get ; set ; }
44
+ public ParameterType Type { get ; }
51
45
52
- /// <summary>
53
- /// Body parameter data type
54
- /// </summary>
55
- public DataFormat DataFormat { get ; set ; } = DataFormat . None ;
46
+ internal bool Encode { get ; }
56
47
57
48
/// <summary>
58
49
/// MIME content type of the parameter
59
50
/// </summary>
60
- public string ? ContentType { get ; set ; }
61
-
62
- internal bool Encode { get ; }
51
+ public string ? ContentType { get ; protected init ; }
63
52
64
53
/// <summary>
65
54
/// Return a human-readable representation of this parameter
66
55
/// </summary>
67
56
/// <returns>String</returns>
68
57
public override string ToString ( ) => $ "{ Name } ={ Value } ";
69
- }
70
58
71
- public record XmlParameter : Parameter {
72
- public XmlParameter ( string name , object value , string ? xmlNamespace = null , string contentType = Serializers . ContentType . Xml )
73
- : base ( name , value , ParameterType . RequestBody ) {
74
- XmlNamespace = xmlNamespace ;
75
- DataFormat = DataFormat . Xml ;
76
- ContentType = contentType ;
77
- }
78
-
79
- public string ? XmlNamespace { get ; }
59
+ public static Parameter CreateParameter ( string ? name , object value , ParameterType type , bool encode = true )
60
+ => type switch {
61
+ ParameterType . GetOrPost => new GetOrPostParameter ( name ! , value , encode ) ,
62
+ ParameterType . UrlSegment => new UrlSegmentParameter ( name ! , value , encode ) ,
63
+ ParameterType . HttpHeader => new HeaderParameter ( name , value , encode ) ,
64
+ ParameterType . RequestBody => new BodyParameter ( name , value , Serializers . ContentType . Plain ) ,
65
+ ParameterType . QueryString => new QueryParameter ( name ! , value , encode ) ,
66
+ _ => throw new ArgumentOutOfRangeException ( nameof ( type ) , type , null )
67
+ } ;
80
68
}
81
69
82
- public record JsonParameter : Parameter {
83
- public JsonParameter ( string name , object value , string contentType = Serializers . ContentType . Json )
84
- : base ( name , value , ParameterType . RequestBody ) {
85
- DataFormat = DataFormat . Json ;
86
- ContentType = contentType ;
87
- }
70
+ public record NamedParameter : Parameter {
71
+ protected NamedParameter ( string name , object ? value , ParameterType type , bool encode = true )
72
+ : base ( Ensure . NotEmptyString ( name , nameof ( name ) ) , value , type , encode ) { }
88
73
}
0 commit comments