Search in sources :

Example 1 with UserCallback

use of com.instructure.canvasapi.utilities.UserCallback in project instructure-android by instructure.

the class OAuthWebLogin method setupCallback.

public void setupCallback() {
    mobileVerifyCallback = new CanvasCallback<DomainVerificationResult>(APIHelpers.statusDelegateWithContext(OAuthWebLogin.this)) {

        @Override
        public void cache(DomainVerificationResult domainVerificationResult) {
        }

        @Override
        public void firstPage(DomainVerificationResult domainVerificationResult, LinkHeaders linkHeaders, Response response) {
            if (domainVerificationResult.getResult() == DomainVerificationResult.DomainVerificationCode.Success) {
                // Domain is now verified.
                // save domain to the preferences.
                String domain = "";
                // mobile verify can change the hostname we need to use
                if (domainVerificationResult.getBase_url() != null && !domainVerificationResult.getBase_url().equals("")) {
                    domain = domainVerificationResult.getBase_url();
                } else {
                    domain = url;
                }
                // The domain gets set afterwards in SetUpInstance, but domain is required a bit before that works.
                APIHelpers.setDomain(OAuthWebLogin.this, domain);
                client_id = domainVerificationResult.getClient_id();
                client_secret = domainVerificationResult.getClient_secret();
                // Get the protocol
                api_protocol = domainVerificationResult.getProtocol();
                // Set the protocol
                APIHelpers.setProtocol(domainVerificationResult.getProtocol(), OAuthWebLogin.this);
                // Get device name for the login request.
                String deviceName = Build.MODEL;
                if (deviceName == null || deviceName.equals("")) {
                    deviceName = getString(R.string.unknownDevice);
                }
                // Remove spaces
                deviceName = deviceName.replace(" ", "_");
                // changed for the online update to have an actual formatted login page
                authenticationURL = api_protocol + "://" + domain + "/login/oauth2/auth?client_id=" + client_id + "&response_type=code&redirect_uri=urn:ietf:wg:oauth:2.0:oob&mobile=1";
                authenticationURL += "&purpose=" + deviceName;
                if (canvas_login == 1) {
                    authenticationURL += "&canvas_login=1";
                } else if (canvas_login == 2) {
                    CookieManager cookieManager = CookieManager.getInstance();
                    cookieManager.setCookie(api_protocol + "://" + domain, "canvas_sa_delegated=1");
                }
                web.loadUrl(authenticationURL);
            } else {
                // Error message
                int errorId;
                if (domainVerificationResult.getResult() == DomainVerificationResult.DomainVerificationCode.GeneralError) {
                    errorId = R.string.mobileVerifyGeneral;
                } else if (domainVerificationResult.getResult() == DomainVerificationResult.DomainVerificationCode.DomainNotAuthorized) {
                    errorId = R.string.mobileVerifyDomainUnauthorized;
                } else if (domainVerificationResult.getResult() == DomainVerificationResult.DomainVerificationCode.UnknownUserAgent) {
                    errorId = R.string.mobileVerifyUserAgentUnauthorized;
                } else {
                    errorId = R.string.mobileVerifyUnknownError;
                }
                MaterialDialog.Builder builder = new MaterialDialog.Builder(OAuthWebLogin.this);
                builder.title(R.string.errorOccurred);
                builder.content(errorId);
                builder.cancelable(true);
                builder.positiveColor(Color.BLACK);
                MaterialDialog dialog = builder.build();
                dialog.show();
            }
        }
    };
    getToken = new CanvasCallback<OAuthToken>(APIHelpers.statusDelegateWithContext(OAuthWebLogin.this)) {

        @Override
        public void cache(OAuthToken oAuthToken, LinkHeaders linkHeaders, Response response) {
        }

        @Override
        public void firstPage(OAuthToken oAuthToken, LinkHeaders linkHeaders, Response response) {
            // Set up the rest adapter and such.
            APIHelpers.setToken(getContext(), oAuthToken.getAccess_token());
            CanvasRestAdapter.setupInstance(getContext(), oAuthToken.getAccess_token(), APIHelpers.loadProtocol(getContext()) + "://" + APIHelpers.getDomain(getContext()));
            // save the successful domain to be remembered for later
            JSONArray domains = SavedDomains.getSavedDomains(OAuthWebLogin.this, prefNamePreviousDomain);
            String domain = APIHelpers.getDomain(OAuthWebLogin.this);
            domains.put(domain);
            // save the new domain
            SavedDomains.setSavedDomains(OAuthWebLogin.this, domains, prefNamePreviousDomain);
            // Set the last used domain.
            setLastSignedInDomain(domain, OAuthWebLogin.this);
            // We now need to get the cache user
            UserAPI.getSelf(new UserCallback(APIHelpers.statusDelegateWithContext(OAuthWebLogin.this)) {

                @Override
                public void cachedUser(User user) {
                }

                @Override
                public void user(User user, Response response) {
                    Intent intent = OAuthWebLogin.this.getIntent();
                    intent.putExtra(URLSignIn.loggedInIntent, true);
                    if (passedURI != null) {
                        intent.putExtra(Const.PASSED_URI, passedURI);
                    }
                    OAuthWebLogin.this.setResult(RESULT_OK, intent);
                    OAuthWebLogin.this.finish();
                }
            });
        }

        @Override
        public boolean onFailure(RetrofitError retrofitError) {
            if (!specialCase) {
                Toast.makeText(OAuthWebLogin.this, R.string.errorOccurred, Toast.LENGTH_SHORT).show();
            } else {
                specialCase = false;
            }
            web.loadUrl(authenticationURL);
            return true;
        }
    };
}
Also used : MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) SignedInUser(com.instructure.loginapi.login.model.SignedInUser) User(com.instructure.canvasapi.model.User) LinkHeaders(com.instructure.canvasapi.utilities.LinkHeaders) JSONArray(org.json.JSONArray) Intent(android.content.Intent) DomainVerificationResult(com.instructure.loginapi.login.model.DomainVerificationResult) WebResourceResponse(android.webkit.WebResourceResponse) Response(retrofit.client.Response) OAuthToken(com.instructure.canvasapi.model.OAuthToken) UserCallback(com.instructure.canvasapi.utilities.UserCallback) CookieManager(android.webkit.CookieManager) RetrofitError(retrofit.RetrofitError)

