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}