1 /*******************************************************************************
\r
2 * ============LICENSE_START====================================================
\r
4 * * ===========================================================================
\r
5 * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * * ===========================================================================
\r
7 * * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * * you may not use this file except in compliance with the License.
\r
9 * * You may obtain a copy of the License at
\r
11 * * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * * Unless required by applicable law or agreed to in writing, software
\r
14 * * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * * See the License for the specific language governing permissions and
\r
17 * * limitations under the License.
\r
18 * * ============LICENSE_END====================================================
\r
20 * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
\r
22 ******************************************************************************/
\r
23 package com.att.authz.service.api;
\r
25 import static com.att.authz.layer.Result.OK;
\r
26 import static com.att.cssa.rserv.HttpMethods.DELETE;
\r
27 import static com.att.cssa.rserv.HttpMethods.GET;
\r
28 import static com.att.cssa.rserv.HttpMethods.POST;
\r
29 import static com.att.cssa.rserv.HttpMethods.PUT;
\r
31 import javax.servlet.http.HttpServletRequest;
\r
32 import javax.servlet.http.HttpServletResponse;
\r
34 import com.att.aft.dme2.internal.jetty.http.HttpStatus;
\r
35 import com.att.authz.env.AuthzTrans;
\r
36 import com.att.authz.facade.AuthzFacade;
\r
37 import com.att.authz.layer.Result;
\r
38 import com.att.authz.service.AuthAPI;
\r
39 import com.att.authz.service.Code;
\r
40 import com.att.authz.service.mapper.Mapper.API;
\r
41 import com.att.dao.aaf.cass.NsType;
\r
42 import com.att.dao.aaf.cass.Status;
\r
44 public class API_NS {
\r
45 private static final String FULL = "full";
\r
46 private static final String TRUE = "true";
\r
48 public static void init(AuthAPI authzAPI, AuthzFacade facade) throws Exception {
\r
50 * puts a new Namespace in Authz DB
\r
52 * TESTCASES: TC_NS1, TC_NSdelete1
\r
54 authzAPI.route(POST,"/authz/ns",API.NS_REQ, new Code(facade,"Create a Namespace",true) {
\r
58 HttpServletRequest req,
\r
59 HttpServletResponse resp) throws Exception {
\r
60 NsType nst = NsType.fromString(req.getParameter("type"));
\r
61 Result<Void> r = context.requestNS(trans, req, resp,nst);
\r
65 resp.setStatus(HttpStatus.CREATED_201);
\r
67 case Status.ACC_Future:
\r
68 resp.setStatus(HttpStatus.ACCEPTED_202);
\r
71 context.error(trans,resp,r);
\r
78 * removes a Namespace from Authz DB
\r
80 * TESTCASES: TC_NS1, TC_NSdelete1
\r
82 authzAPI.route(DELETE,"/authz/ns/:ns",API.VOID, new Code(facade,"Delete a Namespace",true) {
\r
86 HttpServletRequest req,
\r
87 HttpServletResponse resp) throws Exception {
\r
88 Result<Void> r = context.deleteNS(trans, req, resp, pathParam(req,":ns"));
\r
91 resp.setStatus(HttpStatus.OK_200);
\r
94 context.error(trans,resp,r);
\r
101 * Add an Admin in NS in Authz DB
\r
103 * TESTCASES: TC_NS1
\r
105 authzAPI.route(POST,"/authz/ns/:ns/admin/:id",API.VOID, new Code(facade,"Add an Admin to a Namespace",true) {
\r
107 public void handle(
\r
109 HttpServletRequest req,
\r
110 HttpServletResponse resp) throws Exception {
\r
111 Result<Void> r = context.addAdminToNS(trans, resp, pathParam(req,":ns"), pathParam(req,":id"));
\r
114 resp.setStatus(HttpStatus.CREATED_201);
\r
116 case Status.ACC_Future:
\r
117 resp.setStatus(HttpStatus.ACCEPTED_202);
\r
120 context.error(trans,resp,r);
\r
127 * Removes an Admin from Namespace in Authz DB
\r
129 * TESTCASES: TC_NS1
\r
131 authzAPI.route(DELETE,"/authz/ns/:ns/admin/:id",API.VOID, new Code(facade,"Remove an Admin from a Namespace",true) {
\r
133 public void handle(
\r
135 HttpServletRequest req,
\r
136 HttpServletResponse resp) throws Exception {
\r
137 Result<Void> r = context.delAdminFromNS(trans, resp, pathParam(req,":ns"), pathParam(req,":id"));
\r
140 resp.setStatus(HttpStatus.OK_200);
\r
143 context.error(trans,resp,r);
\r
150 * Add an Admin in NS in Authz DB
\r
152 * TESTCASES: TC_NS1
\r
154 authzAPI.route(POST,"/authz/ns/:ns/responsible/:id",API.VOID, new Code(facade,"Add a Responsible Identity to a Namespace",true) {
\r
156 public void handle(
\r
158 HttpServletRequest req,
\r
159 HttpServletResponse resp) throws Exception {
\r
160 Result<Void> r = context.addResponsibilityForNS(trans, resp, pathParam(req,":ns"), pathParam(req,":id"));
\r
163 resp.setStatus(HttpStatus.CREATED_201);
\r
165 case Status.ACC_Future:
\r
166 resp.setStatus(HttpStatus.ACCEPTED_202);
\r
169 context.error(trans,resp,r);
\r
179 authzAPI.route(GET,"/authz/nss/:id",API.NSS, new Code(facade,"Return Information about Namespaces", true) {
\r
181 public void handle(
\r
183 HttpServletRequest req,
\r
184 HttpServletResponse resp) throws Exception {
\r
185 Result<Void> r = context.getNSsByName(trans, resp, pathParam(req,":id"));
\r
188 resp.setStatus(HttpStatus.OK_200);
\r
191 context.error(trans,resp,r);
\r
198 * Get all Namespaces where user is an admin
\r
200 authzAPI.route(GET,"/authz/nss/admin/:user",API.NSS, new Code(facade,"Return Namespaces where User is an Admin", true) {
\r
202 public void handle(
\r
204 HttpServletRequest req,
\r
205 HttpServletResponse resp) throws Exception {
\r
206 Result<Void> r = context.getNSsByAdmin(trans, resp, pathParam(req,":user"),TRUE.equals(req.getParameter(FULL)));
\r
209 resp.setStatus(HttpStatus.OK_200);
\r
212 context.error(trans,resp,r);
\r
219 * Get all Namespaces where user is a responsible party
\r
221 authzAPI.route(GET,"/authz/nss/responsible/:user",API.NSS, new Code(facade,"Return Namespaces where User is Responsible", true) {
\r
223 public void handle(
\r
225 HttpServletRequest req,
\r
226 HttpServletResponse resp) throws Exception {
\r
227 Result<Void> r = context.getNSsByResponsible(trans, resp, pathParam(req,":user"),TRUE.equals(req.getParameter(FULL)));
\r
230 resp.setStatus(HttpStatus.OK_200);
\r
233 context.error(trans,resp,r);
\r
240 * Get all Namespaces where user is an admin or owner
\r
242 authzAPI.route(GET,"/authz/nss/either/:user",API.NSS, new Code(facade,"Return Namespaces where User Admin or Owner", true) {
\r
244 public void handle(
\r
246 HttpServletRequest req,
\r
247 HttpServletResponse resp) throws Exception {
\r
248 Result<Void> r = context.getNSsByEither(trans, resp, pathParam(req,":user"),TRUE.equals(req.getParameter(FULL)));
\r
251 resp.setStatus(HttpStatus.OK_200);
\r
254 context.error(trans,resp,r);
\r
261 * Get all children Namespaces
\r
263 authzAPI.route(GET,"/authz/nss/children/:id",API.NSS, new Code(facade,"Return Child Namespaces", true) {
\r
265 public void handle(
\r
267 HttpServletRequest req,
\r
268 HttpServletResponse resp) throws Exception {
\r
269 Result<Void> r = context.getNSsChildren(trans, resp, pathParam(req,":id"));
\r
272 resp.setStatus(HttpStatus.OK_200);
\r
275 context.error(trans,resp,r);
\r
282 * Set a description of a Namespace
\r
284 authzAPI.route(PUT,"/authz/ns",API.NS_REQ,new Code(facade,"Set a Description for a Namespace",true) {
\r
286 public void handle(
\r
288 HttpServletRequest req,
\r
289 HttpServletResponse resp) throws Exception {
\r
291 Result<Void> r = context.updateNsDescription(trans, req, resp);
\r
294 resp.setStatus(HttpStatus.OK_200);
\r
297 context.error(trans,resp,r);
\r
303 * Removes an Owner from Namespace in Authz DB
\r
305 * TESTCASES: TC_NS1
\r
307 authzAPI.route(DELETE,"/authz/ns/:ns/responsible/:id",API.VOID, new Code(facade,"Remove a Responsible Identity from Namespace",true) {
\r
309 public void handle(
\r
311 HttpServletRequest req,
\r
312 HttpServletResponse resp) throws Exception {
\r
313 Result<Void> r = context.delResponsibilityForNS(trans, resp, pathParam(req,":ns"), pathParam(req,":id"));
\r
316 resp.setStatus(HttpStatus.OK_200);
\r
319 context.error(trans,resp,r);
\r
325 authzAPI.route(POST,"/authz/ns/:ns/attrib/:key/:value",API.VOID, new Code(facade,"Add an Attribute from a Namespace",true) {
\r
327 public void handle(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) throws Exception {
\r
328 Result<Void> r = context.createAttribForNS(trans, resp,
\r
329 pathParam(req,":ns"),
\r
330 pathParam(req,":key"),
\r
331 pathParam(req,":value"));
\r
334 resp.setStatus(HttpStatus.CREATED_201);
\r
337 context.error(trans,resp,r);
\r
343 authzAPI.route(GET,"/authz/ns/attrib/:key",API.KEYS, new Code(facade,"get Ns Key List From Attribute",true) {
\r
345 public void handle(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) throws Exception {
\r
346 Result<Void> r = context.readNsByAttrib(trans, resp, pathParam(req,":key"));
\r
349 resp.setStatus(HttpStatus.OK_200);
\r
352 context.error(trans,resp,r);
\r
358 authzAPI.route(PUT,"/authz/ns/:ns/attrib/:key/:value",API.VOID, new Code(facade,"update an Attribute from a Namespace",true) {
\r
360 public void handle(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) throws Exception {
\r
361 Result<Void> r = context.updAttribForNS(trans, resp,
\r
362 pathParam(req,":ns"),
\r
363 pathParam(req,":key"),
\r
364 pathParam(req,":value"));
\r
367 resp.setStatus(HttpStatus.OK_200);
\r
370 context.error(trans,resp,r);
\r
376 authzAPI.route(DELETE,"/authz/ns/:ns/attrib/:key",API.VOID, new Code(facade,"delete an Attribute from a Namespace",true) {
\r
378 public void handle(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) throws Exception {
\r
379 Result<Void> r = context.delAttribForNS(trans, resp,
\r
380 pathParam(req,":ns"),
\r
381 pathParam(req,":key"));
\r
384 resp.setStatus(HttpStatus.OK_200);
\r
387 context.error(trans,resp,r);
\r