Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change AddDefaultParameter methods to be extension methods #311

Merged
merged 1 commit into from
Aug 30, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 2 additions & 70 deletions RestSharp/RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,13 @@

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Xml;
using System.Xml.Linq;
using System.Reflection;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using RestSharp.Deserializers;
using RestSharp.Extensions;
using System.Text;
using System.Reflection;

namespace RestSharp
{
Expand Down Expand Up @@ -85,71 +82,6 @@ public RestClient(string baseUrl)
/// </summary>
public IList<Parameter> DefaultParameters { get; private set; }

/// <summary>
/// Add a parameter to use on every request made with this client instance
/// </summary>
/// <param name="p">Parameter to add</param>
/// <returns></returns>
public void AddDefaultParameter(Parameter p)
{
if (p.Type == ParameterType.RequestBody)
{
throw new NotSupportedException("Cannot set request body from default headers. Use Request.AddBody() instead.");
}

DefaultParameters.Add(p);
}

/// <summary>
/// Adds a HTTP parameter (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT)
/// Used on every request made by this client instance
/// </summary>
/// <param name="name">Name of the parameter</param>
/// <param name="value">Value of the parameter</param>
/// <returns>This request</returns>
public void AddDefaultParameter(string name, object value)
{
AddDefaultParameter(new Parameter { Name = name, Value = value, Type = ParameterType.GetOrPost });
}

/// <summary>
/// Adds a parameter to the request. There are four types of parameters:
/// - GetOrPost: Either a QueryString value or encoded form value based on method
/// - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection
/// - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId}
/// - RequestBody: Used by AddBody() (not recommended to use directly)
/// </summary>
/// <param name="name">Name of the parameter</param>
/// <param name="value">Value of the parameter</param>
/// <param name="type">The type of parameter to add</param>
/// <returns>This request</returns>
public void AddDefaultParameter(string name, object value, ParameterType type)
{
AddDefaultParameter(new Parameter { Name = name, Value = value, Type = type });
}

/// <summary>
/// Shortcut to AddDefaultParameter(name, value, HttpHeader) overload
/// </summary>
/// <param name="name">Name of the header to add</param>
/// <param name="value">Value of the header to add</param>
/// <returns></returns>
public void AddDefaultHeader(string name, string value)
{
AddDefaultParameter(name, value, ParameterType.HttpHeader);
}

/// <summary>
/// Shortcut to AddDefaultParameter(name, value, UrlSegment) overload
/// </summary>
/// <param name="name">Name of the segment to add</param>
/// <param name="value">Value of the segment to add</param>
/// <returns></returns>
public void AddDefaultUrlSegment(string name, string value)
{
AddDefaultParameter(name, value, ParameterType.UrlSegment);
}

/// <summary>
/// Registers a content handler to process response content
/// </summary>
Expand Down
78 changes: 78 additions & 0 deletions RestSharp/RestClientExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
using System;

namespace RestSharp
{
public static class RestClientExtensions
{
/// <summary>
/// Add a parameter to use on every request made with this client instance
/// </summary>
/// <param name="restClient">The IRestClient instance</param>
/// <param name="p">Parameter to add</param>
/// <returns></returns>
public static void AddDefaultParameter(this IRestClient restClient, Parameter p)
{
if (p.Type == ParameterType.RequestBody)
{
throw new NotSupportedException(
"Cannot set request body from default headers. Use Request.AddBody() instead.");
}

restClient.DefaultParameters.Add(p);
}

/// <summary>
/// Adds a HTTP parameter (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT)
/// Used on every request made by this client instance
/// </summary>
/// <param name="restClient">The IRestClient instance</param>
/// <param name="name">Name of the parameter</param>
/// <param name="value">Value of the parameter</param>
/// <returns>This request</returns>
public static void AddDefaultParameter(this IRestClient restClient, string name, object value)
{
restClient.AddDefaultParameter(new Parameter { Name = name, Value = value, Type = ParameterType.GetOrPost });
}

/// <summary>
/// Adds a parameter to the request. There are four types of parameters:
/// - GetOrPost: Either a QueryString value or encoded form value based on method
/// - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection
/// - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId}
/// - RequestBody: Used by AddBody() (not recommended to use directly)
/// </summary>
/// <param name="restClient">The IRestClient instance</param>
/// <param name="name">Name of the parameter</param>
/// <param name="value">Value of the parameter</param>
/// <param name="type">The type of parameter to add</param>
/// <returns>This request</returns>
public static void AddDefaultParameter(this IRestClient restClient, string name, object value, ParameterType type)
{
restClient.AddDefaultParameter(new Parameter { Name = name, Value = value, Type = type });
}

/// <summary>
/// Shortcut to AddDefaultParameter(name, value, HttpHeader) overload
/// </summary>
/// <param name="restClient">The IRestClient instance</param>
/// <param name="name">Name of the header to add</param>
/// <param name="value">Value of the header to add</param>
/// <returns></returns>
public static void AddDefaultHeader(this IRestClient restClient, string name, string value)
{
restClient.AddDefaultParameter(name, value, ParameterType.HttpHeader);
}

/// <summary>
/// Shortcut to AddDefaultParameter(name, value, UrlSegment) overload
/// </summary>
/// <param name="restClient">The IRestClient instance</param>
/// <param name="name">Name of the segment to add</param>
/// <param name="value">Value of the segment to add</param>
/// <returns></returns>
public static void AddDefaultUrlSegment(this IRestClient restClient, string name, string value)
{
restClient.AddDefaultParameter(name, value, ParameterType.UrlSegment);
}
}
}
1 change: 1 addition & 0 deletions RestSharp/RestSharp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@
<Compile Include="Extensions\MonoHttp\Helpers.cs" />
<Compile Include="Extensions\MonoHttp\HtmlEncoder.cs" />
<Compile Include="Extensions\MonoHttp\HttpUtility.cs" />
<Compile Include="RestClientExtensions.cs" />
<Compile Include="Extensions\StringExtensions.cs" />
<Compile Include="Http.Sync.cs" />
<Compile Include="HttpCookie.cs" />
Expand Down