Skip to content
Snippets Groups Projects
Commit ab67c288 authored by Jawnnypoo's avatar Jawnnypoo
Browse files

Change over to Retrofit 2.0

parent c3b8a391
No related branches found
No related tags found
No related merge requests found
Showing
with 471 additions and 416 deletions
Loading
Loading
@@ -58,7 +58,8 @@ dependencies {
compile 'com.google.code.gson:gson:2.3.1'
compile 'net.danlew:android.joda:2.8.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta1'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup:otto:1.3.8'
compile 'com.jakewharton:butterknife:7.0.1'
Loading
Loading
Loading
Loading
@@ -33,32 +33,27 @@ import butterknife.ButterKnife;
import butterknife.OnClick;
import de.hdodenhof.circleimageview.CircleImageView;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
/**
* Thats what its all about
* Created by Jawn on 8/25/2015.
*/
public class AboutActivity extends BaseActivity {
private static final String REPO_USER = "Jawnnypoo";
private static final String REPO_NAME = "open-meh";
private static final String REPO_USER = "Commit451";
private static final String REPO_NAME = "GitLabAndroid";
 
public static Intent newInstance(Context context) {
Intent intent = new Intent(context, AboutActivity.class);
return intent;
}
 
@Bind(R.id.root)
View root;
@Bind(R.id.toolbar)
Toolbar toolbar;
@Bind(R.id.toolbar_title)
TextView toolbarTitle;
@Bind(R.id.contributors)
TextView contributors;
@Bind(R.id.physics_layout)
PhysicsFrameLayout physicsLayout;
@Bind(R.id.root) View root;
@Bind(R.id.toolbar) Toolbar toolbar;
@Bind(R.id.toolbar_title) TextView toolbarTitle;
@Bind(R.id.contributors) TextView contributors;
@Bind(R.id.physics_layout) PhysicsFrameLayout physicsLayout;
@OnClick(R.id.sauce)
void onSauceClick() {
IntentUtil.openPage(root, getString(R.string.source_url));
Loading
Loading
@@ -83,16 +78,19 @@ public class AboutActivity extends BaseActivity {
};
 
private final Callback<List<Contributor>> contributorResponseCallback = new Callback<List<Contributor>>() {
@Override
public void success(List<Contributor> contributorList, Response response) {
addContributors(contributorList);
public void onResponse(Response<List<Contributor>> response) {
if (response.isSuccess()) {
addContributors(response.body());
}
}
 
@Override
public void failure(RetrofitError error) {
public void onFailure(Throwable t) {
Snackbar.make(getWindow().getDecorView(), R.string.failed_to_load_contributors, Snackbar.LENGTH_SHORT)
.show();
Timber.e(error.toString());
Timber.e(t.toString());
}
};
 
Loading
Loading
@@ -113,7 +111,7 @@ public class AboutActivity extends BaseActivity {
physicsLayout.getPhysics().enableFling();
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
gravitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
GithubClient.instance().contributors(REPO_USER, REPO_NAME, contributorResponseCallback);
GithubClient.instance().contributors(REPO_USER, REPO_NAME).enqueue(contributorResponseCallback);
}
 
@Override
Loading
Loading
Loading
Loading
@@ -24,8 +24,7 @@ import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
public class DiffActivity extends BaseActivity {
Loading
Loading
@@ -39,7 +38,7 @@ public class DiffActivity extends BaseActivity {
}
 
@Bind(R.id.toolbar) Toolbar toolbar;
@Bind(R.id.message_container) LinearLayout messageContainer;
@Bind(R.id.message_container) LinearLayout messageContainer;
@Bind(R.id.diff_container) LinearLayout diffContainer;
 
DiffLine commit;
Loading
Loading
@@ -80,36 +79,41 @@ public class DiffActivity extends BaseActivity {
});
 
//TODO make this use RecyclerViews, cause this is insane
GitLabClient.instance().getCommit(GitLabApp.instance().getSelectedProject().getId(), commit.getId(), commitCallback);
GitLabClient.instance().getCommitDiff(GitLabApp.instance().getSelectedProject().getId(), commit.getId(), diffCallback);
GitLabClient.instance().getCommit(GitLabApp.instance().getSelectedProject().getId(), commit.getId()).enqueue(commitCallback);
GitLabClient.instance().getCommitDiff(GitLabApp.instance().getSelectedProject().getId(), commit.getId()).enqueue(diffCallback);
}
 
private Callback<DiffLine> commitCallback = new Callback<DiffLine>() {
@Override
public void success(DiffLine diffLine, Response response) {
messageContainer.addView(new MessageView(DiffActivity.this, diffLine));
public void onResponse(Response<DiffLine> response) {
if (response.isSuccess()) {
messageContainer.addView(new MessageView(DiffActivity.this, response.body()));
}
}
 
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
public void onFailure(Throwable t) {
Timber.e(t.toString());
Snackbar.make(getWindow().getDecorView(), getString(R.string.connection_error), Snackbar.LENGTH_SHORT)
.show();
}
};
private Callback<List<Diff>> diffCallback = new Callback<List<Diff>>() {
@Override
public void success(List<Diff> diffs, Response resp) {
for(Diff diff : diffs) {
diffContainer.addView(new DiffView(DiffActivity.this, diff));
public void onResponse(Response<List<Diff>> response) {
if (response.isSuccess()) {
for(Diff diff : response.body()) {
diffContainer.addView(new DiffView(DiffActivity.this, diff));
}
}
}
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
public void onFailure(Throwable t) {
Timber.e(t.toString());
Snackbar.make(getWindow().getDecorView(), getString(R.string.connection_error), Snackbar.LENGTH_SHORT)
.show();
}
Loading
Loading
Loading
Loading
@@ -25,8 +25,7 @@ import java.io.UnsupportedEncodingException;
import butterknife.Bind;
import butterknife.ButterKnife;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
public class FileActivity extends BaseActivity {
Loading
Loading
@@ -55,27 +54,31 @@ public class FileActivity extends BaseActivity {
byte[] mBlob;
 
private final Callback<FileResponse> mFileResponseCallback = new Callback<FileResponse>() {
@Override
public void success(FileResponse fileResponse, Response response) {
progress.setVisibility(View.GONE);
String text = getString(R.string.file_load_error);
// Receiving side
mFileName = fileResponse.getFileName();
mBlob = Base64.decode(fileResponse.getContent(), Base64.DEFAULT);
try {
text = new String(mBlob, "UTF-8");
} catch (UnsupportedEncodingException e) {
Timber.e(e.toString());
}
public void onResponse(Response<FileResponse> response) {
if (!response.isSuccess()) {
return;
}
progress.setVisibility(View.GONE);
String text = getString(R.string.file_load_error);
// Receiving side
mFileName = response.body().getFileName();
mBlob = Base64.decode(response.body().getContent(), Base64.DEFAULT);
try {
text = new String(mBlob, "UTF-8");
} catch (UnsupportedEncodingException e) {
Timber.e(e.toString());
}
String temp = "<!DOCTYPE html><html><head><link href=\"github.css\" rel=\"stylesheet\" /></head><body><pre><code>" + text + "</code></pre><script src=\"highlight.pack.js\"></script><script>hljs.initHighlightingOnLoad();</script></body></html>";
fileBlobView.loadDataWithBaseURL("file:///android_asset/", temp, "text/html", "utf8", null);
toolbar.setTitle(fileResponse.getFileName());
toolbar.inflateMenu(R.menu.file);
toolbar.setTitle(mFileName);
toolbar.inflateMenu(R.menu.file);
}
 
@Override
public void failure(RetrofitError error) {
progress.setVisibility(View.GONE);
public void onFailure(Throwable t) {
progress.setVisibility(View.GONE);
Snackbar.make(getWindow().getDecorView(), R.string.file_load_error, Snackbar.LENGTH_SHORT)
.show();
}
Loading
Loading
@@ -95,7 +98,7 @@ public class FileActivity extends BaseActivity {
 
private void load() {
progress.setVisibility(View.VISIBLE);
GitLabClient.instance().getFile(mProjectId, mPath, mRef, mFileResponseCallback);
GitLabClient.instance().getFile(mProjectId, mPath, mRef).enqueue(mFileResponseCallback);
}
 
private void setupUI() {
Loading
Loading
Loading
Loading
@@ -30,8 +30,7 @@ import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
public class IssueActivity extends BaseActivity {
Loading
Loading
@@ -98,7 +97,7 @@ public class IssueActivity extends BaseActivity {
 
private void load() {
swipeRefreshLayout.setRefreshing(true);
GitLabClient.instance().getIssueNotes(GitLabApp.instance().getSelectedProject().getId(), issue.getId(), notesCallback);
GitLabClient.instance().getIssueNotes(GitLabApp.instance().getSelectedProject().getId(), issue.getId()).enqueue(notesCallback);
}
 
private void postNote() {
Loading
Loading
@@ -116,20 +115,23 @@ public class IssueActivity extends BaseActivity {
imm.hideSoftInputFromWindow(newNoteEdit.getWindowToken(), 0);
newNoteEdit.setText("");
 
GitLabClient.instance().postIssueNote(GitLabApp.instance().getSelectedProject().getId(), issue.getId(), body, "", noteCallback);
GitLabClient.instance().postIssueNote(GitLabApp.instance().getSelectedProject().getId(), issue.getId(), body).enqueue(noteCallback);
}
private Callback<List<Note>> notesCallback = new Callback<List<Note>>() {
@Override
public void success(List<Note> notes, Response resp) {
public void onResponse(Response<List<Note>> response) {
if (!response.isSuccess()) {
return;
}
swipeRefreshLayout.setRefreshing(false);
notesAdapter.addNotes(notes);
notesAdapter.addNotes(response.body());
}
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
public void onFailure(Throwable t) {
Timber.e(t.toString());
swipeRefreshLayout.setRefreshing(false);
Snackbar.make(getWindow().getDecorView(), getString(R.string.connection_error), Snackbar.LENGTH_SHORT)
.show();
Loading
Loading
@@ -142,16 +144,19 @@ public class IssueActivity extends BaseActivity {
}
private Callback<Note> noteCallback = new Callback<Note>() {
@Override
public void success(Note note, Response resp) {
public void onResponse(Response<Note> response) {
if (!response.isSuccess()) {
return;
}
progress.setVisibility(View.GONE);
notesAdapter.addNote(note);
notesAdapter.addNote(response.body());
}
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
public void onFailure(Throwable t) {
Timber.e(t.toString());
progress.setVisibility(View.GONE);
Snackbar.make(getWindow().getDecorView(), getString(R.string.connection_error), Snackbar.LENGTH_SHORT)
.show();
Loading
Loading
@@ -159,16 +164,19 @@ public class IssueActivity extends BaseActivity {
};
private Callback<List<User>> usersCallback = new Callback<List<User>>() {
@Override
public void success(List<User> users, Response resp) {
public void onResponse(Response<List<User>> response) {
if (!response.isSuccess()) {
return;
}
swipeRefreshLayout.setRefreshing(false);
notesAdapter.addUsers(users);
notesAdapter.addUsers(response.body());
}
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
public void onFailure(Throwable t) {
Timber.e(t.toString());
swipeRefreshLayout.setRefreshing(false);
Snackbar.make(getWindow().getDecorView(), getString(R.string.connection_error), Snackbar.LENGTH_SHORT)
.show();
Loading
Loading
Loading
Loading
@@ -27,8 +27,7 @@ import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
public class LoginActivity extends BaseActivity {
Loading
Loading
@@ -129,78 +128,86 @@ public class LoginActivity extends BaseActivity {
progress.setVisibility(View.VISIBLE);
progress.setAlpha(0.0f);
progress.animate().alpha(1.0f);
Prefs.setServerUrl(this, "");
Prefs.setPrivateToken(this, "");
Prefs.setLoggedIn(this, false);
String serverURL = urlInput.getText().toString();
Prefs.setServerUrl(this, serverURL);
Prefs.setServerUrl(this, urlInput.getText().toString());
if(byAuth)
connectByAuth();
else
connectByToken();
if(byAuth) {
connectByAuth();
}
else {
connectByToken();
}
}
private void connectByAuth() {
if(userInput.getText().toString().contains("@"))
GitLabClient.instance().getSessionByEmail(userInput.getText().toString(), passwordInput.getText().toString(), "", sessionCallback);
else
GitLabClient.instance().getSessionByUsername(userInput.getText().toString(), passwordInput.getText().toString(), "", sessionCallback);
if(userInput.getText().toString().contains("@")) {
GitLabClient.instance().getSessionByEmail(userInput.getText().toString(), passwordInput.getText().toString()).enqueue(sessionCallback);
}
else {
GitLabClient.instance().getSessionByUsername(userInput.getText().toString(), passwordInput.getText().toString()).enqueue(sessionCallback);
}
}
private Callback<Session> sessionCallback = new Callback<Session>() {
@Override
public void success(Session session, Response resp) {
public void onResponse(Response<Session> response) {
if (!response.isSuccess()) {
Timber.d("onResponse failed");
return;
}
progress.setVisibility(View.GONE);
Prefs.setLoggedIn(LoginActivity.this, true);
Prefs.setUserId(LoginActivity.this, session.getId());
Prefs.setPrivateToken(LoginActivity.this, session.getPrivateToken());
Prefs.setUserId(LoginActivity.this, response.body().getId());
Prefs.setPrivateToken(LoginActivity.this, response.body().getPrivateToken());
Intent i = new Intent(LoginActivity.this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
@Override
public void failure(RetrofitError e) {
handleConnectionError(e, true);
public void onFailure(Throwable t) {
handleConnectionError(t, true);
}
};
private void connectByToken() {
Prefs.setPrivateToken(this, tokenInput.getText().toString());
GitLabClient.instance().getProjects(tokenCallback);
GitLabClient.instance().getProjects().enqueue(tokenCallback);
}
private Callback<List<Project>> tokenCallback = new Callback<List<Project>>() {
@Override
public void success(List<Project> projects, Response resp) {
progress.setVisibility(View.GONE);
public void onResponse(Response<List<Project>> response) {
if (!response.isSuccess()) {
return;
}
progress.setVisibility(View.GONE);
 
Prefs.setLoggedIn(LoginActivity.this, true);
Intent i = new Intent(LoginActivity.this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
@Override
public void failure(RetrofitError e) {
handleConnectionError(e, false);
public void onFailure(Throwable t) {
handleConnectionError(t, false);
}
};
 
private void handleConnectionError(RetrofitError e, boolean auth) {
private void handleConnectionError(Throwable e, boolean auth) {
Timber.e(e.toString());
 
progress.setVisibility(View.GONE);
 
if(e.getCause() instanceof SSLHandshakeException) {
if(e instanceof SSLHandshakeException) {
Dialog d = new AlertDialog.Builder(this)
.setTitle(R.string.certificate_title)
.setMessage(R.string.certificate_message)
Loading
Loading
@@ -213,12 +220,7 @@ public class LoginActivity extends BaseActivity {
.show();
 
((TextView)d.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
}
else if(e.getResponse() != null && (e.getResponse().getStatus() == 301 || e.getResponse().getStatus() == 405) && !urlInput.getText().toString().contains("https://")) {
urlInput.setText(urlInput.getText().toString().replace("http://", "https://"));
connect(auth);
}
else {
} else {
Toast.makeText(this, getString(R.string.login_error), Toast.LENGTH_SHORT)
.show();
}
Loading
Loading
Loading
Loading
@@ -43,8 +43,7 @@ import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
public class MainActivity extends BaseActivity {
Loading
Loading
@@ -219,103 +218,118 @@ public class MainActivity extends BaseActivity {
progress.setVisibility(View.VISIBLE);
progress.setAlpha(0.0f);
progress.animate().alpha(1.0f);
GitLabClient.instance().getGroups(groupsCallback);
GitLabClient.instance().getGroups().enqueue(groupsCallback);
}
private Callback<List<Group>> groupsCallback = new Callback<List<Group>>() {
@Override
public void success(List<Group> groups, Response resp) {
Repository.groups = new ArrayList<>(groups);
GitLabClient.instance().getUsers(usersCallback);
public void onResponse(Response<List<Group>> response) {
if (!response.isSuccess()) {
return;
}
Repository.groups = new ArrayList<>(response.body());
GitLabClient.instance().getUsers().enqueue(usersCallback);
}
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
GitLabClient.instance().getUsers(usersCallback);
public void onFailure(Throwable t) {
Timber.e(t.toString());
GitLabClient.instance().getUsers().enqueue(usersCallback);
}
};
private Callback<List<User>> usersCallback = new Callback<List<User>>() {
@Override
public void success(List<User> users, Response resp) {
Repository.users = new ArrayList<>(users);
 
GitLabClient.instance().getProjects(projectsCallback);
}
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
progress.setVisibility(View.GONE);
public void onResponse(Response<List<User>> response) {
if (!response.isSuccess()) {
return;
}
Repository.users = new ArrayList<>(response.body());
GitLabClient.instance().getProjects().enqueue(projectsCallback);
}
 
@Override
public void onFailure(Throwable t) {
Timber.e(t.toString());
progress.setVisibility(View.GONE);
Snackbar.make(getWindow().getDecorView(), getString(R.string.connection_error), Snackbar.LENGTH_SHORT)
.show();
}
};
private Callback<List<Project>> projectsCallback = new Callback<List<Project>>() {
@Override
public void success(List<Project> projects, Response resp) {
Repository.projects = new ArrayList<>(projects);
public void onResponse(Response<List<Project>> response) {
if (!response.isSuccess()) {
return;
}
Repository.projects = new ArrayList<>(response.body());
 
if(!projects.isEmpty()) {
String lastProject = Prefs.getLastProject(MainActivity.this);
if(!response.body().isEmpty()) {
String lastProject = Prefs.getLastProject(MainActivity.this);
if(TextUtils.isEmpty(lastProject)){
GitLabApp.instance().setSelectedProject(projects.get(0));
GitLabApp.instance().setSelectedProject(response.body().get(0));
} else {
for(Project p : projects) {
if(p.toString().equals(lastProject)) {
GitLabApp.instance().setSelectedProject(p);
}
}
if(GitLabApp.instance().getSelectedProject() == null) {
GitLabApp.instance().setSelectedProject(projects.get(0));
}
}
for(Project p : response.body()) {
if(p.toString().equals(lastProject)) {
GitLabApp.instance().setSelectedProject(p);
}
}
if(GitLabApp.instance().getSelectedProject() == null) {
GitLabApp.instance().setSelectedProject(response.body().get(0));
}
}
}
if(GitLabApp.instance().getSelectedProject() != null) {
GitLabClient.instance().getBranches(GitLabApp.instance().getSelectedProject().getId(), branchesCallback);
GitLabClient.instance().getBranches(GitLabApp.instance().getSelectedProject().getId()).enqueue(branchesCallback);
}
else {
progress.setVisibility(View.GONE);
else {
progress.setVisibility(View.GONE);
}
navigationView.setProjects(projects);
navigationView.setProjects(response.body());
}
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
progress.setVisibility(View.GONE);
public void onFailure(Throwable t) {
Timber.e(t.toString());
progress.setVisibility(View.GONE);
Snackbar.make(getWindow().getDecorView(), getString(R.string.connection_error), Snackbar.LENGTH_SHORT)
.show();
}
};
private Callback<List<Branch>> branchesCallback = new Callback<List<Branch>>() {
@Override
public void success(List<Branch> branches, Response resp) {
progress.setVisibility(View.GONE);
Repository.branches = new ArrayList<>(branches);
public void onResponse(Response<List<Branch>> response) {
if (!response.isSuccess()) {
if(response.code() == 500) {
GitLabApp.instance().setSelectedBranch(null);
broadcastLoad();
return;
}
return;
}
progress.setVisibility(View.GONE);
Repository.branches = new ArrayList<>(response.body());
 
Branch[] spinnerData = new Branch[branches.size()];
Branch[] spinnerData = new Branch[response.body().size()];
int selectedBranchIndex = -1;
for(int i = 0; i < branches.size(); i++) {
spinnerData[i] = branches.get(i);
if(Prefs.getLastBranch(MainActivity.this).equals(spinnerData[i].getName())) {
selectedBranchIndex = i;
}
else if(selectedBranchIndex == -1 && GitLabApp.instance().getSelectedProject() != null && spinnerData[i].getName().equals(GitLabApp.instance().getSelectedProject().getDefaultBranch())) {
selectedBranchIndex = i;
}
for(int i = 0; i < response.body().size(); i++) {
spinnerData[i] = response.body().get(i);
if(Prefs.getLastBranch(MainActivity.this).equals(spinnerData[i].getName())) {
selectedBranchIndex = i;
}
else if(selectedBranchIndex == -1 && GitLabApp.instance().getSelectedProject() != null && spinnerData[i].getName().equals(GitLabApp.instance().getSelectedProject().getDefaultBranch())) {
selectedBranchIndex = i;
}
}
 
// Set up the dropdown list navigation in the action bar.
Loading
Loading
@@ -324,24 +338,17 @@ public class MainActivity extends BaseActivity {
branchSpinner.setSelection(selectedBranchIndex);
}
branchSpinner.setOnItemSelectedListener(spinnerItemSelectedListener);
if(branches.isEmpty()) {
if(response.body().isEmpty()) {
GitLabApp.instance().setSelectedBranch(null);
broadcastLoad();
}
}
@Override
public void failure(RetrofitError e) {
progress.setVisibility(View.GONE);
if(e.getResponse() != null && e.getResponse().getStatus() == 500) {
GitLabApp.instance().setSelectedBranch(null);
broadcastLoad();
return;
}
 
Timber.e(e.toString());
@Override
public void onFailure(Throwable t) {
progress.setVisibility(View.GONE);
Timber.e(t.toString());
Snackbar.make(getWindow().getDecorView(), getString(R.string.connection_error), Snackbar.LENGTH_SHORT)
.show();
}
Loading
Loading
@@ -356,7 +363,7 @@ public class MainActivity extends BaseActivity {
 
@Subscribe
public void onProjectChanged(ProjectChangedEvent event) {
GitLabClient.instance().getBranches(GitLabApp.instance().getSelectedProject().getId(), branchesCallback);
GitLabClient.instance().getBranches(GitLabApp.instance().getSelectedProject().getId()).enqueue(branchesCallback);
}
}
}
package com.commit451.gitlab.api;
import com.commit451.gitlab.GitLabApp;
import com.commit451.gitlab.tools.Prefs;
import com.squareup.okhttp.Interceptor;
import com.squareup.okhttp.Response;
import java.io.IOException;
/**
* Adds the private token to all requests
* Created by Jawn on 9/15/2015.
*/
public class ApiKeyRequestInterceptor implements Interceptor {
private static final String KEY_PRIVATE_TOKEN = "PRIVATE-TOKEN";
@Override
public Response intercept(Chain chain) throws IOException {
return chain.proceed(chain.request().newBuilder()
.header(KEY_PRIVATE_TOKEN, Prefs.getPrivateToken(GitLabApp.instance()))
.build());
}
}
Loading
Loading
@@ -16,8 +16,7 @@ import com.commit451.gitlab.model.User;
 
import java.util.List;
 
import retrofit.Callback;
import retrofit.http.Body;
import retrofit.Call;
import retrofit.http.DELETE;
import retrofit.http.GET;
import retrofit.http.POST;
Loading
Loading
@@ -26,136 +25,109 @@ import retrofit.http.Path;
import retrofit.http.Query;
 
public interface GitLab {
String API_VERSION = "/api/v3";
/* --- LOGIN --- */
@POST("/session")
void getSessionByUsername(@Query("login") String login,
@Query("password") String password,
@Body String blankBodySoRetrofitDoesntCry,
Callback<Session> cb);
@POST(API_VERSION + "/session")
Call<Session> getSessionByUsername(@Query("login") String login,
@Query("password") String password);
@POST("/session")
void getSessionByEmail(@Query("email") String email,
@Query("password") String password,
@Body String blankBodySoRetrofitDoesntCry,
Callback<Session> cb);
@POST(API_VERSION + "/session")
Call<Session> getSessionByEmail(@Query("email") String email,
@Query("password") String password);
/* --- MAIN --- */
@GET("/groups?per_page=100")
void getGroups(Callback<List<Group>> cb);
@GET(API_VERSION + "/groups?per_page=100")
Call<List<Group>> getGroups();
@GET("/users?per_page=100")
void getUsers(Callback<List<User>> cb);
@GET(API_VERSION + "/users?per_page=100")
Call<List<User>> getUsers();
@GET("/projects?per_page=100")
void getProjects(Callback<List<Project>> cb);
@GET(API_VERSION + "/projects?per_page=100")
Call<List<Project>> getProjects();
/* --- MISC --- */
@GET("/projects/{id}/repository/branches?per_page=100")
void getBranches(@Path("id") long projectId,
Callback<List<Branch>> cb);
@GET(API_VERSION + "/projects/{id}/repository/branches?per_page=100")
Call<List<Branch>> getBranches(@Path("id") long projectId);
@GET("/projects/{id}/milestones?per_page=100")
void getMilestones(@Path("id") long projectId,
Callback<List<Milestone>> cb);
@GET(API_VERSION + "/projects/{id}/milestones?per_page=100")
Call<List<Milestone>> getMilestones(@Path("id") long projectId);
@GET("/projects/{id}/members?per_page=100")
void getUsersFallback(@Path("id") long projectId,
Callback<List<User>> cb);
@GET(API_VERSION + "/projects/{id}/members?per_page=100")
Call<List<User>> getUsersFallback(@Path("id") long projectId);
/* --- COMMITS --- */
@GET("/projects/{id}/repository/commits?per_page=100")
void getCommits(@Path("id") long projectId,
@Query("ref_name") String branchName,
Callback<List<DiffLine>> cb);
@GET(API_VERSION + "/projects/{id}/repository/commits?per_page=100")
Call<List<DiffLine>> getCommits(@Path("id") long projectId,
@Query("ref_name") String branchName);
 
@GET("/projects/{id}/repository/commits/{sha}")
void getCommit(@Path("id") long projectId,
@Path("sha") String commitSHA,
Callback<DiffLine> cb);
@GET("/projects/{id}/repository/commits/{sha}/diff")
void getCommitDiff(@Path("id") long projectId,
@Path("sha") String commitSHA,
Callback<List<Diff>> cb);
@GET(API_VERSION + "/projects/{id}/repository/commits/{sha}")
Call<DiffLine> getCommit(@Path("id") long projectId,
@Path("sha") String commitSHA);
@GET(API_VERSION + "/projects/{id}/repository/commits/{sha}/diff")
Call<List<Diff>> getCommitDiff(@Path("id") long projectId,
@Path("sha") String commitSHA);
 
/* --- ISSUE --- */
@GET("/projects/{id}/issues?per_page=100")
void getIssues(@Path("id") long projectId,
Callback<List<Issue>> cb);
@GET(API_VERSION + "/projects/{id}/issues?per_page=100")
Call<List<Issue>> getIssues(@Path("id") long projectId);
@POST("/projects/{id}/issues")
void postIssue(@Path("id") long projectId,
@POST(API_VERSION + "/projects/{id}/issues")
Call<Issue> postIssue(@Path("id") long projectId,
@Query("title") String title,
@Query("description") String description,
@Body String blankBodySoRetrofitDoesntCry,
Callback<Issue> cb);
@Query("description") String description);
@PUT("/projects/{id}/issues/{issue_id}")
void editIssue(@Path("id") long projectId,
@PUT(API_VERSION + "/projects/{id}/issues/{issue_id}")
Call<Issue> editIssue(@Path("id") long projectId,
@Path("issue_id") long issueId,
@Query("state_event") String stateEvent,
@Query("assignee_id") long assigneeId,
@Query("milestone_id") long milestoneId,
@Body String blankBodySoRetrofitDoesntCry,
Callback<Issue> cb);
@Query("milestone_id") long milestoneId);
 
@PUT("/projects/{id}/issues/{issue_id}")
void editIssue(@Path("id") long projectId,
@PUT(API_VERSION + "/projects/{id}/issues/{issue_id}")
Call<Issue> editIssue(@Path("id") long projectId,
@Path("issue_id") long issueId,
@Query("state_event") String stateEvent,
@Body String blankBodySoRetrofitDoesntCry,
Callback<Issue> cb);
@Query("state_event") String stateEvent);
@GET("/projects/{id}/issues/{issue_id}/notes?per_page=100")
void getIssueNotes(@Path("id") long projectId,
@Path("issue_id") long issueId,
Callback<List<Note>> cb);
@GET(API_VERSION + "/projects/{id}/issues/{issue_id}/notes?per_page=100")
Call<List<Note>> getIssueNotes(@Path("id") long projectId,
@Path("issue_id") long issueId);
@POST("/projects/{id}/issues/{issue_id}/notes")
void postIssueNote(@Path("id") long projectId,
@POST(API_VERSION + "/projects/{id}/issues/{issue_id}/notes")
Call<Note> postIssueNote(@Path("id") long projectId,
@Path("issue_id") long issueId,
@Query("body") String body,
@Body String blankBodySoRetrofitDoesntCry,
Callback<Note> cb);
@Query("body") String body);
/* --- FILES --- */
@GET("/projects/{id}/repository/tree?per_page=100")
void getTree(@Path("id") long projectId,
@GET(API_VERSION + "/projects/{id}/repository/tree?per_page=100")
Call<List<TreeItem>> getTree(@Path("id") long projectId,
@Query("ref_name") String branchName,
@Query("path") String path,
Callback<List<TreeItem>> cb);
@Query("path") String path);
 
@GET("/projects/{id}/repository/files")
void getFile(@Path("id") long projectId,
@GET(API_VERSION + "/projects/{id}/repository/files")
Call<FileResponse> getFile(@Path("id") long projectId,
@Query("file_path") String path,
@Query("ref") String ref,
Callback<FileResponse> callback);
@Query("ref") String ref);
/* --- USER --- */
 
@GET("/users/{id}")
void getUser(@Path("id") long userId,
Callback<User> userCallback);
@GET(API_VERSION + "/users/{id}")
Call<User> getUser(@Path("id") long userId);
@GET("/groups/{id}/members?per_page=100")
void getGroupMembers(@Path("id") long groupId,
Callback<List<User>> cb);
@GET(API_VERSION + "/groups/{id}/members?per_page=100")
Call<List<User>> getGroupMembers(@Path("id") long groupId);
@POST("/groups/{id}/members")
void addGroupMember(@Path("id") long groupId,
@POST(API_VERSION + "/groups/{id}/members")
Call<User> addGroupMember(@Path("id") long groupId,
@Query("user_id") long userId,
@Query("access_level") String accessLevel,
@Body String blankBodySoRetrofitDoesntCry,
Callback<User> cb);
@DELETE("/groups/{id}/members/{user_id}")
void removeGroupMember(@Path("id") long groupId,
@Path("user_id") long userId,
Callback<DeleteResponse> cb);
@Query("access_level") String accessLevel);
@DELETE(API_VERSION + "/groups/{id}/members/{user_id}")
Call<DeleteResponse> removeGroupMember(@Path("id") long groupId,
@Path("user_id") long userId);
}
\ No newline at end of file
package com.commit451.gitlab.api;
 
import com.commit451.gitlab.BuildConfig;
import com.commit451.gitlab.GitLabApp;
import com.commit451.gitlab.tools.Prefs;
import com.google.gson.Gson;
Loading
Loading
@@ -9,21 +8,21 @@ import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.squareup.okhttp.OkHttpClient;
 
import org.joda.time.format.ISODateTimeFormat;
 
import java.lang.reflect.Type;
import java.util.Date;
 
import retrofit.RestAdapter;
import retrofit.converter.GsonConverter;
import retrofit.GsonConverterFactory;
import retrofit.Retrofit;
 
/**
* Created by Jawn on 7/28/2015.
*/
public class GitLabClient {
 
private static final String API_VERSION = "/api/v3";
private static GitLab gitLab;
 
public static GitLab instance() {
Loading
Loading
@@ -38,12 +37,14 @@ public class GitLabClient {
}
});
Gson gson = gsonBuilder.create();
RestAdapter restAdapter = new RestAdapter.Builder()
.setRequestInterceptor(new GitLabInterceptor())
.setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.BASIC)
.setConverter(new GsonConverter(gson))
.setEndpoint(Prefs.getServerUrl(GitLabApp.instance()) + API_VERSION)
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new TimberRequestInterceptor());
client.networkInterceptors().add(new ApiKeyRequestInterceptor());
Retrofit restAdapter = new Retrofit.Builder()
.baseUrl(Prefs.getServerUrl(GitLabApp.instance()))
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
gitLab = restAdapter.create(GitLab.class);
}
Loading
Loading
package com.commit451.gitlab.api;
import com.commit451.gitlab.GitLabApp;
import com.commit451.gitlab.tools.Prefs;
import retrofit.RequestInterceptor;
public class GitLabInterceptor implements RequestInterceptor {
@Override
public void intercept(RequestFacade req) {
req.addHeader("PRIVATE-TOKEN", Prefs.getPrivateToken(GitLabApp.instance()));
}
}
package com.commit451.gitlab.api;
import com.squareup.okhttp.Interceptor;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import java.io.IOException;
import timber.log.Timber;
/**
* Intercepts requests and logs them using Timber
* Created by John on 9/11/15.
*/
public class TimberRequestInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
long t1 = System.nanoTime();
Timber.i(String.format("Sending request %s on %s%n%s",
request.url(), chain.connection(), request.headers()));
Response response = chain.proceed(request);
long t2 = System.nanoTime();
Timber.i(String.format("Received response for %s in %.1fms%n%s",
response.request().url(), (t2 - t1) / 1e6d, response.headers()));
return response;
}
}
\ No newline at end of file
Loading
Loading
@@ -9,8 +9,8 @@ import android.widget.EditText;
import android.widget.Toast;
 
import com.commit451.gitlab.GitLabApp;
import com.commit451.gitlab.activities.IssueActivity;
import com.commit451.gitlab.R;
import com.commit451.gitlab.activities.IssueActivity;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.events.IssueCreatedEvent;
import com.commit451.gitlab.model.Issue;
Loading
Loading
@@ -19,8 +19,7 @@ import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
/**
Loading
Loading
@@ -47,7 +46,7 @@ public class NewIssueDialog extends AppCompatDialog {
progress.setVisibility(View.VISIBLE);
progress.setAlpha(0.0f);
progress.animate().alpha(1.0f);
GitLabClient.instance().postIssue(GitLabApp.instance().getSelectedProject().getId(), titleInput.getText().toString().trim(), descriptionInput.getText().toString().trim(), "", issueCallback);
GitLabClient.instance().postIssue(GitLabApp.instance().getSelectedProject().getId(), titleInput.getText().toString().trim(), descriptionInput.getText().toString().trim()).enqueue(issueCallback);
}
else {
titleInputLayout.setError(getContext().getString(R.string.required_field));
Loading
Loading
@@ -62,16 +61,19 @@ public class NewIssueDialog extends AppCompatDialog {
private Callback<Issue> issueCallback = new Callback<Issue>() {
 
@Override
public void success(Issue issue, Response resp) {
public void onResponse(Response<Issue> response) {
if (!response.isSuccess()) {
return;
}
//TODO update the parent list when a new issue is created
GitLabApp.bus().post(new IssueCreatedEvent(issue));
getContext().startActivity(IssueActivity.newInstance(getContext(), issue));
GitLabApp.bus().post(new IssueCreatedEvent(response.body()));
getContext().startActivity(IssueActivity.newInstance(getContext(), response.body()));
dismiss();
}
 
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
public void onFailure(Throwable t) {
Timber.e(t.toString());
progress.setVisibility(View.GONE);
Toast.makeText(getContext(), getContext().getString(R.string.connection_error), Toast.LENGTH_SHORT)
.show();
Loading
Loading
Loading
Loading
@@ -18,8 +18,7 @@ import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
/**
Loading
Loading
@@ -59,29 +58,31 @@ public class NewUserDialog extends AppCompatDialog {
long userId = ((User) userSpinner.getSelectedItem()).getId();
String accessLevel = getContext().getResources().getStringArray(R.array.role_values)[roleSpinner.getSelectedItemPosition()];
 
GitLabClient.instance().addGroupMember(GitLabApp.instance().getSelectedProject().getGroup().getId(), userId, accessLevel, "", userCallback);
GitLabClient.instance().addGroupMember(GitLabApp.instance().getSelectedProject().getGroup().getId(), userId, accessLevel).enqueue(userCallback);
}
 
private Callback<User> userCallback = new Callback<User>() {
 
@Override
public void success(User user, Response resp) {
public void onResponse(Response<User> response) {
if (!response.isSuccess()) {
return;
}
progress.setVisibility(View.GONE);
 
if(user.getId() != 0) {
if(response.body().getId() != 0) {
//TODO tell the parent to add the user to the list
}
else {
Toast.makeText(getContext(), getContext().getString(R.string.user_error), Toast.LENGTH_SHORT)
.show();
}
dismiss();
}
 
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
public void onFailure(Throwable t) {
Timber.e(t.toString());
 
progress.setVisibility(View.GONE);
Toast.makeText(getContext(), getContext().getString(R.string.user_error), Toast.LENGTH_SHORT)
Loading
Loading
Loading
Loading
@@ -20,8 +20,7 @@ import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
public class CommitsFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
Loading
Loading
@@ -83,7 +82,7 @@ public class CommitsFragment extends BaseFragment implements SwipeRefreshLayout.
swipeLayout.setRefreshing(true);
}
 
GitLabClient.instance().getCommits(GitLabApp.instance().getSelectedProject().getId(), GitLabApp.instance().getSelectedBranch().getName(), commitsCallback);
GitLabClient.instance().getCommits(GitLabApp.instance().getSelectedProject().getId(), GitLabApp.instance().getSelectedBranch().getName()).enqueue(commitsCallback);
}
 
public boolean onBackPressed() {
Loading
Loading
@@ -91,32 +90,36 @@ public class CommitsFragment extends BaseFragment implements SwipeRefreshLayout.
}
private Callback<List<DiffLine>> commitsCallback = new Callback<List<DiffLine>>() {
@Override
public void success(List<DiffLine> commits, Response resp) {
if (swipeLayout == null) {
return;
}
swipeLayout.setRefreshing(false);
if(commits.size() > 0) {
messageView.setVisibility(View.GONE);
public void onResponse(Response<List<DiffLine>> response) {
if (!response.isSuccess()) {
return;
}
if (swipeLayout == null) {
return;
}
swipeLayout.setRefreshing(false);
if(response.body().size() > 0) {
messageView.setVisibility(View.GONE);
}
else {
Timber.d("No commits have been made");
messageView.setVisibility(View.VISIBLE);
Timber.d("No commits have been made");
messageView.setVisibility(View.VISIBLE);
}
adapter.setData(commits);
adapter.setData(response.body());
}
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
public void onFailure(Throwable t) {
Timber.e(t.toString());
 
if(swipeLayout != null && swipeLayout.isRefreshing()) {
swipeLayout.setRefreshing(false);
}
messageView.setVisibility(View.VISIBLE);
swipeLayout.setRefreshing(false);
}
messageView.setVisibility(View.VISIBLE);
 
Snackbar.make(getActivity().getWindow().getDecorView(), getString(R.string.connection_error_commits), Snackbar.LENGTH_SHORT)
.show();
Loading
Loading
Loading
Loading
@@ -25,8 +25,7 @@ import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
public class FilesFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
Loading
Loading
@@ -94,47 +93,53 @@ public class FilesFragment extends BaseFragment implements SwipeRefreshLayout.On
currentPath += p;
}
 
GitLabClient.instance().getTree(GitLabApp.instance().getSelectedProject().getId(), branch, currentPath, filesCallback);
GitLabClient.instance().getTree(GitLabApp.instance().getSelectedProject().getId(), branch, currentPath).enqueue(filesCallback);
}
private Callback<List<TreeItem>> filesCallback = new Callback<List<TreeItem>>() {
@Override
public void success(List<TreeItem> files, Response resp) {
if(swipeLayout != null && swipeLayout.isRefreshing()) {
public void onResponse(Response<List<TreeItem>> response) {
if (!response.isSuccess()) {
if(response.code() == 404) {
errorText.setVisibility(View.VISIBLE);
list.setVisibility(View.GONE);
}
else {
if(path.size() > 0) {
path.remove(path.size() - 1);
}
list.setAdapter(null);
if(response.code() != 500) {
Snackbar.make(getActivity().getWindow().getDecorView(), getString(R.string.connection_error_files), Snackbar.LENGTH_SHORT)
.show();
}
}
return;
}
if(swipeLayout != null && swipeLayout.isRefreshing()) {
swipeLayout.setRefreshing(false);
}
if (files != null && !files.isEmpty()) {
list.setVisibility(View.VISIBLE);
list.setAdapter(new FilesAdapter(files));
errorText.setVisibility(View.GONE);
} else {
errorText.setVisibility(View.VISIBLE);
}
if (response.body() != null && !response.body().isEmpty()) {
list.setVisibility(View.VISIBLE);
list.setAdapter(new FilesAdapter(response.body()));
errorText.setVisibility(View.GONE);
} else {
errorText.setVisibility(View.VISIBLE);
}
}
@Override
public void failure(RetrofitError e) {
public void onFailure(Throwable t) {
if(swipeLayout != null && swipeLayout.isRefreshing()) {
swipeLayout.setRefreshing(false);
}
if(e.getResponse() != null && e.getResponse().getStatus() == 404) {
errorText.setVisibility(View.VISIBLE);
list.setVisibility(View.GONE);
}
else {
if(path.size() > 0) {
path.remove(path.size() - 1);
}
list.setAdapter(null);
if(e.getResponse() != null && e.getResponse().getStatus() != 500) {
Timber.e(e.toString());
Snackbar.make(getActivity().getWindow().getDecorView(), getString(R.string.connection_error_files), Snackbar.LENGTH_SHORT)
.show();
}
swipeLayout.setRefreshing(false);
}
Snackbar.make(getActivity().getWindow().getDecorView(), getString(R.string.connection_error_files), Snackbar.LENGTH_SHORT)
.show();
Timber.e(t.toString());
}
};
Loading
Loading
Loading
Loading
@@ -24,8 +24,7 @@ import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
public class IssuesFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
Loading
Loading
@@ -76,27 +75,30 @@ public class IssuesFragment extends BaseFragment implements SwipeRefreshLayout.O
swipeLayout.setRefreshing(true);
}
 
GitLabClient.instance().getIssues(GitLabApp.instance().getSelectedProject().getId(), issuesCallback);
GitLabClient.instance().getIssues(GitLabApp.instance().getSelectedProject().getId()).enqueue(issuesCallback);
}
private Callback<List<Issue>> issuesCallback = new Callback<List<Issue>>() {
@Override
public void success(List<Issue> issues, Response resp) {
public void onResponse(Response<List<Issue>> response) {
if (!response.isSuccess()) {
return;
}
if(swipeLayout != null && swipeLayout.isRefreshing()) {
swipeLayout.setRefreshing(false);
}
issuesAdapter.setIssues(issues);
issuesAdapter.setIssues(response.body());
 
addIssueButton.setEnabled(true);
}
@Override
public void failure(RetrofitError e) {
Timber.e(e.toString());
public void onFailure(Throwable t) {
Timber.e(t.toString());
if(swipeLayout != null && swipeLayout.isRefreshing())
swipeLayout.setRefreshing(false);
swipeLayout.setRefreshing(false);
Snackbar.make(getActivity().getWindow().getDecorView(), getString(R.string.connection_error_issues), Snackbar.LENGTH_SHORT)
.show();
listView.setAdapter(null);
Loading
Loading
Loading
Loading
@@ -25,8 +25,7 @@ import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
public class UsersFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
Loading
Loading
@@ -86,13 +85,16 @@ public class UsersFragment extends BaseFragment implements SwipeRefreshLayout.On
return;
}
 
GitLabClient.instance().getGroupMembers(GitLabApp.instance().getSelectedProject().getGroup().getId(), usersCallback);
GitLabClient.instance().getGroupMembers(GitLabApp.instance().getSelectedProject().getGroup().getId()).enqueue(usersCallback);
}
public Callback<List<User>> usersCallback = new Callback<List<User>>() {
@Override
public void success(List<User> users, Response resp) {
public void onResponse(Response<List<User>> response) {
if (!response.isSuccess()) {
return;
}
if (getView() == null) {
return;
}
Loading
Loading
@@ -101,20 +103,20 @@ public class UsersFragment extends BaseFragment implements SwipeRefreshLayout.On
listView.setVisibility(View.VISIBLE);
addUserButton.setVisibility(View.VISIBLE);
 
listView.setAdapter(new NewUserAdapter(users));
listView.setAdapter(new NewUserAdapter(response.body()));
addUserButton.setEnabled(true);
}
@Override
public void failure(RetrofitError e) {
public void onFailure(Throwable t) {
if (getView() == null) {
return;
}
swipeLayout.setRefreshing(false);
errorText.setVisibility(View.VISIBLE);
addUserButton.setVisibility(View.GONE);
Timber.e(e.toString());
Timber.e(t.toString());
Snackbar.make(getActivity().getWindow().getDecorView(), getString(R.string.connection_error_users), Snackbar.LENGTH_SHORT)
.show();
}
Loading
Loading
package com.commit451.gitlab.github;
 
 
import com.commit451.gitlab.BuildConfig;
import java.util.List;
 
import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.Call;
import retrofit.GsonConverterFactory;
import retrofit.Retrofit;
import retrofit.http.GET;
import retrofit.http.Path;
 
Loading
Loading
@@ -20,18 +19,17 @@ public class GithubClient {
 
public interface GitHub {
@GET("/repos/{owner}/{repo}/contributors")
void contributors(
Call<List<Contributor>> contributors(
@Path("owner") String owner,
@Path("repo") String repo,
Callback<List<Contributor>> callback);
@Path("repo") String repo);
}
 
private static GitHub mGithub;
public static GitHub instance() {
if (mGithub == null) {
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(API_URL)
.setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE)
Retrofit restAdapter = new Retrofit.Builder()
.baseUrl(API_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
mGithub = restAdapter.create(GitHub.class);
}
Loading
Loading
Loading
Loading
@@ -22,8 +22,7 @@ import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.Response;
import timber.log.Timber;
 
/**
Loading
Loading
@@ -41,18 +40,22 @@ public class GitLabNavigationView extends FrameLayout{
}
 
private final Callback<User> userCallback = new Callback<User>() {
@Override
public void success(User user, Response response) {
public void onResponse(Response<User> response) {
if (!response.isSuccess()) {
return;
}
if (getContext() != null) {
Picasso.with(getContext())
.load(user.getAvatarUrl())
.load(response.body().getAvatarUrl())
.into(profileImage);
}
}
 
@Override
public void failure(RetrofitError error) {
Timber.e(error.toString());
public void onFailure(Throwable t) {
Timber.e(t.toString());
}
};
 
Loading
Loading
@@ -88,6 +91,6 @@ public class GitLabNavigationView extends FrameLayout{
}
 
public void setUserId(long userId) {
GitLabClient.instance().getUser(userId, userCallback);
GitLabClient.instance().getUser(userId).enqueue(userCallback);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment