use of io.gravitee.rest.api.management.rest.model.PagedResult in project gravitee-management-rest-api by gravitee-io.
the class ApisResource method searchApis.
@POST
@Path("_search/_paged")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Search for API using the search engine")
@ApiResponses({ @ApiResponse(code = 200, message = "List accessible APIs for current user", response = ApiListItem.class), @ApiResponse(code = 500, message = "Internal server error") })
public PagedResult<ApiListItem> searchApis(@ApiParam(name = "q", required = true) @NotNull @QueryParam("q") String query, @ApiParam(name = "order") @QueryParam("order") String order, @Valid @BeanParam Pageable pageable) {
final ApiQuery apiQuery = new ApiQuery();
Map<String, Object> filters = new HashMap<>();
Sortable sortable = null;
if (!StringUtils.isEmpty(order)) {
final OrderParam orderParam = new OrderParam(order);
sortable = new SortableImpl(orderParam.getValue().getField(), orderParam.getValue().isOrder());
}
io.gravitee.rest.api.model.common.Pageable commonPageable = null;
if (pageable != null) {
commonPageable = pageable.toPageable();
}
if (!isAdmin()) {
filters.put("api", apiService.findIdsByUser(getAuthenticatedUser(), apiQuery, false));
}
final boolean isRatingServiceEnabled = ratingService.isEnabled();
final Page<ApiEntity> apis = apiService.search(query, filters, sortable, commonPageable);
return new PagedResult<>(apis.getContent().stream().map(apiEntity -> this.convert(apiEntity, isRatingServiceEnabled)).collect(toList()), apis.getPageNumber(), (int) apis.getPageElements(), (int) apis.getTotalElements());
}
use of io.gravitee.rest.api.management.rest.model.PagedResult in project gravitee-management-rest-api by gravitee-io.
the class ApiSubscriptionsResource method getApiSubscriptions.
@GET
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "List subscriptions for the API", notes = "User must have the READ_SUBSCRIPTION permission to use this service")
@ApiResponses({ @ApiResponse(code = 200, message = "Paged result of API's subscriptions", response = PagedResult.class), @ApiResponse(code = 500, message = "Internal server error") })
@Permissions({ @Permission(value = RolePermission.API_SUBSCRIPTION, acls = RolePermissionAction.READ) })
public PagedResult<SubscriptionEntity> getApiSubscriptions(@BeanParam SubscriptionParam subscriptionParam, @Valid @BeanParam Pageable pageable, @ApiParam(allowableValues = "keys", value = "Expansion of data to return in subscriptions") @QueryParam("expand") List<String> expand) {
// Transform query parameters to a subscription query
SubscriptionQuery subscriptionQuery = subscriptionParam.toQuery();
subscriptionQuery.setApi(api);
Page<SubscriptionEntity> subscriptions = subscriptionService.search(subscriptionQuery, pageable.toPageable());
if (expand != null && !expand.isEmpty()) {
for (String e : expand) {
switch(e) {
case "keys":
subscriptions.getContent().forEach(subscriptionEntity -> {
final List<String> keys = apiKeyService.findBySubscription(subscriptionEntity.getId()).stream().filter(apiKeyEntity -> !apiKeyEntity.isExpired() && !apiKeyEntity.isRevoked()).map(ApiKeyEntity::getKey).collect(Collectors.toList());
subscriptionEntity.setKeys(keys);
});
break;
default:
break;
}
}
}
PagedResult<SubscriptionEntity> result = new PagedResult<>(subscriptions, pageable.getSize());
result.setMetadata(subscriptionService.getMetadata(subscriptions.getContent()).getMetadata());
return result;
}
use of io.gravitee.rest.api.management.rest.model.PagedResult in project gravitee-management-rest-api by gravitee-io.
the class ApisResource method getApis.
@GET
@Path("_paged")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "List APIs with pagination", notes = "List all the APIs accessible to the current user with pagination.", nickname = "getApisPaged")
@ApiResponses({ @ApiResponse(code = 200, message = "Page of APIs for current user", response = PagedResult.class), @ApiResponse(code = 500, message = "Internal server error") })
public PagedResult<ApiListItem> getApis(@BeanParam final ApisParam apisParam, @Valid @BeanParam Pageable pageable) {
final ApiQuery apiQuery = new ApiQuery();
if (apisParam.getGroup() != null) {
apiQuery.setGroups(singletonList(apisParam.getGroup()));
}
apiQuery.setContextPath(apisParam.getContextPath());
apiQuery.setLabel(apisParam.getLabel());
apiQuery.setVersion(apisParam.getVersion());
apiQuery.setName(apisParam.getName());
apiQuery.setTag(apisParam.getTag());
apiQuery.setState(apisParam.getState());
if (apisParam.getCategory() != null) {
apiQuery.setCategory(categoryService.findById(apisParam.getCategory()).getId());
}
Sortable sortable = null;
if (apisParam.getOrder() != null) {
sortable = new SortableImpl(apisParam.getOrder().getField(), apisParam.getOrder().isOrder());
}
io.gravitee.rest.api.model.common.Pageable commonPageable = null;
if (pageable != null) {
commonPageable = pageable.toPageable();
}
final Page<ApiEntity> apis;
if (isAdmin()) {
apis = apiService.search(apiQuery, sortable, commonPageable);
} else {
if (apisParam.isPortal() || apisParam.isTop()) {
apiQuery.setLifecycleStates(singletonList(PUBLISHED));
}
if (isAuthenticated()) {
apis = apiService.findByUser(getAuthenticatedUser(), apiQuery, sortable, commonPageable, apisParam.isPortal());
} else {
apiQuery.setVisibility(PUBLIC);
apis = apiService.search(apiQuery, sortable, commonPageable);
}
}
final boolean isRatingServiceEnabled = ratingService.isEnabled();
if (apisParam.isTop()) {
final List<String> visibleApis = apis.getContent().stream().map(ApiEntity::getId).collect(toList());
return new PagedResult<>(topApiService.findAll().stream().filter(topApi -> visibleApis.contains(topApi.getApi())).map(topApiEntity -> apiService.findById(topApiEntity.getApi())).map(apiEntity -> this.convert(apiEntity, isRatingServiceEnabled)).collect(toList()), apis.getPageNumber(), (int) apis.getPageElements(), (int) apis.getTotalElements());
}
return new PagedResult<>(apis.getContent().stream().map(apiEntity -> this.convert(apiEntity, isRatingServiceEnabled)).collect(toList()), apis.getPageNumber(), (int) apis.getPageElements(), (int) apis.getTotalElements());
}
use of io.gravitee.rest.api.management.rest.model.PagedResult in project gravitee-management-rest-api by gravitee-io.
the class ApplicationSubscriptionsResource method getApplicationSubscriptions.
@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> getApplicationSubscriptions(@BeanParam SubscriptionParam subscriptionParam, @Valid @BeanParam Pageable pageable, @ApiParam(allowableValues = "keys", value = "Expansion of data to return in subscriptions") @QueryParam("expand") List<String> expand) {
// Transform query parameters to a subscription query
SubscriptionQuery subscriptionQuery = subscriptionParam.toQuery();
subscriptionQuery.setApplication(application);
Page<SubscriptionEntity> subscriptions = subscriptionService.search(subscriptionQuery, pageable.toPageable());
if (expand != null && !expand.isEmpty()) {
for (String e : expand) {
switch(e) {
case "keys":
subscriptions.getContent().forEach(subscriptionEntity -> {
final List<String> keys = apiKeyService.findBySubscription(subscriptionEntity.getId()).stream().filter(apiKeyEntity -> !apiKeyEntity.isExpired() && !apiKeyEntity.isRevoked()).map(ApiKeyEntity::getKey).collect(Collectors.toList());
subscriptionEntity.setKeys(keys);
});
break;
default:
break;
}
}
}
PagedResult<SubscriptionEntity> result = new PagedResult<>(subscriptions, pageable.getSize());
result.setMetadata(subscriptionService.getMetadata(subscriptions.getContent()).getMetadata());
return result;
}
Aggregations