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