package org.jbehave.core.io.rest; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; import static java.text.MessageFormat.format; /** * Provides access to REST resources */ public class RESTClient { public enum Type { JSON, XML }; private static final String APPLICATION_TYPE = "application/{0}"; private String username; private String password; private Type type; public RESTClient(Type type) { this(type, null, null); } public RESTClient(Type type, String username, String password) { this.type = type; this.username = username; this.password = password; } public Type getType() { return type; } public String get(String uri) { return client().resource(uri).accept(format(APPLICATION_TYPE, type.name().toLowerCase())) .get(ClientResponse.class).getEntity(String.class); } public void put(String uri, String entity) { client().resource(uri).type(format(APPLICATION_TYPE, type.name().toLowerCase())) .put(ClientResponse.class, entity); } private Client client() { Client client = Client.create(); if (username != null) { client.addFilter(new HTTPBasicAuthFilter(username, password)); } return client; } }