Пример #1
0
        /// <summary>
        /// Signs-in to Nike+ service.
        /// </summary>
        /// <param name="forceRefreshToken">Flag to determine if force to get a new <see cref="Token"/>, even if one valid is available.</param>
        /// <returns><see langword="true"/> if signed-in successfully, otherwise, <see langword="false"/>.</returns>
        public async Task<bool> SignIn(bool forceRefreshToken = false)
        {
            bool lbSignedIn = false;
            bool lbValidToken = false;
            WebRequest loWebRequest = null;
            StringBuilder loPostData = new StringBuilder();
            string lsResponse;
            // Validate credentials
            if (string.IsNullOrEmpty(msUser) ||
                string.IsNullOrEmpty(msPassword))
                throw new NikePlusException("Invalid credentials, provide Nike+ user and password.", null, null, null);
            // Validate current Token
            lbSignedIn = false;
            lbValidToken = ValidateToken();
            // Check if refresh token must be forced
            if (forceRefreshToken)
                lbValidToken = false;
            lbSignedIn = lbValidToken;
            if (!lbSignedIn)
            {
                // Reset values
                Token = null;
                IsSignedIn = false;
                try
                {
                    // Build query data for user/password provided
                    loPostData.AppendFormat("{0}={1}", USERNAME_PARAM, Uri.EscapeDataString(msUser));
                    loPostData.AppendFormat("&{0}={1}", PASSWORD_PARAM, Uri.EscapeDataString(msPassword));
                    // Prepare request
                    loWebRequest = WebRequest.Create(LOGIN_URI_DEV);
                    //byte[] loPostContent = Encoding.Default.GetBytes(loPostData.ToString());
                    byte[] loPostContent = Encoding.UTF8.GetBytes(loPostData.ToString());
                    loWebRequest.Method = "POST";
                    loWebRequest.ContentType = "application/x-www-form-urlencoded";
#if DESKTOP_APP
					loWebRequest.ContentLength = loPostContent.Length;
#endif
                    // Post request
                    using (Stream loRequestStream = await loWebRequest.GetRequestStreamAsync())
                    {
                        loRequestStream.Write(loPostContent, 0, loPostContent.Length);
                        loRequestStream.Flush();
#if DESKTOP_APP
						loRequestStream.Close();
#endif
                    }
                    // Read response (Json formatted)
                    using (WebResponse loWebResponse = await loWebRequest.GetResponseAsync())
                    {
                        using (Stream loResponseStream = loWebResponse.GetResponseStream())
                        {
                            using (StreamReader loStreamReader = new StreamReader(loResponseStream))
                            {
                                lsResponse = loStreamReader.ReadToEnd();
                                // Deserialize Json response
                                Token = JsonConvert.DeserializeObject<NikePlusToken>(lsResponse);
                                IsSignedIn = true;
                                lbSignedIn = true;
                            }
                        }
                    }
                }
                catch (WebException loWebException)
                {
                    Token = null;
                    IsSignedIn = false;
                    lbSignedIn = false;
                    throw new NikePlusException(loWebException.Message, loWebException, LOGIN_URI_DEV, null);
                }
                catch (Exception loException)
                {
                    // (Just for debugging purposes: handle response exception).
                    if (System.Diagnostics.Debugger.IsAttached)
                        System.Diagnostics.Debug.WriteLine(loException.StackTrace);
                    Token = null;
                    IsSignedIn = false;
                    lbSignedIn = false;
                    throw;
                }
            }
            return lbSignedIn;
        }
Пример #2
0
 /// <summary>
 /// Signs-out from Nike+ service.
 /// </summary>
 /// <returns><see langword="true"/> if signed-out successfully, otherwise, <see langword="false"/>.</returns>
 public async Task<bool> SignOut()
 {
     bool lbSignedOut = false;
     if (Token != null &&
         !string.IsNullOrEmpty(Token.AccessToken))
     {
         try
         {
             await PerformRequest(DISCONNECT_PATH, null, "DELETE");
             Token = null;
             IsSignedIn = false;
             lbSignedOut = true;
         }
         catch (Exception loException)
         {
             // (Just for debugging purposes: handle response exception).
             if (System.Diagnostics.Debugger.IsAttached)
             {
                 System.Diagnostics.Debug.WriteLine(loException.StackTrace);
             } // (Just for debugging purposes: handle response exception)
             Token = null;
             IsSignedIn = false;
             lbSignedOut = true;
         }
     }
     else
     {
         Token = null;
         IsSignedIn = false;
         lbSignedOut = true;
     }
     return lbSignedOut;
 }
Пример #3
0
 /// <summary>
 /// Sets the Nike+ credentials (user and password).
 /// </summary>
 /// <param name="user">Nike+ user (e-mail).</param>
 /// <param name="password">Nike+ password.</param>
 public void SetCredentials(string user, string password)
 {
     Token = null;
     IsSignedIn = false;
     msUser = user;
     msPassword = password;
 }