Search in sources :

Example 1 with OAuthUserProvider

use of net.idlesoft.android.apps.github.authenticator.OAuthUserProvider in project hubroid by EddieRingle.

the class GitHubApiService method onHandleIntent.

@Override
protected void onHandleIntent(Intent intent) {
    if (intent == null) {
        return;
    }
    mGitHubClient = new GitHubClient(sApiHostname, sApiPort, sApiScheme);
    mGitHubClient.setUserAgent(USER_AGENT);
    if (!intent.getBooleanExtra(ARG_ANONYMOUS, false)) {
        if (intent.hasExtra(ARG_OAUTH_TOKEN)) {
            mGitHubClient.setOAuth2Token(intent.getStringExtra(ARG_OAUTH_TOKEN));
        } else if (intent.hasExtra(ARG_BASIC_USERNAME) && intent.hasExtra(ARG_BASIC_PASSWORD)) {
            mGitHubClient.setCredentials(intent.getStringExtra(ARG_BASIC_USERNAME), intent.getStringExtra(ARG_BASIC_PASSWORD));
        } else if (intent.hasExtra(ARG_ACCOUNT) && intent.getParcelableExtra(ARG_ACCOUNT) != null) {
            final Account account = intent.getParcelableExtra(ARG_ACCOUNT);
            try {
                final String oauthToken = new OAuthUserProvider().getOAuthResponse(this, account).access_token;
                if (oauthToken != null) {
                    mGitHubClient.setOAuth2Token(oauthToken);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (AccountsException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            }
        }
    }
    if (intent.getAction().equals(ACTION_GET_URI)) {
        final GitHubRequest request = new GitHubRequest();
        request.setUri(intent.getData().toString());
        GitHubResponse response;
        try {
            response = mGitHubClient.get(request);
        } catch (IOException e) {
            response = null;
            e.printStackTrace();
        }
        final Intent resultIntent = new Intent(ACTION_GET_URI, intent.getData());
        if (response != null) {
            resultIntent.putExtra(EXTRA_HAS_NEXT, response.getNext() != null);
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(response.getBody()));
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_EVENTS_LIST_USER_PUBLIC)) {
        final EventService es = new EventService(mGitHubClient);
        ArrayList<Event> result = null;
        PageIterator<Event> iterator = null;
        final int startPage = intent.getIntExtra(ARG_START_PAGE, 1);
        if (intent.hasExtra(PARAM_LOGIN)) {
            iterator = es.pageUserEvents(intent.getStringExtra(PARAM_LOGIN), true, startPage, REQUEST_PAGE_SIZE);
        }
        if (iterator != null && iterator.hasNext()) {
            result = new ArrayList<Event>();
            result.addAll(iterator.next());
        }
        final Intent resultIntent = new Intent(ACTION_EVENTS_LIST_USER_PUBLIC);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
            resultIntent.putExtra(EXTRA_HAS_NEXT, iterator.hasNext());
            resultIntent.putExtra(EXTRA_NEXT_PAGE, iterator.getNextPage());
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_EVENTS_LIST_USER_RECEIVED)) {
        final EventService es = new EventService(mGitHubClient);
        ArrayList<Event> result = null;
        PageIterator<Event> iterator = null;
        final int startPage = intent.getIntExtra(ARG_START_PAGE, 1);
        if (intent.hasExtra(PARAM_LOGIN)) {
            iterator = es.pageUserReceivedEvents(intent.getStringExtra(PARAM_LOGIN), false, startPage, REQUEST_PAGE_SIZE);
        }
        if (iterator != null && iterator.hasNext()) {
            result = new ArrayList<Event>();
            result.addAll(iterator.next());
        }
        final Intent resultIntent = new Intent(ACTION_EVENTS_LIST_USER_RECEIVED);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
            resultIntent.putExtra(EXTRA_HAS_NEXT, iterator.hasNext());
            resultIntent.putExtra(EXTRA_NEXT_PAGE, iterator.getNextPage());
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_EVENTS_LIST_TIMELINE)) {
        final EventService es = new EventService(mGitHubClient);
        ArrayList<Event> result = null;
        PageIterator<Event> iterator;
        final int startPage = intent.getIntExtra(ARG_START_PAGE, 1);
        iterator = es.pagePublicEvents(startPage, REQUEST_PAGE_SIZE);
        if (iterator != null && iterator.hasNext()) {
            result = new ArrayList<Event>();
            result.addAll(iterator.next());
        }
        final Intent resultIntent = new Intent(ACTION_EVENTS_LIST_TIMELINE);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
            resultIntent.putExtra(EXTRA_HAS_NEXT, iterator.hasNext());
            resultIntent.putExtra(EXTRA_NEXT_PAGE, iterator.getNextPage());
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_ISSUES_LIST_SELF)) {
        final IssueService is = new IssueService(mGitHubClient);
        final int startPage = intent.getIntExtra(ARG_START_PAGE, 1);
        ArrayList<RepositoryIssue> result = null;
        PageIterator<RepositoryIssue> iterator;
        HashMap<String, String> params = new HashMap<String, String>();
        if (intent.hasExtra(PARAM_FILTER)) {
            params.put("filter", intent.getStringExtra(PARAM_FILTER));
        }
        if (intent.hasExtra(PARAM_STATE)) {
            params.put("state", intent.getStringExtra(PARAM_STATE));
        }
        if (intent.hasExtra(PARAM_LABELS)) {
            params.put("labels", intent.getStringExtra(PARAM_LABELS));
        }
        if (intent.hasExtra(PARAM_SORT)) {
            params.put("sort", intent.getStringExtra(PARAM_SORT));
        }
        if (intent.hasExtra(PARAM_DIRECTION)) {
            params.put("direction", intent.getStringExtra(PARAM_DIRECTION));
        }
        if (intent.hasExtra(PARAM_SINCE)) {
            params.put("since", intent.getStringExtra(PARAM_SINCE));
        }
        iterator = is.pageIssues(params, startPage, REQUEST_PAGE_SIZE);
        if (iterator != null && iterator.hasNext()) {
            result = new ArrayList<RepositoryIssue>();
            result.addAll(iterator.next());
        }
        final Intent resultIntent = new Intent(ACTION_ISSUES_LIST_SELF);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
            resultIntent.putExtra(EXTRA_HAS_NEXT, iterator.hasNext());
            resultIntent.putExtra(EXTRA_NEXT_PAGE, iterator.getNextPage());
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_ORGS_SELF_MEMBERSHIPS)) {
        final OrganizationService os = new OrganizationService(mGitHubClient);
        List<User> result;
        try {
            result = os.getOrganizations();
        } catch (IOException e) {
            result = null;
            e.printStackTrace();
        }
        final Intent resultIntent = new Intent(ACTION_ORGS_SELF_MEMBERSHIPS);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_REPOS_GET_REPO)) {
        final RepositoryService rs = new RepositoryService(mGitHubClient);
        Repository result;
        try {
            result = rs.getRepository(intent.getStringExtra(PARAM_REPO_OWNER), intent.getStringExtra(PARAM_REPO_NAME));
        } catch (IOException e) {
            result = null;
            e.printStackTrace();
        }
        final Intent resultIntent = new Intent(ACTION_REPOS_GET_REPO);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_REPOS_LIST_ORG_OWNED)) {
        final RepositoryService rs = new RepositoryService(mGitHubClient);
        ArrayList<Repository> result = null;
        PageIterator<Repository> iterator;
        final int startPage = intent.getIntExtra(ARG_START_PAGE, 1);
        iterator = rs.pageOrgRepositories(intent.getStringExtra(PARAM_LOGIN), startPage, REQUEST_PAGE_SIZE);
        if (iterator != null && iterator.hasNext()) {
            result = new ArrayList<Repository>();
            result.addAll(iterator.next());
        }
        final Intent resultIntent = new Intent(ACTION_REPOS_LIST_ORG_OWNED);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
            resultIntent.putExtra(EXTRA_HAS_NEXT, iterator.hasNext());
            resultIntent.putExtra(EXTRA_NEXT_PAGE, iterator.getNextPage());
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_REPOS_LIST_SELF_OWNED)) {
        final RepositoryService rs = new RepositoryService(mGitHubClient);
        ArrayList<Repository> result = null;
        PageIterator<Repository> iterator;
        final int startPage = intent.getIntExtra(ARG_START_PAGE, 1);
        Map<String, String> filter = new HashMap<String, String>();
        filter.put("type", "owner");
        filter.put("sort", "pushed");
        iterator = rs.pageRepositories(filter, startPage, REQUEST_PAGE_SIZE);
        if (iterator != null && iterator.hasNext()) {
            result = new ArrayList<Repository>();
            result.addAll(iterator.next());
        }
        final Intent resultIntent = new Intent(ACTION_REPOS_LIST_SELF_OWNED);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
            resultIntent.putExtra(EXTRA_HAS_NEXT, iterator.hasNext());
            resultIntent.putExtra(EXTRA_NEXT_PAGE, iterator.getNextPage());
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_REPOS_LIST_USER_OWNED)) {
        final RepositoryService rs = new RepositoryService(mGitHubClient);
        ArrayList<Repository> result = null;
        PageIterator<Repository> iterator;
        final int startPage = intent.getIntExtra(ARG_START_PAGE, 1);
        iterator = rs.pageRepositories(intent.getStringExtra(PARAM_LOGIN), startPage, REQUEST_PAGE_SIZE);
        if (iterator != null && iterator.hasNext()) {
            result = new ArrayList<Repository>();
            result.addAll(iterator.next());
        }
        final Intent resultIntent = new Intent(ACTION_REPOS_LIST_USER_OWNED);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
            resultIntent.putExtra(EXTRA_HAS_NEXT, iterator.hasNext());
            resultIntent.putExtra(EXTRA_NEXT_PAGE, iterator.getNextPage());
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_REPOS_LIST_USER_WATCHED)) {
        final WatcherService ws = new WatcherService(mGitHubClient);
        ArrayList<Repository> result = null;
        PageIterator<Repository> iterator;
        final int startPage = intent.getIntExtra(ARG_START_PAGE, 1);
        try {
            iterator = ws.pageWatched(intent.getStringExtra(PARAM_LOGIN), startPage, REQUEST_PAGE_SIZE);
        } catch (IOException e) {
            iterator = null;
        }
        if (iterator != null && iterator.hasNext()) {
            result = new ArrayList<Repository>();
            result.addAll(iterator.next());
        }
        final Intent resultIntent = new Intent(ACTION_REPOS_LIST_USER_WATCHED);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
            resultIntent.putExtra(EXTRA_HAS_NEXT, iterator.hasNext());
            resultIntent.putExtra(EXTRA_NEXT_PAGE, iterator.getNextPage());
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_USERS_GET_USER)) {
        final UserService us = new UserService(mGitHubClient);
        User result;
        try {
            result = us.getUser(intent.getStringExtra(PARAM_LOGIN));
        } catch (IOException e) {
            result = null;
            e.printStackTrace();
        }
        final Intent resultIntent = new Intent(ACTION_USERS_GET_USER);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_USERS_LIST_FOLLOWERS)) {
        final UserService us = new UserService(mGitHubClient);
        ArrayList<User> result = null;
        PageIterator<User> iterator;
        final int startPage = intent.getIntExtra(ARG_START_PAGE, 1);
        iterator = us.pageFollowers(intent.getStringExtra(PARAM_LOGIN), startPage, REQUEST_PAGE_SIZE);
        if (iterator != null && iterator.hasNext()) {
            result = new ArrayList<User>();
            result.addAll(iterator.next());
        }
        final Intent resultIntent = new Intent(ACTION_USERS_LIST_FOLLOWERS);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
            resultIntent.putExtra(EXTRA_HAS_NEXT, iterator.hasNext());
            resultIntent.putExtra(EXTRA_NEXT_PAGE, iterator.getNextPage());
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    } else if (intent.getAction().equals(ACTION_USERS_LIST_FOLLOWING)) {
        final UserService us = new UserService(mGitHubClient);
        ArrayList<User> result = null;
        PageIterator<User> iterator;
        final int startPage = intent.getIntExtra(ARG_START_PAGE, 1);
        iterator = us.pageFollowing(intent.getStringExtra(PARAM_LOGIN), startPage, REQUEST_PAGE_SIZE);
        if (iterator != null && iterator.hasNext()) {
            result = new ArrayList<User>();
            result.addAll(iterator.next());
        }
        final Intent resultIntent = new Intent(ACTION_USERS_LIST_FOLLOWING);
        if (result != null) {
            resultIntent.putExtra(EXTRA_RESULT_JSON, GsonUtils.toJson(result));
            resultIntent.putExtra(EXTRA_HAS_NEXT, iterator.hasNext());
            resultIntent.putExtra(EXTRA_NEXT_PAGE, iterator.getNextPage());
        } else {
            resultIntent.putExtra(EXTRA_ERROR, true);
        }
        sendBroadcast(resultIntent);
    }
}
Also used : IssueService(org.eclipse.egit.github.core.service.IssueService) Account(android.accounts.Account) User(org.eclipse.egit.github.core.User) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) AccountsException(android.accounts.AccountsException) GitHubRequest(org.eclipse.egit.github.core.client.GitHubRequest) RepositoryIssue(org.eclipse.egit.github.core.RepositoryIssue) GitHubClient(org.eclipse.egit.github.core.client.GitHubClient) ArrayList(java.util.ArrayList) List(java.util.List) RepositoryService(org.eclipse.egit.github.core.service.RepositoryService) GitHubResponse(org.eclipse.egit.github.core.client.GitHubResponse) UserService(org.eclipse.egit.github.core.service.UserService) Intent(android.content.Intent) EventService(org.eclipse.egit.github.core.service.EventService) IOException(java.io.IOException) OrganizationService(org.eclipse.egit.github.core.service.OrganizationService) Repository(org.eclipse.egit.github.core.Repository) OAuthUserProvider(net.idlesoft.android.apps.github.authenticator.OAuthUserProvider) PageIterator(org.eclipse.egit.github.core.client.PageIterator) WatcherService(org.eclipse.egit.github.core.service.WatcherService) Event(org.eclipse.egit.github.core.event.Event)

Aggregations

Account (android.accounts.Account)1 AccountsException (android.accounts.AccountsException)1 Intent (android.content.Intent)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 OAuthUserProvider (net.idlesoft.android.apps.github.authenticator.OAuthUserProvider)1 Repository (org.eclipse.egit.github.core.Repository)1 RepositoryIssue (org.eclipse.egit.github.core.RepositoryIssue)1 User (org.eclipse.egit.github.core.User)1 GitHubClient (org.eclipse.egit.github.core.client.GitHubClient)1 GitHubRequest (org.eclipse.egit.github.core.client.GitHubRequest)1 GitHubResponse (org.eclipse.egit.github.core.client.GitHubResponse)1 PageIterator (org.eclipse.egit.github.core.client.PageIterator)1 Event (org.eclipse.egit.github.core.event.Event)1 EventService (org.eclipse.egit.github.core.service.EventService)1 IssueService (org.eclipse.egit.github.core.service.IssueService)1 OrganizationService (org.eclipse.egit.github.core.service.OrganizationService)1 RepositoryService (org.eclipse.egit.github.core.service.RepositoryService)1