// 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);
            }
        }
Example #2
0
        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());
        }