@GET @Timed @ApiOperation(value = "Get a list of all stream rules") @Produces(MediaType.APPLICATION_JSON) public String get( @ApiParam( title = "streamid", description = "The id of the stream whose stream rules we want.", required = true) @PathParam("streamid") String streamid) { List<Map<String, Object>> streamRules = Lists.newArrayList(); checkPermission(RestPermissions.STREAMS_READ, streamid); final Stream stream; try { stream = streamService.load(streamid); } catch (NotFoundException e) { throw new WebApplicationException(404); } try { for (StreamRule streamRule : streamRuleService.loadForStream(stream)) { streamRules.add(streamRule.asMap()); } } catch (org.graylog2.database.NotFoundException e) { throw new WebApplicationException(404); } Map<String, Object> result = Maps.newHashMap(); result.put("total", streamRules.size()); result.put("stream_rules", streamRules); return json(result); }
@POST @Timed @ApiOperation(value = "Create a stream rule") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response create( @ApiParam( title = "streamid", description = "The stream id this new rule belongs to.", required = true) @PathParam("streamid") String streamid, @ApiParam(title = "JSON body", required = true) String body) { CreateRequest cr; checkPermission(RestPermissions.STREAMS_EDIT, streamid); try { cr = objectMapper.readValue(body, CreateRequest.class); } catch (IOException e) { LOG.error("Error while parsing JSON", e); throw new WebApplicationException(e, Response.Status.BAD_REQUEST); } try { streamService.load(streamid); } catch (NotFoundException e) { throw new WebApplicationException(404); } Map<String, Object> streamRuleData = Maps.newHashMap(); streamRuleData.put("type", cr.type); streamRuleData.put("value", cr.value); streamRuleData.put("field", cr.field); streamRuleData.put("inverted", cr.inverted); streamRuleData.put("stream_id", new ObjectId(streamid)); final StreamRule streamRule = new StreamRuleImpl(streamRuleData); String id; try { id = streamService.save(streamRule); } catch (ValidationException e) { LOG.error("Validation error.", e); throw new WebApplicationException(e, Response.Status.BAD_REQUEST); } Map<String, Object> result = Maps.newHashMap(); result.put("streamrule_id", id); return Response.status(Response.Status.CREATED).entity(json(result)).build(); }