@Post("application/x-www-form-urlencoded|multipart/form-data")
  public Representation postWebFormMedia(Representation entity) {
    setServerHeader();

    Request request = getRequest();
    //		The HTTP API sets the headers
    //		addCORSHeaders(request);

    String auth = getQueryValue(Constants.AUTH_QUERY);

    String userId = null;
    String token = null;

    try {
      userId = getUserId(request, auth);
      token = getTransactionId(request, auth);
    } catch (Throwable t) {
      setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
      return new StringRepresentation(t.getLocalizedMessage(), MediaType.APPLICATION_JSON);
    }

    Representation checkRequest =
        checkRequest(userId, token, request.getResourceRef().getIdentifier());
    if (checkRequest != null) {
      return checkRequest;
    }

    MediaDAO mediaDAO = DAOFactory.getInstance().getDAO();

    String entityId = (String) request.getAttributes().get(Constants.ENTITY_ARG);

    String result = "";
    try {
      if (MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(), true)) {
        result = mediaDAO.insertFormDataMedia(userId, entityId, getRequest(), false);
      } else {
        result = mediaDAO.insertWebFormMedia(userId, entityId, new Form(entity), false);
      }

      setStatus(Status.SUCCESS_CREATED);
    } catch (FileUploadException e) {
      setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
    } catch (UserNotAllowedException e) {
      setStatus(Status.CLIENT_ERROR_FORBIDDEN);
    } catch (Throwable t) {
      return unexpectedError(t);
    }

    return new StringRepresentation(result, MediaType.APPLICATION_JSON);
  }
  /** Gets media's information list (GET /<channel>) */
  @Get
  public Representation getMediasInfo() {
    setServerHeader();
    //		The HTTP API sets the headers
    //		addCORSHeaders();

    Request request = getRequest();

    String userId = null;
    String token = null;

    String entityId = (String) request.getAttributes().get(Constants.ENTITY_ARG);

    boolean isChannelPublic = XMPPToolBox.getInstance().getPubSubClient().isChannelPublic(entityId);

    if (!isChannelPublic) {
      String auth = getQueryValue(Constants.AUTH_QUERY);

      try {
        userId = getUserId(request, auth);
        token = getTransactionId(request, auth);
      } catch (Throwable t) {
        setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
        return new StringRepresentation(
            "Error while getting auth params", MediaType.APPLICATION_JSON);
      }

      Representation verifyRequest =
          checkRequest(userId, token, request.getResourceRef().getIdentifier());
      if (verifyRequest != null) {
        return verifyRequest;
      }
    }

    Integer max = null;
    String after = null;

    try {
      String queryValue = getQueryValue(Constants.MAX_QUERY);
      if (queryValue != null) {
        max = Integer.valueOf(queryValue);
      }

      after = getQueryValue(Constants.AFTER_QUERY);
    } catch (Throwable t) {
      setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
      return new StringRepresentation("Invalid query value!", MediaType.APPLICATION_JSON);
    }

    MediaDAO mediaDAO = DAOFactory.getInstance().getDAO();

    try {
      return new StringRepresentation(
          mediaDAO.getMediasInfo(userId, entityId, max, after), MediaType.APPLICATION_JSON);
    } catch (MetadataSourceException e) {
      setStatus(Status.SERVER_ERROR_INTERNAL);
    } catch (UserNotAllowedException e) {
      setStatus(Status.CLIENT_ERROR_FORBIDDEN);
    } catch (Throwable t) {
      return unexpectedError(t);
    }

    return new EmptyRepresentation();
  }