Skip to content

Commit 4e93fa2

Browse files
committed
Merge branch 'master' into 'master'
Fix for issue #23 Modified the POST requests to account for security issue stated in [issue #23](https://gitlab.com/Commit451/GitLabAndroid/issues/23). See merge request !2
2 parents e6b9ef1 + 57a8c6b commit 4e93fa2

File tree

1 file changed

+106
-99
lines changed

1 file changed

+106
-99
lines changed

app/src/main/java/com/commit451/gitlab/api/GitLab.java

Lines changed: 106 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -18,125 +18,132 @@
1818

1919
import retrofit.Call;
2020
import retrofit.http.DELETE;
21+
import retrofit.http.Field;
22+
import retrofit.http.FormUrlEncoded;
2123
import retrofit.http.GET;
2224
import retrofit.http.POST;
2325
import retrofit.http.PUT;
2426
import retrofit.http.Path;
2527
import retrofit.http.Query;
2628

2729
public interface GitLab {
28-
String API_VERSION = "/api/v3";
29-
/* --- LOGIN --- */
30-
31-
@POST(API_VERSION + "/session")
32-
Call<Session> getSessionByUsername(@Query("login") String login,
33-
@Query("password") String password);
34-
35-
@POST(API_VERSION + "/session")
36-
Call<Session> getSessionByEmail(@Query("email") String email,
37-
@Query("password") String password);
30+
String API_VERSION = "/api/v3";
31+
/* --- LOGIN --- */
32+
33+
@FormUrlEncoded
34+
@POST(API_VERSION + "/session")
35+
Call<Session> getSessionByUsername(@Field("login") String login,
36+
@Field("password") String password);
37+
38+
@FormUrlEncoded
39+
@POST(API_VERSION + "/session")
40+
Call<Session> getSessionByEmail(@Field("email") String email,
41+
@Field("password") String password);
3842

3943
/* --- MAIN --- */
40-
41-
@GET(API_VERSION + "/groups?per_page=100")
42-
Call<List<Group>> getGroups();
43-
44-
@GET(API_VERSION + "/users?per_page=100")
45-
Call<List<User>> getUsers();
46-
47-
@GET(API_VERSION + "/projects?per_page=100")
48-
Call<List<Project>> getProjects();
44+
45+
@GET(API_VERSION + "/groups?per_page=100")
46+
Call<List<Group>> getGroups();
47+
48+
@GET(API_VERSION + "/users?per_page=100")
49+
Call<List<User>> getUsers();
50+
51+
@GET(API_VERSION + "/projects?per_page=100")
52+
Call<List<Project>> getProjects();
4953

5054
/* --- MISC --- */
51-
52-
@GET(API_VERSION + "/projects/{id}/repository/branches?per_page=100")
53-
Call<List<Branch>> getBranches(@Path("id") long projectId);
54-
55-
@GET(API_VERSION + "/projects/{id}/milestones?per_page=100")
56-
Call<List<Milestone>> getMilestones(@Path("id") long projectId);
57-
58-
@GET(API_VERSION + "/projects/{id}/members?per_page=100")
59-
Call<List<User>> getUsersFallback(@Path("id") long projectId);
55+
56+
@GET(API_VERSION + "/projects/{id}/repository/branches?per_page=100")
57+
Call<List<Branch>> getBranches(@Path("id") long projectId);
58+
59+
@GET(API_VERSION + "/projects/{id}/milestones?per_page=100")
60+
Call<List<Milestone>> getMilestones(@Path("id") long projectId);
61+
62+
@GET(API_VERSION + "/projects/{id}/members?per_page=100")
63+
Call<List<User>> getUsersFallback(@Path("id") long projectId);
6064

6165
/* --- COMMITS --- */
62-
63-
@GET(API_VERSION + "/projects/{id}/repository/commits?per_page=100")
64-
Call<List<DiffLine>> getCommits(@Path("id") long projectId,
65-
@Query("ref_name") String branchName);
6666

67-
@GET(API_VERSION + "/projects/{id}/repository/commits/{sha}")
68-
Call<DiffLine> getCommit(@Path("id") long projectId,
69-
@Path("sha") String commitSHA);
70-
71-
@GET(API_VERSION + "/projects/{id}/repository/commits/{sha}/diff")
72-
Call<List<Diff>> getCommitDiff(@Path("id") long projectId,
73-
@Path("sha") String commitSHA);
67+
@GET(API_VERSION + "/projects/{id}/repository/commits?per_page=100")
68+
Call<List<DiffLine>> getCommits(@Path("id") long projectId,
69+
@Query("ref_name") String branchName);
70+
71+
@GET(API_VERSION + "/projects/{id}/repository/commits/{sha}")
72+
Call<DiffLine> getCommit(@Path("id") long projectId,
73+
@Path("sha") String commitSHA);
74+
75+
@GET(API_VERSION + "/projects/{id}/repository/commits/{sha}/diff")
76+
Call<List<Diff>> getCommitDiff(@Path("id") long projectId,
77+
@Path("sha") String commitSHA);
7478

7579
/* --- ISSUE --- */
76-
77-
@GET(API_VERSION + "/projects/{id}/issues?per_page=100")
78-
Call<List<Issue>> getIssues(@Path("id") long projectId);
79-
80-
@POST(API_VERSION + "/projects/{id}/issues")
81-
Call<Issue> postIssue(@Path("id") long projectId,
82-
@Query("title") String title,
83-
@Query("description") String description);
84-
85-
@PUT(API_VERSION + "/projects/{id}/issues/{issue_id}")
86-
Call<Issue> editIssue(@Path("id") long projectId,
87-
@Path("issue_id") long issueId,
88-
@Query("state_event") String stateEvent,
89-
@Query("assignee_id") long assigneeId,
90-
@Query("milestone_id") long milestoneId);
91-
92-
@PUT(API_VERSION + "/projects/{id}/issues/{issue_id}")
93-
Call<Issue> editIssue(@Path("id") long projectId,
94-
@Path("issue_id") long issueId,
95-
@Query("state_event") String stateEvent);
96-
97-
@GET(API_VERSION + "/projects/{id}/issues/{issue_id}/notes?per_page=100")
98-
Call<List<Note>> getIssueNotes(@Path("id") long projectId,
99-
@Path("issue_id") long issueId);
100-
101-
@POST(API_VERSION + "/projects/{id}/issues/{issue_id}/notes")
102-
Call<Note> postIssueNote(@Path("id") long projectId,
103-
@Path("issue_id") long issueId,
104-
@Query("body") String body);
80+
81+
@GET(API_VERSION + "/projects/{id}/issues?per_page=100")
82+
Call<List<Issue>> getIssues(@Path("id") long projectId);
83+
84+
@FormUrlEncoded
85+
@POST(API_VERSION + "/projects/{id}/issues")
86+
Call<Issue> postIssue(@Path("id") long projectId,
87+
@Field("title") String title,
88+
@Field("description") String description);
89+
90+
@PUT(API_VERSION + "/projects/{id}/issues/{issue_id}")
91+
Call<Issue> editIssue(@Path("id") long projectId,
92+
@Path("issue_id") long issueId,
93+
@Query("state_event") String stateEvent,
94+
@Query("assignee_id") long assigneeId,
95+
@Query("milestone_id") long milestoneId);
96+
97+
@PUT(API_VERSION + "/projects/{id}/issues/{issue_id}")
98+
Call<Issue> editIssue(@Path("id") long projectId,
99+
@Path("issue_id") long issueId,
100+
@Query("state_event") String stateEvent);
101+
102+
@GET(API_VERSION + "/projects/{id}/issues/{issue_id}/notes?per_page=100")
103+
Call<List<Note>> getIssueNotes(@Path("id") long projectId,
104+
@Path("issue_id") long issueId);
105+
106+
@FormUrlEncoded
107+
@POST(API_VERSION + "/projects/{id}/issues/{issue_id}/notes")
108+
Call<Note> postIssueNote(@Path("id") long projectId,
109+
@Path("issue_id") long issueId,
110+
@Field("body") String body);
105111

106112
/* --- FILES --- */
107-
108-
@GET(API_VERSION + "/projects/{id}/repository/tree?per_page=100")
109-
Call<List<TreeItem>> getTree(@Path("id") long projectId,
110-
@Query("ref_name") String branchName,
111-
@Query("path") String path);
112-
113-
@GET(API_VERSION + "/projects/{id}/repository/files")
114-
Call<FileResponse> getFile(@Path("id") long projectId,
115-
@Query("file_path") String path,
116-
@Query("ref") String ref);
113+
114+
@GET(API_VERSION + "/projects/{id}/repository/tree?per_page=100")
115+
Call<List<TreeItem>> getTree(@Path("id") long projectId,
116+
@Query("ref_name") String branchName,
117+
@Query("path") String path);
118+
119+
@GET(API_VERSION + "/projects/{id}/repository/files")
120+
Call<FileResponse> getFile(@Path("id") long projectId,
121+
@Query("file_path") String path,
122+
@Query("ref") String ref);
117123
/* --- USER --- */
118124

119-
@GET(API_VERSION + "/users/{id}")
120-
Call<User> getUser(@Path("id") long userId);
125+
@GET(API_VERSION + "/users/{id}")
126+
Call<User> getUser(@Path("id") long userId);
121127

122-
/**
123-
* Get currently authenticated user
124-
*/
125-
@GET(API_VERSION + "/user")
126-
Call<User> getUser();
127-
128-
@GET(API_VERSION + "/groups/{id}/members?per_page=100")
129-
Call<List<User>> getGroupMembers(@Path("id") long groupId);
130-
131-
@POST(API_VERSION + "/groups/{id}/members")
132-
Call<User> addGroupMember(@Path("id") long groupId,
133-
@Query("user_id") long userId,
134-
@Query("access_level") String accessLevel);
135-
136-
@DELETE(API_VERSION + "/groups/{id}/members/{user_id}")
137-
Call<DeleteResponse> removeGroupMember(@Path("id") long groupId,
138-
@Path("user_id") long userId);
128+
/**
129+
* Get currently authenticated user
130+
*/
131+
@GET(API_VERSION + "/user")
132+
Call<User> getUser();
133+
134+
@GET(API_VERSION + "/groups/{id}/members?per_page=100")
135+
Call<List<User>> getGroupMembers(@Path("id") long groupId);
136+
137+
@FormUrlEncoded
138+
@POST(API_VERSION + "/groups/{id}/members")
139+
Call<User> addGroupMember(@Path("id") long groupId,
140+
@Field("user_id") long userId,
141+
@Field("access_level") String accessLevel);
142+
143+
@DELETE(API_VERSION + "/groups/{id}/members/{user_id}")
144+
Call<DeleteResponse> removeGroupMember(@Path("id") long groupId,
145+
@Path("user_id") long userId);
139146

140-
@GET(API_VERSION + "/users")
141-
Call<List<User>> searchUsers(@Query("search") String query);
147+
@GET(API_VERSION + "/users")
148+
Call<List<User>> searchUsers(@Query("search") String query);
142149
}

0 commit comments

Comments
 (0)