using System; using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Infiniti.Standard; using Infiniti.Models.Logging; using Infiniti.Models.Users; using Infiniti.Models.Cdiscount; namespace InfinitiApi { public class CdiscountApi { private readonly IEventPublisher eventPublisher; public CdiscountApi(IEventPublisher eventPublisher) => this.eventPublisher = eventPublisher; [FunctionName(nameof(CdiscountAuthCredentials))] public async Task CdiscountAuthCredentials( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "cdiscountauthcredentials")] HttpRequest req, ILogger logger) { await eventPublisher.SetupLoggerAsync(logger); await eventPublisher.LogInformationAsync(User.SystemUser(), $"{nameof(CdiscountAuthCredentials)} called."); var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var request = JsonConvert.DeserializeObject(requestBody); await eventPublisher.LogInformationAsync(request.User, $"Request: {requestBody}"); return await eventPublisher.CdiscountAuthCredentialsAsync(request).ConfigureAwait(false); } [FunctionName(nameof(CdiscountAuthURL))] public async Task CdiscountAuthURL( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "cdiscountauthurl")] HttpRequest req, ILogger logger) { await eventPublisher.SetupLoggerAsync(logger); await eventPublisher.LogInformationAsync(User.SystemUser(), $"{nameof(CdiscountAuthURL)} called."); var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var request = JsonConvert.DeserializeObject(requestBody); await eventPublisher.LogInformationAsync(request.User, $"Request: {requestBody}"); return await eventPublisher.CdiscountAuthUrlAsync(request).ConfigureAwait(false); } [FunctionName(nameof(CdiscountAuthCallback))] public async Task CdiscountAuthCallback( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "cdiscountauthcallback")] HttpRequest req, ILogger logger) { await eventPublisher.SetupLoggerAsync(logger); await eventPublisher.LogInformationAsync(User.SystemUser(), $"{nameof(CdiscountAuthCallback)} called."); var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var request = JsonConvert.DeserializeObject(requestBody); await eventPublisher.LogInformationAsync(request.User, $"Request: {requestBody}"); return await eventPublisher.CdiscountAuthCallbackAsync(request).ConfigureAwait(false); } [FunctionName(nameof(CdiscountSellerInfo))] public async Task CdiscountSellerInfo( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "cdiscountsellerinfo")] HttpRequest req, ILogger logger) { await eventPublisher.SetupLoggerAsync(logger); await eventPublisher.LogInformationAsync(User.SystemUser(), $"{nameof(CdiscountSellerInfo)} called."); var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var request = JsonConvert.DeserializeObject(requestBody); await eventPublisher.LogInformationAsync(request.User, $"Request: {requestBody}"); return await eventPublisher.CdiscountSellerInfoAsync(request).ConfigureAwait(false); } [FunctionName(nameof(CdiscountFetchSales))] public async Task CdiscountFetchSales( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "cdiscountfetchsales")] HttpRequest req, ILogger logger) { await eventPublisher.SetupLoggerAsync(logger); await eventPublisher.LogInformationAsync(User.SystemUser(), $"{nameof(CdiscountFetchSales)} called."); var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var request = JsonConvert.DeserializeObject(requestBody); await eventPublisher.LogInformationAsync(request.User, $"Request: {requestBody}"); return await eventPublisher.CdiscountFetchSalesAsync(request).ConfigureAwait(false); } [FunctionName(nameof(CdiscountGetTransaction))] public async Task CdiscountGetTransaction( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "cdiscountgettransaction")] HttpRequest req, ILogger logger) { await eventPublisher.SetupLoggerAsync(logger); await eventPublisher.LogInformationAsync(User.SystemUser(), $"{nameof(CdiscountGetTransaction)} called."); var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var request = JsonConvert.DeserializeObject(requestBody); await eventPublisher.LogInformationAsync(request.User, $"Request: {requestBody}"); return await eventPublisher.CdiscountGetTransactionAsync(request).ConfigureAwait(false); } //[FunctionName("CdiscountApi")] //public static async Task Run( // [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, // ILogger log) //{ // log.LogInformation("C# HTTP trigger function processed a request."); // string name = req.Query["name"]; // string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); // dynamic data = JsonConvert.DeserializeObject(requestBody); // name = name ?? data?.name; // string responseMessage = string.IsNullOrEmpty(name) // ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." // : $"Hello, {name}. This HTTP triggered function executed successfully."; // return new OkObjectResult(responseMessage); //} } }