Search in sources :

Example 6 with SubscriptionQuery

use of io.gravitee.management.model.subscription.SubscriptionQuery in project gravitee-management-rest-api by gravitee-io.

the class ScheduledSubscriptionsService method run.

@Override
public void run() {
    logger.debug("Refresh subscriptions #{} started at {}", counter.incrementAndGet(), Instant.now().toString());
    Date now = new Date();
    Set<ApiEntity> apis = apiService.findAll();
    for (ApiEntity api : apis) {
        // TODO: this service must be optimized by providing a better way to search for subscription
        // Something like the Event Repository API
        SubscriptionQuery query = new SubscriptionQuery();
        query.setApi(api.getId());
        query.setStatuses(Collections.singleton(SubscriptionStatus.ACCEPTED));
        Collection<SubscriptionEntity> subscriptions = subscriptionService.search(query);
        subscriptions.forEach(subscription -> {
            if (subscription.getEndingAt() != null && subscription.getEndingAt().before(now)) {
                subscriptionService.close(subscription.getId());
            }
        });
    }
    logger.debug("Refresh subscriptions #{} ended at {}", counter.get(), Instant.now().toString());
}
Also used : ApiEntity(io.gravitee.management.model.ApiEntity) SubscriptionEntity(io.gravitee.management.model.SubscriptionEntity) SubscriptionQuery(io.gravitee.management.model.subscription.SubscriptionQuery) Date(java.util.Date)

Example 7 with SubscriptionQuery

use of io.gravitee.management.model.subscription.SubscriptionQuery in project gravitee-management-rest-api by gravitee-io.

the class ApplicationSubscriptionsResource method listApplicationSubscriptions.

@GET
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "List subscriptions for the application", notes = "User must have the READ_SUBSCRIPTION permission to use this service")
@ApiResponses({ @ApiResponse(code = 200, message = "Paged result of application's subscriptions", response = PagedResult.class), @ApiResponse(code = 500, message = "Internal server error") })
@Permissions({ @Permission(value = RolePermission.APPLICATION_SUBSCRIPTION, acls = RolePermissionAction.READ) })
public PagedResult<SubscriptionEntity> listApplicationSubscriptions(@BeanParam SubscriptionParam subscriptionParam, @Valid @BeanParam Pageable pageable) {
    // Transform query parameters to a subscription query
    SubscriptionQuery subscriptionQuery = subscriptionParam.toQuery();
    Page<SubscriptionEntity> subscriptions = subscriptionService.search(subscriptionQuery, pageable.toPageable());
    PagedResult<SubscriptionEntity> result = new PagedResult<>(subscriptions, pageable.getSize());
    result.setMetadata(subscriptionService.getMetadata(subscriptions.getContent()).getMetadata());
    return result;
}
Also used : SubscriptionQuery(io.gravitee.management.model.subscription.SubscriptionQuery) PagedResult(io.gravitee.management.rest.model.PagedResult) Permissions(io.gravitee.management.rest.security.Permissions)

Example 8 with SubscriptionQuery

use of io.gravitee.management.model.subscription.SubscriptionQuery in project gravitee-management-rest-api by gravitee-io.

the class ApiSubscribersResource method listApiSubscribers.

