IConnectorOAuth1.cs•2.71 kB
using Api.DigitalPages.Interfaces.Models;
using System.Collections.Generic;
using System;
using System.Threading.Tasks;
namespace Api.DigitalPages.Interfaces.Connector
{
public interface IConnectorOAuth1 :
ISystemConnectorBaseCrudFlowV3<IOAuth1Client, OAuth1ClientOptions>
{
/// <summary>
/// Extrai informações envolvendo o fluxo OAuth v1.0
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
Task<IOAuthParameters> Extract(IConnectorDataServerRequestV2 request);
/// <summary>
/// Indica se solicitação é válido com base no cliente informado.
/// </summary>
/// <param name="parametes"></param>
/// <param name="client"></param>
/// <returns></returns>
Task<bool> IsAuthorized(IOAuthParameters parametes, IOAuth1Client client);
}
public interface IOAuth1Client : IBaseModelV3
{
/// <summary>
/// Nome atribuído como cliente.
/// </summary>
public string Name { get; set; }
/// <summary>
/// Descrição de uso.
/// </summary>
public string Description { get; set; }
/// <summary>
/// Chave do cliente
/// </summary>
public string Key { get; set; }
/// <summary>
/// Segredo do cliente.
/// </summary>
public string Secret { get; set; }
/// <summary>
/// Permissões vinculadas ao cliente.
/// </summary>
public List<IRole> Roles { get; set; }
/// <summary>
/// Data de expiração do cliente.
/// </summary>
public DateTime? ExpireAt { get; set; }
}
public interface IOAuthParameters
{
/// <summary>
/// Chave enviada.
/// </summary>
string ConsumerKey { get; set; }
/// <summary>
/// Valor único enviado
/// </summary>
string Nonce { get; set; }
/// <summary>
/// Forma de validação
/// </summary>
string SignatureMethod { get; set; }
/// <summary>
/// Assinatura da solicitação.
/// </summary>
string Signature { get; set; }
/// <summary>
/// Data da requisição
/// </summary>
double Timestamp { get; set; }
/// <summary>
/// Versão solicitada do OAuth
/// </summary>
string Version { get; set; }
/// <summary>
/// Parâmetros referentes a requisição do usuário.
/// </summary>
string Query { get; set; }
}
public class OAuth1ClientOptions : IBaseCrudOptions
{
}
}