public sealed class GateServiceEverything the gate decides, with no ASP.NET in it. Doc 27 § The three planes' service plane.
Remarks
⚠ The same shape the grains took: a plain class a test constructs and drives, with a thin adapter over it. GateEndpoints maps routes onto these methods and does nothing else — it reads a header, calls one method, writes the answer. Everything worth asserting about a gate is here, so asserting it needs neither a web host nor a cluster.
The order of checks in PlayAsync is load-bearing and is the reason this is one method rather than a pipeline of filters. See its remarks.
Methods (7)
public GateService(GateOptions options, IPersistence store, IFleetDirectory fleet, TransferTicketSigner tickets, GateTokenSigner sessions, IEnumerable<IAccountAuthority> authorities, TimeProvider? clock = null, ILogger<GateService>? log = null)Builds one.
public CatalogResponse Catalog()What this fleet is running. The call a client makes before any other.
public Task<GateAnswer<SignInResponse>> SignInAsync(SignInRequest request, CancellationToken cancellation)Turns a credential into a session.
public TokenStatus Authenticate(string? presented, out GateToken? token)Reads a bearer token.
public Task<GateAnswer<CharacterList>> CharactersAsync(GateToken session, CancellationToken cancellation)An account's characters.
public Task<GateAnswer<CharacterSummary>> CreateCharacterAsync(GateToken session, CreateCharacterRequest request, CancellationToken cancellation)Makes a character.
public Task<GateAnswer<PlayResponse>> PlayAsync(GateToken session, PlayRequest request, CancellationToken cancellation)Places a character, and mints the ticket that gets them in.
Used by (3)
- GateEndpointsVixen.Live.Gate
- GateHostVixen.Live.Gate
- GateServiceTestsVixen.Live.Gate.Tests