public static ImgurAuthorization GetInstance()
 {
     if (INSTANCE == null)
     {
         INSTANCE = new ImgurAuthorization();
     }
     return(INSTANCE);
 }
            public override Boolean ShouldOverrideUrlLoading(WebView view, String url)
            {
                try {                 // intercept the tokens
                    // http://example.com#access_token=ACCESS_TOKEN&token_type=Bearer&expires_in=3600
                    Boolean tokensURL = false;
                    if (url.StartsWith(AppConstants.IMGUR_REDIRECT_URL))
                    {
                        tokensURL = true;
                        Java.Util.Regex.Matcher m;

                        m = refreshTokenPattern.Matcher(url);
                        m.Find();
                        String refreshToken = m.Group(1);

                        m = accessTokenPattern.Matcher(url);
                        m.Find();
                        String accessToken = m.Group(1);

                        m = expiresInPattern.Matcher(url);
                        m.Find();
                        long expiresIn = Convert.ToInt64(m.Group(1));

                        ImgurAuthorization.GetInstance().SaveRefreshToken(refreshToken, accessToken, expiresIn);

                        // notify user of successful login
                        mActivity.RunOnUiThread(() => {
                            Toast.MakeText(MainActivity.GetAppContext(), "Logged In.", ToastLength.Short).Show();
                            mActivity.SetResult(Result.Ok);
                            mActivity.Finish();
                        });
                    }
                    return(tokensURL);
                }
                catch (Exception ex) {
                    // if user clicks on "deny" instead of logging in, we will get an error
                    Log.Error(TAG, "Error during login", ex);
                    mActivity.RunOnUiThread(() => {
                        Toast.MakeText(MainActivity.GetAppContext(), "Login failed.", ToastLength.Short).Show();
                        mActivity.Finish();
                    });
                    return(false);
                }
            }
Beispiel #3
0
        protected override Java.Lang.Object DoInBackground(params Java.Lang.Object[] @params)
        {
            Stream imageIn;

            try {
                imageIn = mActivity.ContentResolver.OpenInputStream(mImageUri);
            }
            catch (Java.IO.FileNotFoundException e) {
                Log.Error(TAG, "could not open Stream", e);
                return(null);
            }

            HttpURLConnection conn       = null;
            Stream            responseIn = null;

            try {
                conn          = (HttpURLConnection) new URL(UPLOAD_URL).OpenConnection();
                conn.DoOutput = true;
                ImgurAuthorization.GetInstance().AddToHttpURLConnection(conn);

                Stream outstream = conn.OutputStream;
                Copy(imageIn, outstream);                 // set image
                outstream.Flush();
                outstream.Close();

                if (conn.ResponseCode == Java.Net.HttpStatus.Ok)                        // execute api call
                {
                    responseIn = conn.InputStream;
                    return(OnInput(responseIn));
                }
                else
                {
                    Log.Info(TAG, "responseCode=" + conn.ResponseCode);
                    responseIn = conn.ErrorStream;
                    StringBuilder sb      = new StringBuilder();
                    Scanner       scanner = new Scanner(responseIn);
                    while (scanner.HasNext)
                    {
                        sb.Append(scanner.Next());
                    }
                    Log.Info(TAG, "error response: " + sb.ToString());
                    return(null);
                }
            }
            catch (Exception ex) {
                Log.Error(TAG, "Error during POST", ex);
                return(null);
            }
            finally {
                try {
                    responseIn.Close();
                }
                catch (Exception ignore) { }
                try {
                    conn.Disconnect();
                }
                catch (Exception ignore) { }
                try {
                    imageIn.Close();
                }
                catch (Exception ignore) { }


                // delete temp file
                ImageAdapter.DeleteTempFile();
            }
        }