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); } }
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(); } }