1+ using System ;
2+
3+ namespace RestSharp
4+ {
5+ public static class RestClientExtensions
6+ {
7+ /// <summary>
8+ /// Add a parameter to use on every request made with this client instance
9+ /// </summary>
10+ /// <param name="restClient">The IRestClient instance</param>
11+ /// <param name="p">Parameter to add</param>
12+ /// <returns></returns>
13+ public static void AddDefaultParameter ( this IRestClient restClient , Parameter p )
14+ {
15+ if ( p . Type == ParameterType . RequestBody )
16+ {
17+ throw new NotSupportedException (
18+ "Cannot set request body from default headers. Use Request.AddBody() instead." ) ;
19+ }
20+
21+ restClient . DefaultParameters . Add ( p ) ;
22+ }
23+
24+ /// <summary>
25+ /// Adds a HTTP parameter (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT)
26+ /// Used on every request made by this client instance
27+ /// </summary>
28+ /// <param name="restClient">The IRestClient instance</param>
29+ /// <param name="name">Name of the parameter</param>
30+ /// <param name="value">Value of the parameter</param>
31+ /// <returns>This request</returns>
32+ public static void AddDefaultParameter ( this IRestClient restClient , string name , object value )
33+ {
34+ restClient . AddDefaultParameter ( new Parameter { Name = name , Value = value , Type = ParameterType . GetOrPost } ) ;
35+ }
36+
37+ /// <summary>
38+ /// Adds a parameter to the request. There are four types of parameters:
39+ /// - GetOrPost: Either a QueryString value or encoded form value based on method
40+ /// - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection
41+ /// - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId}
42+ /// - RequestBody: Used by AddBody() (not recommended to use directly)
43+ /// </summary>
44+ /// <param name="restClient">The IRestClient instance</param>
45+ /// <param name="name">Name of the parameter</param>
46+ /// <param name="value">Value of the parameter</param>
47+ /// <param name="type">The type of parameter to add</param>
48+ /// <returns>This request</returns>
49+ public static void AddDefaultParameter ( this IRestClient restClient , string name , object value , ParameterType type )
50+ {
51+ restClient . AddDefaultParameter ( new Parameter { Name = name , Value = value , Type = type } ) ;
52+ }
53+
54+ /// <summary>
55+ /// Shortcut to AddDefaultParameter(name, value, HttpHeader) overload
56+ /// </summary>
57+ /// <param name="restClient">The IRestClient instance</param>
58+ /// <param name="name">Name of the header to add</param>
59+ /// <param name="value">Value of the header to add</param>
60+ /// <returns></returns>
61+ public static void AddDefaultHeader ( this IRestClient restClient , string name , string value )
62+ {
63+ restClient . AddDefaultParameter ( name , value , ParameterType . HttpHeader ) ;
64+ }
65+
66+ /// <summary>
67+ /// Shortcut to AddDefaultParameter(name, value, UrlSegment) overload
68+ /// </summary>
69+ /// <param name="restClient">The IRestClient instance</param>
70+ /// <param name="name">Name of the segment to add</param>
71+ /// <param name="value">Value of the segment to add</param>
72+ /// <returns></returns>
73+ public static void AddDefaultUrlSegment ( this IRestClient restClient , string name , string value )
74+ {
75+ restClient . AddDefaultParameter ( name , value , ParameterType . UrlSegment ) ;
76+ }
77+ }
78+ }
0 commit comments