Esempio n. 1
0
        public async Task <AuthTokenResult> Register(AuthCodeAndCallbackUri codeAndCallbackUri)
        {
            var response = await spotify.InitialRequest(codeAndCallbackUri);

            if (!string.IsNullOrEmpty(response.Error))
            {
                return(Error($"{response.Error}: {response.ErrorDescription}"));
            }

            var dbUser = new User
            {
                Code                    = codeAndCallbackUri.Code,
                AccessToken             = response.AccessToken,
                AccessTokenExpiresInSec = response.ExpiresInSec,
                AccessTokenAcquiredAt   = response.AcquiredAt,
                RefreshToken            = response.RefreshToken
            };

            if (!await db.Register(dbUser))
            {
                return(Error("User most likely already registered."));
            }

            return(new AuthTokenResult
            {
                Token = new AuthToken
                {
                    AccessToken = response.AccessToken,
                    Acquired = response.AcquiredAt.ToUniversalTime(),
                    ExpiresInSec = response.ExpiresInSec
                }
            });
        }
 public async Task <InitialResponse> InitialRequest(AuthCodeAndCallbackUri codeAndCallbackUri)
 {
     return(await Request <InitialResponse>(new Dictionary <string, string>
     {
         { "grant_type", "authorization_code" },
         { "code", codeAndCallbackUri.Code },
         { "redirect_uri", codeAndCallbackUri.CallbackUri }
     }));
 }
 public async Task <ActionResult <AuthTokenResult> > Register([FromBody] AuthCodeAndCallbackUri codeAndCallbackUri)
 {
     return(await Execute(() => users.Register(codeAndCallbackUri)));
 }