Exemple #1
0
        public async Task <IActionResult> RegisterIncomingToken(RegisterTokenRequest request)
        {
            // Retrieves the urls of the services of the instance, and returns error if unsuccessful
            Result <ServerURLs> urlResult = await SimpleForumClient.GetServerURLs(request.Address);

            if (urlResult.Failure)
            {
                return(StatusCode(urlResult.Code, urlResult.Error));
            }

            // Adds the token to checks it is valid
            IncomingServerToken token = new IncomingServerToken()
            {
                Address                = request.Address,
                ApiAddress             = urlResult.Value.APIURL,
                CrossConnectionAddress = urlResult.Value.CrossConnectionURL,
                Token = request.Token
            };

            Result addResult = await _repository.AddIncomingServerToken(token);

            if (addResult.Failure)
            {
                return(StatusCode(addResult.Code, addResult.Error));
            }
            Result checkResult = await _crossConnectionClient.CheckToken(token.CrossConnectionAddress, request.Token);

            // Returns error if token is invalid, otherwise saves changes
            if (checkResult.Failure)
            {
                return(StatusCode(checkResult.Code, checkResult.Error));
            }
            await _repository.SaveChangesAsync();

            return(Ok());
        }