@GET
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "List subscribers for the API", notes = "User must have the MANAGE_SUBSCRIPTIONS permission to use this service")
@ApiResponses({ @ApiResponse(code = 200, message = "Paged result of API subscribers", response = ApplicationEntity.class, responseContainer = "List"), @ApiResponse(code = 500, message = "Internal server error") })
@Permissions({ @Permission(value = RolePermission.API_SUBSCRIPTION, acls = RolePermissionAction.READ) })
public Collection<ApplicationEntity> listApiSubscribers(@PathParam("api") String api) {
    SubscriptionQuery subscriptionQuery = new SubscriptionQuery();
    subscriptionQuery.setApi(api);
    Collection<SubscriptionEntity> subscriptions = subscriptionService.search(subscriptionQuery);
    return subscriptions.stream().map(SubscriptionEntity::getApplication).distinct().map(application -> applicationService.findById(application)).sorted((o1, o2) -> String.CASE_INSENSITIVE_ORDER.compare(o1.getName(), o2.getName())).collect(Collectors.toList());
}
Also used : SubscriptionQuery(io.gravitee.management.model.subscription.SubscriptionQuery) Permission(io.gravitee.management.rest.security.Permission) PathParam(javax.ws.rs.PathParam) Context(javax.ws.rs.core.Context) SubscriptionService(io.gravitee.management.service.SubscriptionService) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) Collection(java.util.Collection) RolePermission(io.gravitee.management.model.permissions.RolePermission) RolePermissionAction(io.gravitee.management.model.permissions.RolePermissionAction) ApplicationEntity(io.gravitee.management.model.ApplicationEntity) Permissions(io.gravitee.management.rest.security.Permissions) ApiResponses(io.swagger.annotations.ApiResponses) Function(java.util.function.Function) Collectors(java.util.stream.Collectors) ApplicationService(io.gravitee.management.service.ApplicationService) Inject(javax.inject.Inject) ApiOperation(io.swagger.annotations.ApiOperation) MediaType(io.gravitee.common.http.MediaType) ApiResponse(io.swagger.annotations.ApiResponse) ResourceContext(javax.ws.rs.container.ResourceContext) SubscriptionEntity(io.gravitee.management.model.SubscriptionEntity) Api(io.swagger.annotations.Api) SubscriptionEntity(io.gravitee.management.model.SubscriptionEntity) SubscriptionQuery(io.gravitee.management.model.subscription.SubscriptionQuery) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) ApiOperation(io.swagger.annotations.ApiOperation) Permissions(io.gravitee.management.rest.security.Permissions) ApiResponses(io.swagger.annotations.ApiResponses)

Example 9 with SubscriptionQuery

use of io.gravitee.management.model.subscription.SubscriptionQuery in project gravitee-management-rest-api by gravitee-io.

the class SubscriptionServiceImpl method findByApplicationAndPlan.

@Override
public Collection<SubscriptionEntity> findByApplicationAndPlan(String application, String plan) {
    logger.debug("Find subscriptions by application {} and plan {}", application, plan);
    SubscriptionQuery query = new SubscriptionQuery();
    if (plan != null) {
        query.setPlan(plan);
    }
    if (application != null && !application.trim().isEmpty()) {
        query.setApplication(application);
    } else if (isAuthenticated()) {
        Set<ApplicationEntity> applications = applicationService.findByUser(getAuthenticatedUsername());
        query.setApplications(applications.stream().map(ApplicationEntity::getId).collect(Collectors.toList()));
    }
    return search(query);
}
Also used : SubscriptionQuery(io.gravitee.management.model.subscription.SubscriptionQuery)

Aggregations

SubscriptionQuery (io.gravitee.management.model.subscription.SubscriptionQuery)9 SubscriptionEntity (io.gravitee.management.model.SubscriptionEntity)3 Permissions (io.gravitee.management.rest.security.Permissions)3 ApiEntity (io.gravitee.management.model.ApiEntity)2 PagedResult (io.gravitee.management.rest.model.PagedResult)2 Date (java.util.Date)2 Collectors (java.util.stream.Collectors)2 MediaType (io.gravitee.common.http.MediaType)1 UUID (io.gravitee.common.utils.UUID)1 io.gravitee.management.model (io.gravitee.management.model)1 ApplicationEntity (io.gravitee.management.model.ApplicationEntity)1 GenericNotificationConfigEntity (io.gravitee.management.model.notification.GenericNotificationConfigEntity)1 RolePermission (io.gravitee.management.model.permissions.RolePermission)1 RolePermissionAction (io.gravitee.management.model.permissions.RolePermissionAction)1 SystemRole (io.gravitee.management.model.permissions.SystemRole)1 Permission (io.gravitee.management.rest.security.Permission)1 io.gravitee.management.service (io.gravitee.management.service)1 ApplicationService (io.gravitee.management.service.ApplicationService)1 SubscriptionService (io.gravitee.management.service.SubscriptionService)1 ApplicationNotFoundException (io.gravitee.management.service.exceptions.ApplicationNotFoundException)1