using System; using System.Linq; using xModels.Dtos; using xIdentityHelper; using System.Threading; using xCommons.Attributes; using xCommons.Extensions; using xIdentityModels.Dtos; using xExceptions.Constants; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using xIdentityModels.Extensions; using Microsoft.AspNetCore.Authorization; using static IdentityServer4.IdentityServerConstants; namespace xIds.Controllers { public partial class ApplicationsController { // #region ApiKeyUsage ... /// /// Add Api Key Usage ... /// /// /// /// [RequireXPowered] [Authorize(LocalApi.PolicyName)] [HttpPost("Applications/ApiKeys/Usages")] [Authorize(Policy = XPolicies.EnabledUser)] public async Task> AddApiKeyUsage( [FromBody] XApiKeyUsageDto item, CancellationToken cancellationToken = default ) { // try { // // Validate ... if (item.IsValidForAdd()) { XException.InvalidArgs.Throw(); } // var userInfo = await GetUserInfo(); // var result = await provider.AddApiKeyUsageAsync( item: item, userInfo: userInfo, cancellationToken: cancellationToken ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Get Specified Api Key Usage ... /// /// /// /// [RequireXPowered] [Authorize(LocalApi.PolicyName)] [Authorize(Policy = XPolicies.EnabledUser)] [HttpGet("Applications/ApiKeys/Usages/{id}")] public async Task> GetApiKeyUsage( [FromRoute] long id, CancellationToken cancellationToken = default ) { // try { // // Validate ... if (id <= 0) { XException.InvalidArgs.Throw(); } // var userInfo = await GetUserInfo(); // var result = await provider.GetApiKeyUsageAsync( id: id, userInfo: userInfo, includeBuilder: null, ignoreSoftDeleteds: true, cancellationToken: cancellationToken ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Remove Specified Api Key Usage ... /// /// /// /// [RequireXPowered] [Authorize(LocalApi.PolicyName)] [Authorize(Policy = XPolicies.EnabledUser)] [HttpDelete("Applications/ApiKeys/Usages/{id}")] public async Task> RemoveApiKeyUsage( [FromRoute] long id, CancellationToken cancellationToken = default ) { // try { // // Validate ... if (id <= 0) { XException.InvalidArgs.Throw(); } // var userInfo = await GetUserInfo(); // var result = await provider.RemoveApiKeyUsageAsync( id: id, softDelete: false, userInfo: userInfo, cancellationToken: cancellationToken ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Update Specified Api Key Usage ... /// /// /// /// /// [RequireXPowered] [Authorize(LocalApi.PolicyName)] [Authorize(Policy = XPolicies.EnabledUser)] [HttpPut("Applications/ApiKeys/Usages/{id}")] public async Task> UpdateApiKeyUsage( [FromRoute] long id, [FromBody] XApiKeyUsageDto item, CancellationToken cancellationToken = default ) { // try { // // Validate ... if ( id <= 0 || !item.IsValidForAdd() ) { XException.InvalidArgs.Throw(); } // var userInfo = await GetUserInfo(); // var result = await provider.UpdateApiKeyUsageAsync( id: id, item: item, userInfo: userInfo, cancellationToken: cancellationToken ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Get All Api Key Usages ... /// /// /// [RequireXPowered] [Authorize(LocalApi.PolicyName)] [HttpGet("Applications/ApiKeys/Usages")] [Authorize(Policy = XPolicies.EnabledUser)] public async Task>> GetAllApiKeyUsages( CancellationToken cancellationToken = default ) { // try { // var userInfo = await GetUserInfo(); // var result = await provider.GetAllApiKeyUsageAsync( userInfo: userInfo, includeBuilder: null, ignoreSoftDeleteds: true, cancellationToken: cancellationToken, orderBuilder: x => x.OrderBy(y => y.RequestedOn) ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Query Api Key Usages ... /// /// /// /// [RequireXPowered] [Authorize(LocalApi.PolicyName)] [HttpGet("Applications/ApiKeys/Usages/Query")] [Authorize(Policy = XPolicies.EnabledUser)] public async Task>> QueryApiKeyUsages( [FromRoute] XQuery query, CancellationToken cancellationToken = default ) { // try { // var userInfo = await GetUserInfo(); // var result = await provider.QueryApiKeyUsageAsync( query: query, predicate: null, userInfo: userInfo, includeBuilder: null, ignoreSoftDeleteds: true, cancellationToken: cancellationToken, orderBuilder: x => x.OrderBy(y => y.RequestedOn) ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } #endregion } }