001/*
002 * SonarQube
003 * Copyright (C) 2009-2016 SonarSource SA
004 * mailto:contact AT sonarsource DOT com
005 *
006 * This program is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 3 of the License, or (at your option) any later version.
010 *
011 * This program is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014 * Lesser General Public License for more details.
015 *
016 * You should have received a copy of the GNU Lesser General Public License
017 * along with this program; if not, write to the Free Software Foundation,
018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
019 */
020package org.sonarqube.ws.client.permission;
021
022import org.sonarqube.ws.WsPermissions;
023import org.sonarqube.ws.WsPermissions.CreateTemplateWsResponse;
024import org.sonarqube.ws.WsPermissions.SearchProjectPermissionsWsResponse;
025import org.sonarqube.ws.WsPermissions.SearchTemplatesWsResponse;
026import org.sonarqube.ws.WsPermissions.UpdateTemplateWsResponse;
027import org.sonarqube.ws.WsPermissions.UsersWsResponse;
028import org.sonarqube.ws.WsPermissions.WsSearchGlobalPermissionsResponse;
029import org.sonarqube.ws.client.BaseService;
030import org.sonarqube.ws.client.GetRequest;
031import org.sonarqube.ws.client.PostRequest;
032import org.sonarqube.ws.client.WsConnector;
033
034import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_DESCRIPTION;
035import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
036import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
037import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ID;
038import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_NAME;
039import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
040import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_ID;
041import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY;
042import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY_PATTERN;
043import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_QUALIFIER;
044import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
045import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME;
046import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_USER_LOGIN;
047
048public class PermissionsService extends BaseService {
049
050  public PermissionsService(WsConnector wsConnector) {
051    super(wsConnector, PermissionsWsParameters.CONTROLLER);
052  }
053
054  public WsPermissions.WsGroupsResponse groups(GroupsWsRequest request) {
055    GetRequest get = new GetRequest(path("groups"))
056      .setParam(PARAM_PERMISSION, request.getPermission())
057      .setParam(PARAM_PROJECT_ID, request.getProjectId())
058      .setParam(PARAM_PROJECT_KEY, request.getProjectKey())
059      .setParam("p", request.getPage())
060      .setParam("ps", request.getPageSize())
061      .setParam("selected", request.getSelected())
062      .setParam("q", request.getQuery());
063    return call(get, WsPermissions.WsGroupsResponse.parser());
064  }
065
066  public void addGroup(AddGroupWsRequest request) {
067    call(new PostRequest(path("add_group"))
068      .setParam(PARAM_PERMISSION, request.getPermission())
069      .setParam(PARAM_PROJECT_ID, request.getProjectId())
070      .setParam(PARAM_PROJECT_KEY, request.getProjectKey())
071      .setParam(PARAM_GROUP_ID, request.getGroupId())
072      .setParam(PARAM_GROUP_NAME, request.getGroupName()));
073  }
074
075  public void addGroupToTemplate(AddGroupToTemplateWsRequest request) {
076    call(new PostRequest(path("add_group_to_template"))
077      .setParam(PARAM_GROUP_ID, request.getGroupId())
078      .setParam(PARAM_GROUP_NAME, request.getGroupName())
079      .setParam(PARAM_PERMISSION, request.getPermission())
080      .setParam(PARAM_TEMPLATE_ID, request.getTemplateId())
081      .setParam(PARAM_TEMPLATE_NAME, request.getTemplateName()));
082  }
083
084  public void addUser(AddUserWsRequest request) {
085    call(new PostRequest(path("add_user"))
086      .setParam(PARAM_USER_LOGIN, request.getLogin())
087      .setParam(PARAM_PERMISSION, request.getPermission())
088      .setParam(PARAM_PROJECT_ID, request.getProjectId())
089      .setParam(PARAM_PROJECT_KEY, request.getProjectKey()));
090  }
091
092  public void addUserToTemplate(AddUserToTemplateWsRequest request) {
093    call(new PostRequest(path("add_user_to_template"))
094      .setParam(PARAM_PERMISSION, request.getPermission())
095      .setParam(PARAM_USER_LOGIN, request.getLogin())
096      .setParam(PARAM_TEMPLATE_ID, request.getTemplateId())
097      .setParam(PARAM_TEMPLATE_NAME, request.getTemplateName()));
098  }
099
100  public void applyTemplate(ApplyTemplateWsRequest request) {
101    call(new PostRequest(path("apply_template"))
102      .setParam(PARAM_PROJECT_ID, request.getProjectId())
103      .setParam(PARAM_PROJECT_KEY, request.getProjectKey())
104      .setParam(PARAM_TEMPLATE_ID, request.getTemplateId())
105      .setParam(PARAM_TEMPLATE_NAME, request.getTemplateName()));
106  }
107
108  public void bulkApplyTemplate(BulkApplyTemplateWsRequest request) {
109    call(new PostRequest(path("bulk_apply_template"))
110      .setParam(PARAM_TEMPLATE_ID, request.getTemplateId())
111      .setParam(PARAM_TEMPLATE_NAME, request.getTemplateName())
112      .setParam("q", request.getQuery())
113      .setParam(PARAM_QUALIFIER, request.getQualifier())
114    );
115  }
116
117  public CreateTemplateWsResponse createTemplate(CreateTemplateWsRequest request) {
118    PostRequest post = new PostRequest(path("create_template"))
119      .setParam(PARAM_NAME, request.getName())
120      .setParam(PARAM_DESCRIPTION, request.getDescription())
121      .setParam(PARAM_PROJECT_KEY_PATTERN, request.getProjectKeyPattern());
122    return call(post, CreateTemplateWsResponse.parser());
123  }
124
125  public void deleteTemplate(DeleteTemplateWsRequest request) {
126    call(new PostRequest(path("delete_template"))
127      .setParam(PARAM_TEMPLATE_ID, request.getTemplateId())
128      .setParam(PARAM_TEMPLATE_NAME, request.getTemplateName()));
129  }
130
131  public void removeGroup(RemoveGroupWsRequest request) {
132    call(new PostRequest(path("remove_group"))
133      .setParam(PARAM_PERMISSION, request.getPermission())
134      .setParam(PARAM_GROUP_ID, request.getGroupId())
135      .setParam(PARAM_GROUP_NAME, request.getGroupName())
136      .setParam(PARAM_PROJECT_ID, request.getProjectId())
137      .setParam(PARAM_PROJECT_KEY, request.getProjectKey()));
138  }
139
140  public void removeGroupFromTemplate(RemoveGroupFromTemplateWsRequest request) {
141    call(new PostRequest(path("remove_group_from_template"))
142      .setParam(PARAM_PERMISSION, request.getPermission())
143      .setParam(PARAM_GROUP_ID, request.getGroupId())
144      .setParam(PARAM_GROUP_NAME, request.getGroupName())
145      .setParam(PARAM_TEMPLATE_ID, request.getTemplateId())
146      .setParam(PARAM_TEMPLATE_NAME, request.getTemplateName()));
147  }
148
149  public void removeUser(RemoveUserWsRequest request) {
150    call(new PostRequest(path("remove_user"))
151      .setParam(PARAM_PERMISSION, request.getPermission())
152      .setParam(PARAM_USER_LOGIN, request.getLogin())
153      .setParam(PARAM_PROJECT_ID, request.getProjectId())
154      .setParam(PARAM_PROJECT_KEY, request.getProjectKey()));
155  }
156
157  public void removeUserFromTemplate(RemoveUserFromTemplateWsRequest request) {
158    call(new PostRequest(path("remove_user_from_template"))
159      .setParam(PARAM_PERMISSION, request.getPermission())
160      .setParam(PARAM_USER_LOGIN, request.getLogin())
161      .setParam(PARAM_TEMPLATE_ID, request.getTemplateId())
162      .setParam(PARAM_TEMPLATE_NAME, request.getTemplateName()));
163  }
164
165  public WsSearchGlobalPermissionsResponse searchGlobalPermissions() {
166    GetRequest get = new GetRequest(path("search_global_permissions"));
167    return call(get, WsSearchGlobalPermissionsResponse.parser());
168  }
169
170  public SearchProjectPermissionsWsResponse searchProjectPermissions(SearchProjectPermissionsWsRequest request) {
171    GetRequest get = new GetRequest(path("search_project_permissions"))
172      .setParam(PARAM_PROJECT_ID, request.getProjectId())
173      .setParam(PARAM_PROJECT_KEY, request.getProjectKey())
174      .setParam(PARAM_QUALIFIER, request.getQualifier())
175      .setParam("p", request.getPage())
176      .setParam("ps", request.getPageSize())
177      .setParam("q", request.getQuery());
178    return call(get, SearchProjectPermissionsWsResponse.parser());
179  }
180
181  public SearchTemplatesWsResponse searchTemplates(SearchTemplatesWsRequest request) {
182    GetRequest get = new GetRequest(path("search_templates"))
183      .setParam("q", request.getQuery());
184    return call(get, SearchTemplatesWsResponse.parser());
185  }
186
187  public void setDefaultTemplate(SetDefaultTemplateWsRequest request) {
188    call(new PostRequest(path("set_default_template"))
189      .setParam(PARAM_QUALIFIER, request.getQualifier())
190      .setParam(PARAM_TEMPLATE_ID, request.getTemplateId())
191      .setParam(PARAM_TEMPLATE_NAME, request.getTemplateName()));
192  }
193
194  public UpdateTemplateWsResponse updateTemplate(UpdateTemplateWsRequest request) {
195    return call(new PostRequest(path("update_template"))
196      .setParam(PARAM_DESCRIPTION, request.getDescription())
197      .setParam(PARAM_ID, request.getId())
198      .setParam(PARAM_NAME, request.getName())
199      .setParam(PARAM_PROJECT_KEY_PATTERN, request.getProjectKeyPattern()), UpdateTemplateWsResponse.parser());
200  }
201
202  public UsersWsResponse users(UsersWsRequest request) {
203    return call(new GetRequest(path("users"))
204      .setParam(PARAM_PERMISSION, request.getPermission())
205      .setParam(PARAM_PROJECT_ID, request.getProjectId())
206      .setParam(PARAM_PROJECT_KEY, request.getProjectKey())
207      .setParam("selected", request.getSelected())
208      .setParam("p", request.getPage())
209      .setParam("ps", request.getPageSize())
210      .setParam("q", request.getQuery()), UsersWsResponse.parser());
211  }
212}