001package com.box.sdkgen.internal.logging;
002
003import static com.box.sdkgen.internal.utils.UtilsManager.entryOf;
004import static com.box.sdkgen.internal.utils.UtilsManager.mapOf;
005import static com.box.sdkgen.internal.utils.UtilsManager.sanitizeMap;
006import static com.box.sdkgen.serialization.json.JsonManager.jsonToSerializedData;
007import static com.box.sdkgen.serialization.json.JsonManager.sanitizeFormEncodedBodyFromString;
008import static com.box.sdkgen.serialization.json.JsonManager.sanitizeSerializedData;
009import static com.box.sdkgen.serialization.json.JsonManager.sdToJson;
010
011import com.fasterxml.jackson.databind.JsonNode;
012import java.util.Map;
013
014public class DataSanitizer {
015
016  public final Map<String, String> keysToSanitize;
017
018  public DataSanitizer() {
019    this.keysToSanitize =
020        mapOf(
021            entryOf("authorization", ""),
022            entryOf("access_token", ""),
023            entryOf("refresh_token", ""),
024            entryOf("subject_token", ""),
025            entryOf("token", ""),
026            entryOf("client_id", ""),
027            entryOf("client_secret", ""),
028            entryOf("shared_link", ""),
029            entryOf("download_url", ""),
030            entryOf("jwt_private_key", ""),
031            entryOf("jwt_private_key_passphrase", ""),
032            entryOf("password", ""));
033  }
034
035  public Map<String, String> sanitizeHeaders(Map<String, String> headers) {
036    return sanitizeMap(headers, this.keysToSanitize);
037  }
038
039  public JsonNode sanitizeBody(JsonNode body) {
040    return sanitizeSerializedData(body, this.keysToSanitize);
041  }
042
043  public String sanitizeFormEncodedBody(String body) {
044    return sanitizeFormEncodedBodyFromString(body, this.keysToSanitize);
045  }
046
047  public String sanitizeStringBody(String body) {
048    return sanitizeStringBody(body, null);
049  }
050
051  public String sanitizeStringBody(String body, String contentType) {
052    if (contentType.equals("application/json")
053        || contentType.equals("application/json-patch+json")) {
054      try {
055        return sdToJson(this.sanitizeBody(jsonToSerializedData(body)));
056      } catch (Exception exception) {
057        return body;
058      }
059    }
060    if (contentType.equals("application/x-www-form-urlencoded")) {
061      return this.sanitizeFormEncodedBody(body);
062    }
063    return body;
064  }
065}