Search in sources :

Example 6 with Api

use of io.gravitee.rest.api.portal.rest.model.Api in project gravitee-management-rest-api by gravitee-io.

the class ApplicationSubscribersResource method getSubscriberApisByApplicationId.

@GET
@Produces({ MediaType.APPLICATION_JSON })
public Response getSubscriberApisByApplicationId(@BeanParam PaginationParam paginationParam, @PathParam("applicationId") String applicationId, @QueryParam("statuses") List<SubscriptionStatus> statuses) {
    String currentUser = getAuthenticatedUserOrNull();
    Collection<ApplicationListItem> userApplications = applicationService.findByUser(currentUser);
    Optional<ApplicationListItem> optionalApplication = userApplications.stream().filter(a -> a.getId().equals(applicationId)).findFirst();
    if (optionalApplication.isPresent()) {
        SubscriptionQuery subscriptionQuery = new SubscriptionQuery();
        subscriptionQuery.setApplication(applicationId);
        subscriptionQuery.setStatuses(statuses);
        ApplicationListItem application = optionalApplication.get();
        if (!application.getPrimaryOwner().getId().equals(currentUser)) {
            Set<ApiEntity> userApis = this.apiService.findPublishedByUser(currentUser);
            if (userApis == null || userApis.isEmpty()) {
                return createListResponse(Collections.emptyList(), paginationParam);
            }
            subscriptionQuery.setApis(userApis.stream().map(ApiEntity::getId).collect(Collectors.toList()));
        }
        Map<String, Long> nbHitsByApp = getNbHitsByApplication(applicationId);
        Collection<SubscriptionEntity> subscriptions = subscriptionService.search(subscriptionQuery);
        List<Api> subscribersApis = subscriptions.stream().map(SubscriptionEntity::getApi).distinct().map(api -> apiService.findById(api)).map(apiMapper::convert).sorted((o1, o2) -> compareApp(nbHitsByApp, o1, o2)).collect(Collectors.toList());
        return createListResponse(subscribersApis, paginationParam);
    }
    throw new ApplicationNotFoundException(applicationId);
}
Also used : ApplicationListItem(io.gravitee.rest.api.model.application.ApplicationListItem) ApiEntity(io.gravitee.rest.api.model.api.ApiEntity) java.util(java.util) ApiMapper(io.gravitee.rest.api.portal.rest.mapper.ApiMapper) Api(io.gravitee.rest.api.portal.rest.model.Api) SubscriptionStatus(io.gravitee.rest.api.model.SubscriptionStatus) SubscriptionEntity(io.gravitee.rest.api.model.SubscriptionEntity) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) GroupByQuery(io.gravitee.rest.api.model.analytics.query.GroupByQuery) Inject(javax.inject.Inject) SubscriptionService(io.gravitee.rest.api.service.SubscriptionService) MediaType(io.gravitee.common.http.MediaType) ChronoUnit(java.time.temporal.ChronoUnit) javax.ws.rs(javax.ws.rs) Response(javax.ws.rs.core.Response) PaginationParam(io.gravitee.rest.api.portal.rest.resource.param.PaginationParam) ApplicationService(io.gravitee.rest.api.service.ApplicationService) TopHitsAnalytics(io.gravitee.rest.api.model.analytics.TopHitsAnalytics) AnalyticsService(io.gravitee.rest.api.service.AnalyticsService) SubscriptionQuery(io.gravitee.rest.api.model.subscription.SubscriptionQuery) ApplicationNotFoundException(io.gravitee.rest.api.service.exceptions.ApplicationNotFoundException) ApiEntity(io.gravitee.rest.api.model.api.ApiEntity) SubscriptionEntity(io.gravitee.rest.api.model.SubscriptionEntity) SubscriptionQuery(io.gravitee.rest.api.model.subscription.SubscriptionQuery) ApplicationListItem(io.gravitee.rest.api.model.application.ApplicationListItem) ApplicationNotFoundException(io.gravitee.rest.api.service.exceptions.ApplicationNotFoundException) Api(io.gravitee.rest.api.portal.rest.model.Api)

Example 7 with Api

use of io.gravitee.rest.api.portal.rest.model.Api in project gravitee-management-rest-api by gravitee-io.

the class ApiResourceNotAuthenticatedTest method callResourceAndCheckResult.

private void callResourceAndCheckResult(Integer expectedTotalPage, Integer expectedTotalPlan) {
    final Response response = target(API).queryParam("include", "pages", "plans").request().get();
    assertEquals(OK_200, response.getStatus());
    Api responseApi = response.readEntity(Api.class);
    assertNotNull(responseApi);
    List<Page> pages = responseApi.getPages();
    assertNotNull(pages);
    assertEquals(expectedTotalPage.intValue(), pages.size());
    List<Plan> plans = responseApi.getPlans();
    assertNotNull(plans);
    assertEquals(expectedTotalPlan.intValue(), plans.size());
}
Also used : Response(javax.ws.rs.core.Response) Page(io.gravitee.rest.api.portal.rest.model.Page) Api(io.gravitee.rest.api.portal.rest.model.Api) Plan(io.gravitee.rest.api.portal.rest.model.Plan)

Aggregations

Api (io.gravitee.rest.api.portal.rest.model.Api)7 ApiEntity (io.gravitee.rest.api.model.api.ApiEntity)5 RatingSummary (io.gravitee.rest.api.portal.rest.model.RatingSummary)3 Proxy (io.gravitee.definition.model.Proxy)2 VirtualHost (io.gravitee.definition.model.VirtualHost)2 PrimaryOwnerEntity (io.gravitee.rest.api.model.PrimaryOwnerEntity)2 RatingSummaryEntity (io.gravitee.rest.api.model.RatingSummaryEntity)2 ApiEntrypointEntity (io.gravitee.rest.api.model.api.ApiEntrypointEntity)2 Page (io.gravitee.rest.api.portal.rest.model.Page)2 Plan (io.gravitee.rest.api.portal.rest.model.Plan)2 User (io.gravitee.rest.api.portal.rest.model.User)2 Instant (java.time.Instant)2 Response (javax.ws.rs.core.Response)2 Before (org.junit.Before)2 Test (org.junit.Test)2 MediaType (io.gravitee.common.http.MediaType)1 PageEntity (io.gravitee.rest.api.model.PageEntity)1 PlanEntity (io.gravitee.rest.api.model.PlanEntity)1 SubscriptionEntity (io.gravitee.rest.api.model.SubscriptionEntity)1 SubscriptionStatus (io.gravitee.rest.api.model.SubscriptionStatus)1