Example 2 with UserCallback

use of com.instructure.canvasapi.utilities.UserCallback in project instructure-android by instructure.

the class HomeActivity method setupCallbacks.

private void setupCallbacks() {
    avatarTarget = new Target() {

        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
            avatar.setImageBitmap(bitmap);
        }

        @Override
        public void onBitmapFailed(Drawable drawable) {
            avatar.setImageResource(R.drawable.ic_cv_student);
        }

        @Override
        public void onPrepareLoad(Drawable drawable) {
        }
    };
    userCallback = new UserCallback(this) {

        @Override
        public void cachedUser(User user) {
            if (user != null && user.getAvatarURL() != null) {
                Picasso.with(getContext()).load(user.getAvatarURL()).into(avatarTarget);
                userName.setText(user.getName());
            }
        }

        @Override
        public void user(User user, Response response) {
            Picasso.with(getContext()).load(user.getAvatarURL()).into(avatarTarget);
            userName.setText(user.getName());
        }
    };
    courseColorsCallback = new CanvasCallback<CanvasColor>(this) {

        @Override
        public void cache(CanvasColor canvasColor) {
        }

        @Override
        public void firstPage(CanvasColor canvasColor, LinkHeaders linkHeaders, Response response) {
            if (response.getStatus() == 200) {
                // Replaces the current cache with the updated fresh one from the api.
                CanvasContextColor.addToCache(canvasColor);
                // Sends a broadcast so the course grid can refresh it's colors if needed.
                // When first logging in this will probably get called/return after the courses.
                Intent intent = new Intent(com.instructure.pandautils.utils.Const.COURSE_THING_CHANGED);
                Bundle extras = new Bundle();
                extras.putBoolean(com.instructure.pandautils.utils.Const.COURSE_COLOR, true);
                intent.putExtras(extras);
                LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
            }
        }
    };
}
Also used : User(com.instructure.canvasapi.model.User) LinkHeaders(com.instructure.canvasapi.utilities.LinkHeaders) Bundle(android.os.Bundle) Drawable(android.graphics.drawable.Drawable) Intent(android.content.Intent) Response(retrofit.client.Response) UserCallback(com.instructure.canvasapi.utilities.UserCallback) Target(com.squareup.picasso.Target) Bitmap(android.graphics.Bitmap) CanvasColor(com.instructure.canvasapi.model.CanvasColor) Picasso(com.squareup.picasso.Picasso)

Aggregations

Intent (android.content.Intent)2 User (com.instructure.canvasapi.model.User)2 LinkHeaders (com.instructure.canvasapi.utilities.LinkHeaders)2 UserCallback (com.instructure.canvasapi.utilities.UserCallback)2 Response (retrofit.client.Response)2 Bitmap (android.graphics.Bitmap)1 Drawable (android.graphics.drawable.Drawable)1 Bundle (android.os.Bundle)1 CookieManager (android.webkit.CookieManager)1 WebResourceResponse (android.webkit.WebResourceResponse)1 MaterialDialog (com.afollestad.materialdialogs.MaterialDialog)1 CanvasColor (com.instructure.canvasapi.model.CanvasColor)1 OAuthToken (com.instructure.canvasapi.model.OAuthToken)1 DomainVerificationResult (com.instructure.loginapi.login.model.DomainVerificationResult)1 SignedInUser (com.instructure.loginapi.login.model.SignedInUser)1 Picasso (com.squareup.picasso.Picasso)1 Target (com.squareup.picasso.Target)1 JSONArray (org.json.JSONArray)1 RetrofitError (retrofit.RetrofitError)1