package samples;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.logging.HttpLoggingInterceptor;
import org.junit.Test;
import retrofit2.Call;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
import java.io.IOException;
import java.util.Base64;
public class HelloWorldTest {
private final String baseUrl = "https://example.org:8090/";
private final String credentials = "user:password";
@Test
public void fetchFromServer() throws Exception {
Call<ObjectNode> demo = client().getPage("DEMO", "First Page", "body.storage");
Response<ObjectNode> response = demo.execute();
System.out.println(response.code());
System.out.println(new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response.body()));
}
@Test
public void createNewPage() throws Exception {
Call<Void> call = client().createPage(new CreatePageTO.Builder()
.space("DEMO")
.title("Automation for the win")
.content("<p>I like the storage format.</p>").build());
Response response = call.execute();
System.out.println(response.code());
}
private ConfluenceClient client() {
final String basic = "Basic " + Base64.getEncoder().encodeToString(credentials.getBytes());
OkHttpClient.Builder client = new OkHttpClient.Builder();
client.addInterceptor(new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.header("Authorization", basic)
.header("Accept", "application/json")
.method(original.method(), original.body());
Request request = requestBuilder.build();
return chain.proceed(request);
}
});
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client.addInterceptor(loggingInterceptor);
Retrofit confluence = new Retrofit.Builder()
.client(client.build())
.baseUrl(baseUrl)
.addConverterFactory(JacksonConverterFactory.create())
.build();
return confluence.create(ConfluenceClient.class);
}
}