Search in sources :

Example 1 with PageMapper

use of io.gravitee.rest.api.portal.rest.mapper.PageMapper in project gravitee-management-rest-api by gravitee-io.

the class ApiResource method getApiByApiId.

@GET
@Produces({ MediaType.APPLICATION_JSON })
@RequirePortalAuth
public Response getApiByApiId(@PathParam("apiId") String apiId, @QueryParam("include") List<String> include) {
    String username = getAuthenticatedUserOrNull();
    if (accessControlService.canAccessApiFromPortal(apiId)) {
        ApiEntity apiEntity = apiService.findById(apiId);
        Api api = apiMapper.convert(apiEntity);
        if (include.contains(INCLUDE_PAGES)) {
            List<Page> pages = pageService.search(new PageQuery.Builder().api(apiId).published(true).build(), GraviteeContext.getCurrentEnvironment()).stream().filter(page -> accessControlService.canAccessPageFromPortal(page)).map(pageMapper::convert).collect(Collectors.toList());
            api.setPages(pages);
        }
        if (include.contains(INCLUDE_PLANS)) {
            List<Plan> plans = planService.findByApi(apiId).stream().filter(plan -> PlanStatus.PUBLISHED.equals(plan.getStatus())).filter(plan -> groupService.isUserAuthorizedToAccessApiData(apiEntity, plan.getExcludedGroups(), username)).sorted(Comparator.comparingInt(PlanEntity::getOrder)).map(p -> planMapper.convert(p)).collect(Collectors.toList());
            api.setPlans(plans);
        }
        api.links(apiMapper.computeApiLinks(PortalApiLinkHelper.apisURL(uriInfo.getBaseUriBuilder(), api.getId()), apiEntity.getUpdatedAt()));
        if (!parameterService.findAsBoolean(Key.PORTAL_APIS_SHOW_TAGS_IN_APIHEADER, ParameterReferenceType.ENVIRONMENT)) {
            api.setLabels(new ArrayList<>());
        }
        if (!parameterService.findAsBoolean(Key.PORTAL_APIS_SHOW_CATEGORIES_IN_APIHEADER, ParameterReferenceType.ENVIRONMENT)) {
            api.setCategories(new ArrayList<>());
        }
        return Response.ok(api).build();
    }
    throw new ApiNotFoundException(apiId);
}
Also used : PlanMapper(io.gravitee.rest.api.portal.rest.mapper.PlanMapper) io.gravitee.rest.api.service(io.gravitee.rest.api.service) java.util(java.util) ApiMapper(io.gravitee.rest.api.portal.rest.mapper.ApiMapper) GraviteeContext(io.gravitee.rest.api.service.common.GraviteeContext) RequirePortalAuth(io.gravitee.rest.api.portal.rest.security.RequirePortalAuth) Inject(javax.inject.Inject) PageQuery(io.gravitee.rest.api.model.documentation.PageQuery) io.gravitee.rest.api.model(io.gravitee.rest.api.model) ApiQuery(io.gravitee.rest.api.model.api.ApiQuery) ApiEntity(io.gravitee.rest.api.model.api.ApiEntity) Context(javax.ws.rs.core.Context) ParameterReferenceType(io.gravitee.rest.api.model.parameters.ParameterReferenceType) ResourceTypeEnum(io.gravitee.rest.api.portal.rest.model.Link.ResourceTypeEnum) io.gravitee.rest.api.portal.rest.model(io.gravitee.rest.api.portal.rest.model) ApiNotFoundException(io.gravitee.rest.api.service.exceptions.ApiNotFoundException) HttpHeadersUtil(io.gravitee.rest.api.portal.rest.utils.HttpHeadersUtil) Collectors(java.util.stream.Collectors) Key(io.gravitee.rest.api.model.parameters.Key) MediaType(io.gravitee.common.http.MediaType) PortalApiLinkHelper(io.gravitee.rest.api.portal.rest.utils.PortalApiLinkHelper) javax.ws.rs(javax.ws.rs) Response(javax.ws.rs.core.Response) ResourceContext(javax.ws.rs.container.ResourceContext) Request(javax.ws.rs.core.Request) PageMapper(io.gravitee.rest.api.portal.rest.mapper.PageMapper) ApiNotFoundException(io.gravitee.rest.api.service.exceptions.ApiNotFoundException) ApiEntity(io.gravitee.rest.api.model.api.ApiEntity) RequirePortalAuth(io.gravitee.rest.api.portal.rest.security.RequirePortalAuth)

Example 2 with PageMapper

use of io.gravitee.rest.api.portal.rest.mapper.PageMapper in project gravitee-management-rest-api by gravitee-io.

the class ApiPagesResource method getPagesByApiId.

