feat(apiv2): stubs
This commit is contained in:
parent
f785fa1204
commit
8a88b23021
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,6 +8,7 @@ obj/
|
|||||||
.vscode/
|
.vscode/
|
||||||
tags/
|
tags/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
mono_crash*
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
node_modules/
|
node_modules/
|
||||||
|
35
PluralKit.API/APIJsonExt.cs
Normal file
35
PluralKit.API/APIJsonExt.cs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
using PluralKit.Core;
|
||||||
|
|
||||||
|
namespace PluralKit.API
|
||||||
|
{
|
||||||
|
public static class APIJsonExt
|
||||||
|
{
|
||||||
|
public static JArray ToJSON(this IEnumerable<PKShardInfo> shards)
|
||||||
|
{
|
||||||
|
var o = new JArray();
|
||||||
|
|
||||||
|
foreach (var shard in shards)
|
||||||
|
{
|
||||||
|
var s = new JObject();
|
||||||
|
s.Add("id", shard.Id);
|
||||||
|
|
||||||
|
if (shard.Status == PKShardInfo.ShardStatus.Down)
|
||||||
|
s.Add("status", "down");
|
||||||
|
else
|
||||||
|
s.Add("status", "up");
|
||||||
|
|
||||||
|
s.Add("ping", shard.Ping);
|
||||||
|
s.Add("last_heartbeat", shard.LastHeartbeat.ToString());
|
||||||
|
s.Add("last_connection", shard.LastConnection.ToString());
|
||||||
|
|
||||||
|
o.Add(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
33
PluralKit.API/Controllers/PKControllerBase.cs
Normal file
33
PluralKit.API/Controllers/PKControllerBase.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
using System;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
|
using NodaTime;
|
||||||
|
|
||||||
|
using PluralKit.Core;
|
||||||
|
|
||||||
|
namespace PluralKit.API
|
||||||
|
{
|
||||||
|
public class PKControllerBase: ControllerBase
|
||||||
|
{
|
||||||
|
private readonly Guid _requestId = Guid.NewGuid();
|
||||||
|
private readonly Regex _shortIdRegex = new Regex("^[a-z]{5}$");
|
||||||
|
private readonly Regex _snowflakeRegex = new Regex("^[0-9]{17,19}$");
|
||||||
|
|
||||||
|
protected readonly ApiConfig _config;
|
||||||
|
protected readonly IDatabase _db;
|
||||||
|
protected readonly ModelRepository _repo;
|
||||||
|
|
||||||
|
public PKControllerBase(IServiceProvider svc)
|
||||||
|
{
|
||||||
|
_config = svc.GetRequiredService<ApiConfig>();
|
||||||
|
_db = svc.GetRequiredService<IDatabase>();
|
||||||
|
_repo = svc.GetRequiredService<ModelRepository>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -37,32 +37,4 @@ namespace PluralKit.API
|
|||||||
return Ok(o);
|
return Ok(o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class MetaJsonExt
|
|
||||||
{
|
|
||||||
public static JArray ToJSON(this IEnumerable<PKShardInfo> shards)
|
|
||||||
{
|
|
||||||
var o = new JArray();
|
|
||||||
|
|
||||||
foreach (var shard in shards)
|
|
||||||
{
|
|
||||||
var s = new JObject();
|
|
||||||
s.Add("id", shard.Id);
|
|
||||||
|
|
||||||
if (shard.Status == PKShardInfo.ShardStatus.Down)
|
|
||||||
s.Add("status", "down");
|
|
||||||
else
|
|
||||||
s.Add("status", "up");
|
|
||||||
|
|
||||||
s.Add("ping", shard.Ping);
|
|
||||||
s.Add("last_heartbeat", shard.LastHeartbeat.ToString());
|
|
||||||
s.Add("last_connection", shard.LastConnection.ToString());
|
|
||||||
|
|
||||||
o.Add(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
58
PluralKit.API/Controllers/v2/GuildControllerV2.cs
Normal file
58
PluralKit.API/Controllers/v2/GuildControllerV2.cs
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
using PluralKit.Core;
|
||||||
|
|
||||||
|
namespace PluralKit.API
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[ApiVersion("2.0")]
|
||||||
|
[Route("v{version:apiVersion}")]
|
||||||
|
public class GuildControllerV2: PKControllerBase
|
||||||
|
{
|
||||||
|
public GuildControllerV2(IServiceProvider svc) : base(svc) { }
|
||||||
|
|
||||||
|
|
||||||
|
[HttpGet("systems/{system}/guilds/{guild_id}")]
|
||||||
|
public async Task<IActionResult> SystemGuildGet(string system, ulong guild_id)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPatch("systems/{system}/guilds/{guild_id}")]
|
||||||
|
public async Task<IActionResult> SystemGuildPatch(string system, ulong guild_id, [FromBody] JObject data)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("members/{member}/guilds/{guild_id}")]
|
||||||
|
public async Task<IActionResult> MemberGuildGet(string member, ulong guild_id)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPatch("members/{member}/guilds/{guild_id}")]
|
||||||
|
public async Task<IActionResult> MemberGuildPatch(string member, ulong guild_id, [FromBody] JObject data)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
67
PluralKit.API/Controllers/v2/MemberControllerV2.cs
Normal file
67
PluralKit.API/Controllers/v2/MemberControllerV2.cs
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
using PluralKit.Core;
|
||||||
|
|
||||||
|
namespace PluralKit.API
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[ApiVersion("2.0")]
|
||||||
|
[Route("v{version:apiVersion}")]
|
||||||
|
public class MemberControllerV2: PKControllerBase
|
||||||
|
{
|
||||||
|
public MemberControllerV2(IServiceProvider svc) : base(svc) { }
|
||||||
|
|
||||||
|
|
||||||
|
[HttpGet("systems/{system}/members")]
|
||||||
|
public async Task<IActionResult> GetSystemMembers(string system)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("members")]
|
||||||
|
public async Task<IActionResult> MemberCreate([FromBody] JObject data)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("members/{member}")]
|
||||||
|
public async Task<IActionResult> MemberGet(string member)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPatch("members/{member}")]
|
||||||
|
public async Task<IActionResult> MemberPatch(string member, [FromBody] JObject data)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpDelete("members/{member}")]
|
||||||
|
public async Task<IActionResult> MemberDelete(string member)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
40
PluralKit.API/Controllers/v2/MiscControllerV2.cs
Normal file
40
PluralKit.API/Controllers/v2/MiscControllerV2.cs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
using PluralKit.Core;
|
||||||
|
|
||||||
|
namespace PluralKit.API
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[ApiVersion("2.0")]
|
||||||
|
[Route("v{version:apiVersion}")]
|
||||||
|
public class MetaControllerV2: PKControllerBase
|
||||||
|
{
|
||||||
|
public MetaControllerV2(IServiceProvider svc) : base(svc) { }
|
||||||
|
|
||||||
|
[HttpGet("meta")]
|
||||||
|
public async Task<ActionResult<JObject>> Meta()
|
||||||
|
{
|
||||||
|
await using var conn = await _db.Obtain();
|
||||||
|
var shards = await _repo.GetShards(conn);
|
||||||
|
|
||||||
|
var o = new JObject();
|
||||||
|
o.Add("shards", shards.ToJSON());
|
||||||
|
|
||||||
|
return Ok(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("messages/{message_id}")]
|
||||||
|
public async Task<IActionResult> MessageGet(ulong message_id)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
77
PluralKit.API/Controllers/v2/SwitchControllerV2.cs
Normal file
77
PluralKit.API/Controllers/v2/SwitchControllerV2.cs
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
using PluralKit.Core;
|
||||||
|
|
||||||
|
namespace PluralKit.API
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[ApiVersion("2.0")]
|
||||||
|
[Route("v{version:apiVersion}")]
|
||||||
|
public class SwitchControllerV2: PKControllerBase
|
||||||
|
{
|
||||||
|
public SwitchControllerV2(IServiceProvider svc) : base(svc) { }
|
||||||
|
|
||||||
|
|
||||||
|
[HttpGet("systems/{system}/switches")]
|
||||||
|
public async Task<IActionResult> GetSystemSwitches(string system)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("systems/{system}/fronters")]
|
||||||
|
public async Task<IActionResult> GetSystemFronters(string system)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[HttpPost("systems/{system}/switches")]
|
||||||
|
public async Task<IActionResult> SwitchCreate(string system, [FromBody] JObject data)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[HttpGet("systems/{system}/switches/{switch_id}")]
|
||||||
|
public async Task<IActionResult> SwitchGet(string system, string switch_id)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPatch("systems/{system}/switches/{switch_id}")]
|
||||||
|
public async Task<IActionResult> SwitchPatch(string system, [FromBody] JObject data)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpDelete("systems/{system}/switches/{switch_id}")]
|
||||||
|
public async Task<IActionResult> SwitchDelete(string system, string switch_id)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
37
PluralKit.API/Controllers/v2/SystemControllerV2.cs
Normal file
37
PluralKit.API/Controllers/v2/SystemControllerV2.cs
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
using PluralKit.Core;
|
||||||
|
|
||||||
|
namespace PluralKit.API
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[ApiVersion("2.0")]
|
||||||
|
[Route("v{version:apiVersion}/systems")]
|
||||||
|
public class SystemControllerV2: PKControllerBase
|
||||||
|
{
|
||||||
|
public SystemControllerV2(IServiceProvider svc) : base(svc) { }
|
||||||
|
|
||||||
|
[HttpGet("{system}")]
|
||||||
|
public async Task<IActionResult> SystemGet(string system)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPatch("{system}")]
|
||||||
|
public async Task<IActionResult> SystemPatch(string system, [FromBody] JObject data)
|
||||||
|
{
|
||||||
|
return new ObjectResult("Unimplemented")
|
||||||
|
{
|
||||||
|
StatusCode = 501
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -117,6 +117,13 @@ namespace PluralKit.API
|
|||||||
//app.UseHsts();
|
//app.UseHsts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// add X-PluralKit-Version header
|
||||||
|
app.Use((ctx, next) =>
|
||||||
|
{
|
||||||
|
ctx.Response.Headers.Add("X-PluralKit-Version", BuildInfoService.Version);
|
||||||
|
return next();
|
||||||
|
});
|
||||||
|
|
||||||
//app.UseHttpsRedirection();
|
//app.UseHttpsRedirection();
|
||||||
app.UseCors(opts => opts.AllowAnyMethod().AllowAnyOrigin().WithHeaders("Content-Type", "Authorization"));
|
app.UseCors(opts => opts.AllowAnyMethod().AllowAnyOrigin().WithHeaders("Content-Type", "Authorization"));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user