package com.qiniu.pili;
import okhttp3.*;
import java.net.URL;
final class RPC {
private Mac mac;
private OkHttpClient okHttpClient;
public RPC(Mac mac) {
this.mac = mac;
this.okHttpClient = new OkHttpClient();
}
public Mac getMac() {
return mac;
}
public OkHttpClient getOkHttpClient() {
return okHttpClient;
}
public String callWithJson(String urlStr, String json) throws Exception {
String contentType = "application/json";
URL url = new URL(urlStr);
byte[] body = json.getBytes("UTF-8");
String macToken = mac.signRequest(url, "POST", body, contentType);
RequestBody rBody = RequestBody.create(MediaType.parse(contentType), body);
Request request = new Request.Builder()
.url(url)
.post(rBody)
.header("User-Agent", Config.APIUserAgent)
.addHeader("Authorization", "Qiniu " + macToken)
.addHeader("Content-Type", contentType)
.build();
Response response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
return response.body().string();
} else {
throw new PiliException(response);
}
}
public String callWithGet(String urlStr) throws Exception {
URL url = new URL(urlStr);
String macToken = mac.signRequest(url, "GET", null, null);
Request request = new Request.Builder()
.url(url)
.get()
.header("User-Agent", Config.APIUserAgent)
.addHeader("Authorization", "Qiniu " + macToken)
.build();
Response response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
return response.body().string();
} else {
throw new PiliException(response);
}
}
public String callWithDelete(String urlStr) throws Exception{
URL url = new URL(urlStr);
String macToken = mac.signRequest(url, "DELETE", null,null);
Request request = new Request.Builder()
.url(url)
.delete()
.header("User-Agent", Config.APIUserAgent)
.addHeader("Authorization", "Qiniu " + macToken)
.build();
Response response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
return response.body().string();
} else {
throw new PiliException(response);
}
}
}