using RestSharp;
using xCommons.Constants;
using xCommons.Extensions;
using xModels.Dtos;
namespace xHttpService.Extensions {
public static partial class RestSharpExtensions {
///
/// Attach an instance of XQuery to a RestRequest object
///
///
///
///
public static RestRequest AttachXQuery (
this RestRequest source,
XQuery query
) {
//
if (query.IsNull ()) {
return source;
}
//
// ContainsDetail ...
//
var containsDetailKey = System.Uri.EscapeDataString (nameof (query.ContainsDetail));
var containsDetailValue = query.ContainsDetail.AsHttpParamString ();
source.AddQueryParameter (containsDetailKey, containsDetailValue);
//
// IsAscending ...
var isAscendingKey = System.Uri.EscapeDataString (nameof (query.IsAscending));
var isAscendingValue = query.IsAscending.AsHttpParamString ();
source.AddQueryParameter (isAscendingKey, isAscendingValue);
//
// Filter ...
if (!query.Filter.IsNullOrEmpty ()) {
//
var key = System.Uri.EscapeDataString (nameof (query.Filter));
var value = query.Filter.AsHttpParamString ();
source.AddQueryParameter (key, value);
}
//
// SortBy ...
if (!query.SortBy.IsNullOrEmpty ()) {
//
var key = System.Uri.EscapeDataString (nameof (query.SortBy));
var value = query.SortBy.AsHttpParamString ();
source.AddQueryParameter (key, value);
}
//
// Page ...
if (query.Page > 0) {
//
var key = System.Uri.EscapeDataString (nameof (query.Page));
var value = query.Page.AsHttpParamString ();
source.AddQueryParameter (key, value);
}
//
// PageSize ...
if (query.PageSize > 0) {
//
var key = System.Uri.EscapeDataString (nameof (query.PageSize));
var value = query.PageSize.AsHttpParamString ();
source.AddQueryParameter (key, value);
}
//
return source;
}
///
/// Attach an instance of XPageRequest to a RestRequest object
///
///
///
///
public static RestRequest AttachXPageRequest (
this RestRequest source,
XPageRequest request
) {
//
if (request.IsNull ()) {
return source;
}
//
// First ...
if (request.First.HasValue) {
//
var key = System.Uri.EscapeDataString (nameof (request.First));
var value = request.First.AsHttpParamString ();
source.AddQueryParameter (key, value);
}
//
// Last ...
if (request.Last.HasValue) {
//
var key = System.Uri.EscapeDataString (nameof (request.Last));
var value = request.Last.AsHttpParamString ();
source.AddQueryParameter (key, value);
}
//
// After ...
if (!request.After.IsNullOrEmpty ()) {
//
var key = System.Uri.EscapeDataString (nameof (request.After));
var value = request.After.AsHttpParamString ();
source.AddQueryParameter (key, value);
}
//
// Before ...
if (!request.Before.IsNullOrEmpty ()) {
//
var key = System.Uri.EscapeDataString (nameof (request.Before));
var value = request.Before.AsHttpParamString ();
source.AddQueryParameter (key, value);
}
//
// SortBy ...
if (!request.SortBy.IsNullOrEmpty ()) {
//
var key = System.Uri.EscapeDataString (nameof (request.SortBy));
var value = request.SortBy.AsHttpParamString ();
source.AddQueryParameter (key, value);
}
//
// DescendingSort ...
var descendingSortKey = System.Uri.EscapeDataString (nameof (request.DescendingSort));
var descendingSortValue = request.DescendingSort.AsHttpParamString ();
source.AddQueryParameter (descendingSortKey, descendingSortValue);
//
return source;
}
///
/// Add XPoweredBy Header to specific RestRequest Headers ...
///
///
///
///
public static RestRequest AddXPoweredBy (
this RestRequest source,
string poweredByValue
) {
//
source.AddHeader (
XAuthorization.XPoweredBy,
poweredByValue
);
//
return source;
}
///
/// Add XAccessToken Header to specific RestRequest Headers ...
///
///
///
///
public static RestRequest AddXAccessToken (
this RestRequest source,
string token
) {
//
token = $"{XAuthentication.BEARER} {token}";
//
source.AddHeader (
XAuthorization.Header,
token
);
//
return source;
}
}
}