using System.ComponentModel.DataAnnotations;
using AutoMapper.Mappers;
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;
}
///
/// Add Dest User to Query Strings ...
///
///
///
///
public static RestRequest AttachDestUser(
this RestRequest source,
string destUser
)
{
//
if (destUser.IsNullOrEmpty())
{
return source;
}
//
var destUserKey = System.Uri.EscapeDataString(nameof(destUser));
var destUserValue = destUser.AsHttpParamString();
source.AddQueryParameter(destUserKey, destUserValue);
//
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;
}
}
}