// Ensures that the server being contacted has a registered token public async Task SetupContact(string address) { OutgoingServerToken checkResult = await _repository.GetOutgoingServerTokenByNameAsync(address); if (checkResult == null) { await RegisterToken(address); } }
public async Task <IActionResult> OutgoingTokenCheck(string token) { OutgoingServerToken outgoingToken = await _repository.GetOutgoingServerTokenByValueAsync(token); if (outgoingToken == null) { return(NotFound()); } return(Ok()); }
// Registers an outgoing token on the given server public async Task <Result> RegisterToken(string address) { // Retrieves ServerURLs Result <ServerURLs> result = await SimpleForumClient.GetServerURLs(address); if (result.Failure) { return(result); } ServerURLs serverUrLs = result.Value; // Checks if the address has already been registered Result checkResult = await _client.CheckAddress(serverUrLs.CrossConnectionURL, _config.InstanceURL); if (checkResult.Failure) { return(checkResult); } // Adds token to repository and OutgoingServerToken token = new OutgoingServerToken() { Address = address, ApiAddress = serverUrLs.APIURL, CrossConnectionAddress = serverUrLs.CrossConnectionURL, Token = Guid.NewGuid().ToString() }; await _repository.AddOutgoingServerTokenAsync(token); await _repository.SaveChangesAsync(); Result registerResult = await _client.RegisterAddress(serverUrLs.CrossConnectionURL, _config.InstanceURL, token.Token); if (registerResult.Failure) { return(registerResult); } return(Result.Ok()); }