@GET
@Produces(MediaType.APPLICATION_JSON)
@RequirePortalAuth
public Response getPagesByApiId(@HeaderParam("Accept-Language") String acceptLang, @PathParam("apiId") String apiId, @BeanParam PaginationParam paginationParam, @QueryParam("homepage") Boolean homepage, @QueryParam("parent") String parent) {
    final ApiQuery apiQuery = new ApiQuery();
    apiQuery.setIds(Collections.singletonList(apiId));
    if (accessControlService.canAccessApiFromPortal(apiId)) {
        final String acceptedLocale = HttpHeadersUtil.getFirstAcceptedLocaleName(acceptLang);
        Stream<Page> pageStream = pageService.search(new PageQuery.Builder().api(apiId).homepage(homepage).published(true).build(), acceptedLocale, GraviteeContext.getCurrentEnvironment()).stream().filter(page -> accessControlService.canAccessPageFromPortal(apiId, page)).map(pageMapper::convert).map(page -> this.addPageLink(apiId, page));
        List<Page> pages;
        if (parent != null) {
            pages = new ArrayList<>();
            Map<String, Page> pagesMap = pageStream.collect(Collectors.toMap(Page::getId, page -> page));
            pagesMap.values().forEach(page -> {
                List<String> ancestors = this.getAncestors(pagesMap, page);
                if (ancestors.contains(parent)) {
                    pages.add(page);
                }
            });
        } else {
            pages = pageStream.collect(Collectors.toList());
        }
        return createListResponse(pages, paginationParam);
    }
    throw new ApiNotFoundException(apiId);
}
Also used : ApiQuery(io.gravitee.rest.api.model.api.ApiQuery) Context(javax.ws.rs.core.Context) ApiNotFoundException(io.gravitee.rest.api.service.exceptions.ApiNotFoundException) HttpHeadersUtil(io.gravitee.rest.api.portal.rest.utils.HttpHeadersUtil) GraviteeContext(io.gravitee.rest.api.service.common.GraviteeContext) Page(io.gravitee.rest.api.portal.rest.model.Page) RequirePortalAuth(io.gravitee.rest.api.portal.rest.security.RequirePortalAuth) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) Inject(javax.inject.Inject) AccessControlService(io.gravitee.rest.api.service.AccessControlService) List(java.util.List) MediaType(io.gravitee.common.http.MediaType) Stream(java.util.stream.Stream) PortalApiLinkHelper(io.gravitee.rest.api.portal.rest.utils.PortalApiLinkHelper) javax.ws.rs(javax.ws.rs) Response(javax.ws.rs.core.Response) ResourceContext(javax.ws.rs.container.ResourceContext) PaginationParam(io.gravitee.rest.api.portal.rest.resource.param.PaginationParam) Map(java.util.Map) PageQuery(io.gravitee.rest.api.model.documentation.PageQuery) PageService(io.gravitee.rest.api.service.PageService) Collections(java.util.Collections) PageMapper(io.gravitee.rest.api.portal.rest.mapper.PageMapper) ApiQuery(io.gravitee.rest.api.model.api.ApiQuery) PageQuery(io.gravitee.rest.api.model.documentation.PageQuery) ApiNotFoundException(io.gravitee.rest.api.service.exceptions.ApiNotFoundException) Page(io.gravitee.rest.api.portal.rest.model.Page) RequirePortalAuth(io.gravitee.rest.api.portal.rest.security.RequirePortalAuth)

Aggregations

MediaType (io.gravitee.common.http.MediaType)2 ApiQuery (io.gravitee.rest.api.model.api.ApiQuery)2 PageQuery (io.gravitee.rest.api.model.documentation.PageQuery)2 PageMapper (io.gravitee.rest.api.portal.rest.mapper.PageMapper)2 RequirePortalAuth (io.gravitee.rest.api.portal.rest.security.RequirePortalAuth)2 HttpHeadersUtil (io.gravitee.rest.api.portal.rest.utils.HttpHeadersUtil)2 PortalApiLinkHelper (io.gravitee.rest.api.portal.rest.utils.PortalApiLinkHelper)2 GraviteeContext (io.gravitee.rest.api.service.common.GraviteeContext)2 ApiNotFoundException (io.gravitee.rest.api.service.exceptions.ApiNotFoundException)2 Collectors (java.util.stream.Collectors)2 Inject (javax.inject.Inject)2 javax.ws.rs (javax.ws.rs)2 ResourceContext (javax.ws.rs.container.ResourceContext)2 Context (javax.ws.rs.core.Context)2 Response (javax.ws.rs.core.Response)2 io.gravitee.rest.api.model (io.gravitee.rest.api.model)1 ApiEntity (io.gravitee.rest.api.model.api.ApiEntity)1 Key (io.gravitee.rest.api.model.parameters.Key)1 ParameterReferenceType (io.gravitee.rest.api.model.parameters.ParameterReferenceType)1 ApiMapper (io.gravitee.rest.api.portal.rest.mapper.ApiMapper)1