use of okhttp3.logging.HttpLoggingInterceptor.Level in project harvest-client by 3AP-AG.
the class HttpLoggingInterceptor method intercept.
@Override
public Response intercept(Chain chain) throws IOException {
Level level = this.level;
Request request = chain.request();
if (level == Level.NONE) {
return chain.proceed(request);
}
boolean logBody = level == Level.BODY;
boolean logHeaders = logBody || level == Level.HEADERS;
RequestBody requestBody = request.body();
boolean hasRequestBody = requestBody != null;
Connection connection = chain.connection();
String requestStartMessage = "--> " + request.method() + ' ' + request.url() + (connection != null ? " " + connection.protocol() : "");
if (!logHeaders && hasRequestBody) {
requestStartMessage += " (" + requestBody.contentLength() + "-byte body)";
}
logger.log(requestStartMessage);
if (logHeaders) {
if (hasRequestBody) {
// them to be included (when available) so there values are known.
if (requestBody.contentType() != null) {
logger.log("Content-Type: " + requestBody.contentType());
}
if (requestBody.contentLength() != -1) {
logger.log("Content-Length: " + requestBody.contentLength());
}
}
Headers headers = request.headers();
for (int i = 0, count = headers.size(); i < count; i++) {
String name = headers.name(i);
if (!"Content-Type".equalsIgnoreCase(name) && !"Content-Length".equalsIgnoreCase(name)) {
if (isSensitiveHeader(name)) {
logger.log(name + ": REDACTED");
} else {
logger.log(name + ": " + headers.value(i));
}
}
}
if (!logBody || !hasRequestBody) {
logger.log("--> END " + request.method());
} else if (bodyEncoded(request.headers())) {
logger.log("--> END " + request.method() + " (encoded body omitted)");
} else {
Buffer buffer = new Buffer();
requestBody.writeTo(buffer);
Charset charset = UTF8;
MediaType contentType = requestBody.contentType();
if (contentType != null) {
charset = contentType.charset(UTF8);
}
logger.log("");
if (isPlaintext(buffer)) {
logger.log(buffer.readString(charset));
logger.log("--> END " + request.method() + " (" + requestBody.contentLength() + "-byte body)");
} else {
logger.log("--> END " + request.method() + " (binary " + requestBody.contentLength() + "-byte body omitted)");
}
}
}
long startNs = System.nanoTime();
Response response;
try {
response = chain.proceed(request);
} catch (Exception e) {
logger.log("<-- HTTP FAILED: " + e);
throw e;
}
long tookMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNs);
ResponseBody responseBody = response.body();
long contentLength = responseBody.contentLength();
String bodySize = contentLength != -1 ? contentLength + "-byte" : "unknown-length";
logger.log("<-- " + response.code() + (response.message().isEmpty() ? "" : ' ' + response.message()) + ' ' + response.request().url() + " (" + tookMs + "ms" + (!logHeaders ? ", " + bodySize + " body" : "") + ')');
if (logHeaders) {
Headers headers = response.headers();
for (int i = 0, count = headers.size(); i < count; i++) {
logger.log(headers.name(i) + ": " + headers.value(i));
}
if (!logBody || !HttpHeaders.hasBody(response)) {
logger.log("<-- END HTTP");
} else if (bodyEncoded(response.headers())) {
logger.log("<-- END HTTP (encoded body omitted)");
} else {
BufferedSource source = responseBody.source();
// Buffer the entire body.
source.request(Long.MAX_VALUE);
Buffer buffer = source.buffer();
Charset charset = UTF8;
MediaType contentType = responseBody.contentType();
if (contentType != null) {
charset = contentType.charset(UTF8);
}
if (!isPlaintext(buffer)) {
logger.log("");
logger.log("<-- END HTTP (binary " + buffer.size() + "-byte body omitted)");
return response;
}
if (contentLength != 0) {
logger.log("");
logger.log(buffer.clone().readString(charset));
}
logger.log("<-- END HTTP (" + buffer.size() + "-byte body)");
}
}
return response;
}
use of okhttp3.logging.HttpLoggingInterceptor.Level in project xDrip by NightscoutFoundation.
the class NightscoutUploader method postDeviceStatus.
/**
* Uploads the device status (containing battery details) to Nightscout for
*/
private void postDeviceStatus(NightscoutService nightscoutService, String apiSecret) throws Exception {
// TODO optimize based on changes avoiding stale marker issues
final List<NightscoutBatteryDevice> batteries = new ArrayList<>();
batteries.add(NightscoutBatteryDevice.PHONE);
if ((DexCollectionType.hasBattery() && (Pref.getBoolean("send_bridge_battery_to_nightscout", true))) || (Home.get_forced_wear() && DexCollectionType.getDexCollectionType().equals(DexCollectionType.DexcomG5))) {
batteries.add(NightscoutBatteryDevice.BRIDGE);
}
if (DexCollectionType.hasWifi()) {
batteries.add(NightscoutBatteryDevice.PARAKEET);
}
boolean sendDexcomTxBattery = Pref.getBooleanDefaultFalse("send_ob1dex_tx_battery_to_nightscout");
if (sendDexcomTxBattery) {
batteries.add(NightscoutBatteryDevice.DEXCOM_TRANSMITTER);
}
for (NightscoutBatteryDevice batteryType : batteries) {
final long last_battery_level = getLastBatteryLevel(batteryType);
final int new_battery_level = batteryType.getBatteryLevel(mContext);
if ((new_battery_level > 0) && (new_battery_level != last_battery_level || batteryType.alwaysSendBattery())) {
setLastBatteryLevel(batteryType, new_battery_level);
// UserError.Log.d(TAG, "Uploading battery detail: " + battery_level);
// json.put("uploaderBattery", battery_level); // old style
final JSONArray array = new JSONArray();
final JSONObject json = new JSONObject();
final JSONObject uploader = batteryType.getUploaderJson(mContext);
if (uploader == null) {
continue;
}
json.put("device", batteryType.getDeviceName());
json.put("uploader", uploader);
array.put(json);
// example
// {
// "device": "openaps://ediscout2.local",
// "uploader": {
// "battery": 60,
// "batteryVoltage": 3783,
// "temperature": "+51.0°C"
// }
// }
final RequestBody body = RequestBody.create(MediaType.parse("application/json"), json.toString());
Response<ResponseBody> r;
if (apiSecret != null) {
r = nightscoutService.uploadDeviceStatus(apiSecret, body).execute();
} else
r = nightscoutService.uploadDeviceStatus(body).execute();
if (!r.isSuccessful())
throw new UploaderException(r.message(), r.code());
// } else {
// UserError.Log.d(TAG, "Battery level is same as previous - not uploading: " + battery_level);
checkGzipSupport(r);
}
}
}
use of okhttp3.logging.HttpLoggingInterceptor.Level in project xDrip-plus by jamorham.
the class NightscoutUploader method postDeviceStatus.
/**
* Uploads the device status (containing battery details) to Nightscout for
*/
private void postDeviceStatus(NightscoutService nightscoutService, String apiSecret) throws Exception {
// TODO optimize based on changes avoiding stale marker issues
final List<NightscoutBatteryDevice> batteries = new ArrayList<>();
batteries.add(NightscoutBatteryDevice.PHONE);
if ((DexCollectionType.hasBattery() && (Pref.getBoolean("send_bridge_battery_to_nightscout", true))) || (Home.get_forced_wear() && DexCollectionType.getDexCollectionType().equals(DexCollectionType.DexcomG5))) {
batteries.add(NightscoutBatteryDevice.BRIDGE);
}
if (DexCollectionType.hasWifi()) {
batteries.add(NightscoutBatteryDevice.PARAKEET);
}
boolean sendDexcomTxBattery = Pref.getBooleanDefaultFalse("send_ob1dex_tx_battery_to_nightscout");
if (sendDexcomTxBattery) {
batteries.add(NightscoutBatteryDevice.DEXCOM_TRANSMITTER);
}
for (NightscoutBatteryDevice batteryType : batteries) {
final long last_battery_level = getLastBatteryLevel(batteryType);
final int new_battery_level = batteryType.getBatteryLevel(mContext);
if ((new_battery_level > 0) && (new_battery_level != last_battery_level || batteryType.alwaysSendBattery())) {
setLastBatteryLevel(batteryType, new_battery_level);
// UserError.Log.d(TAG, "Uploading battery detail: " + battery_level);
// json.put("uploaderBattery", battery_level); // old style
final JSONArray array = new JSONArray();
final JSONObject json = new JSONObject();
final JSONObject uploader = batteryType.getUploaderJson(mContext);
if (uploader == null) {
continue;
}
json.put("device", batteryType.getDeviceName());
json.put("uploader", uploader);
array.put(json);
// example
// {
// "device": "openaps://ediscout2.local",
// "uploader": {
// "battery": 60,
// "batteryVoltage": 3783,
// "temperature": "+51.0°C"
// }
// }
final RequestBody body = RequestBody.create(MediaType.parse("application/json"), json.toString());
Response<ResponseBody> r;
if (apiSecret != null) {
r = nightscoutService.uploadDeviceStatus(apiSecret, body).execute();
} else
r = nightscoutService.uploadDeviceStatus(body).execute();
if (!r.isSuccessful())
throw new UploaderException(r.message(), r.code());
// } else {
// UserError.Log.d(TAG, "Battery level is same as previous - not uploading: " + battery_level);
checkGzipSupport(r);
}
}
}
use of okhttp3.logging.HttpLoggingInterceptor.Level in project iterable-android-sdk by Iterable.
the class IterableApiTest method testInboxSession.
@Test
public void testInboxSession() throws Exception {
server.enqueue(new MockResponse().setResponseCode(200).setBody("{}"));
IterableInAppMessage message = InAppTestUtils.getTestInAppMessage();
IterableApi.initialize(getContext(), "apiKey", new IterableConfig.Builder().setAutoPushRegistration(false).build());
IterableApi.getInstance().setEmail("test@email.com");
// Set up test data
Date sessionStartTime = new Date();
List<IterableInboxSession.Impression> impressions = new ArrayList<>();
impressions.add(new IterableInboxSession.Impression("messageId1", true, 2, 5.5f));
impressions.add(new IterableInboxSession.Impression("messageId2", false, 1, 2.0f));
IterableInboxSession session = new IterableInboxSession(sessionStartTime, new Date(sessionStartTime.getTime() + 3600), 10, 5, 8, 3, impressions);
IterableApi.getInstance().setInboxSessionId(session.sessionId);
IterableApi.getInstance().trackInboxSession(session);
shadowOf(getMainLooper()).idle();
RecordedRequest trackInAppClickRequest = server.takeRequest(1, TimeUnit.SECONDS);
assertNotNull(trackInAppClickRequest);
Uri uri = Uri.parse(trackInAppClickRequest.getRequestUrl().toString());
assertEquals("/" + IterableConstants.ENDPOINT_TRACK_INBOX_SESSION, uri.getPath());
JSONObject requestJson = new JSONObject(trackInAppClickRequest.getBody().readUtf8());
// Check top-level fields
assertEquals(sessionStartTime.getTime(), requestJson.getLong(IterableConstants.ITERABLE_INBOX_SESSION_START));
assertEquals(sessionStartTime.getTime() + 3600, requestJson.getLong(IterableConstants.ITERABLE_INBOX_SESSION_END));
assertEquals(10, requestJson.getInt(IterableConstants.ITERABLE_INBOX_START_TOTAL_MESSAGE_COUNT));
assertEquals(5, requestJson.getInt(IterableConstants.ITERABLE_INBOX_START_UNREAD_MESSAGE_COUNT));
assertEquals(8, requestJson.getInt(IterableConstants.ITERABLE_INBOX_END_TOTAL_MESSAGE_COUNT));
assertEquals(3, requestJson.getInt(IterableConstants.ITERABLE_INBOX_END_UNREAD_MESSAGE_COUNT));
assertEquals(session.sessionId, requestJson.getString(IterableConstants.KEY_INBOX_SESSION_ID));
verifyDeviceInfo(requestJson);
// Check impression data
JSONArray impressionsJsonArray = requestJson.getJSONArray(IterableConstants.ITERABLE_INBOX_IMPRESSIONS);
assertEquals(2, impressionsJsonArray.length());
assertEquals("messageId1", impressionsJsonArray.getJSONObject(0).getString(IterableConstants.KEY_MESSAGE_ID));
assertEquals(true, impressionsJsonArray.getJSONObject(0).getBoolean(IterableConstants.ITERABLE_IN_APP_SILENT_INBOX));
assertEquals(2, impressionsJsonArray.getJSONObject(0).getInt(IterableConstants.ITERABLE_INBOX_IMP_DISPLAY_COUNT));
assertEquals(5.5, impressionsJsonArray.getJSONObject(0).getDouble(IterableConstants.ITERABLE_INBOX_IMP_DISPLAY_DURATION));
}
Aggregations