UploadToRedmine.java

  1. package org.jbehave.core.io.rest.redmine;

  2. import static java.text.MessageFormat.format;

  3. import com.google.gson.Gson;

  4. import org.jbehave.core.io.rest.RESTClient.Type;
  5. import org.jbehave.core.io.rest.Resource;
  6. import org.jbehave.core.io.rest.UploadToREST;

  7. /**
  8.  * Uploads resource to Redmine wiki pages using the REST API
  9.  */
  10. public class UploadToRedmine extends UploadToREST {

  11.     private static final String REDMINE_URI = "{0}.{1}";

  12.     public UploadToRedmine(Type type) {
  13.         this(type, null, null);
  14.     }

  15.     public UploadToRedmine(Type type, String username, String password) {
  16.         super(type, username, password);
  17.     }

  18.     @Override
  19.     protected String uri(String resourcePath, Type type) {
  20.         return format(REDMINE_URI, resourcePath, type.name().toLowerCase());
  21.     }

  22.     @Override
  23.     protected String entity(Resource resource, Type type) {
  24.         Page page = new Page();
  25.         page.title = resource.getName();
  26.         page.text = resource.getContent();
  27.         Entity entity = new Entity();
  28.         entity.wiki_page = page;
  29.         switch (type) {
  30.             case JSON:
  31.                 Gson gson = new Gson();
  32.                 return gson.toJson(entity);
  33.             case XML:
  34.             default:
  35.                 return resource.getContent();
  36.         }
  37.     }

  38.     @SuppressWarnings("checkstyle:MemberName")
  39.     private static class Entity {
  40.         private Page wiki_page;
  41.     }

  42.     private static class Page {
  43.         private String title;
  44.         private String text;
  45.     }

  46. }