1. import java.util.HashMap;
  2. import java.util.Map;
  3. public class ApiPayloadCompressor {
  4. /**
  5. * Compresses API payload output with optional flags.
  6. *
  7. * @param payload The API payload string.
  8. * @param compress Whether to compress the payload.
  9. * @param verbose Whether to include verbose output.
  10. * @param includeHeaders Whether to include headers in the output.
  11. * @return The compressed payload string.
  12. */
  13. public static String compressPayload(String payload, boolean compress, boolean verbose, boolean includeHeaders) {
  14. if (payload == null) {
  15. return ""; // Handle null payload
  16. }
  17. StringBuilder compressedPayload = new StringBuilder();
  18. if (includeHeaders) {
  19. compressedPayload.append("Headers: ").append(payload.substring(0, payload.indexOf("\n"))); // Extract headers
  20. compressedPayload.append("\n");
  21. }
  22. if (compress) {
  23. // Basic compression: Remove redundant whitespace
  24. String cleanedPayload = payload.replaceAll("\\s+", " "); //Replace multiple spaces with a single space
  25. compressedPayload.append("Compressed Payload:\n");
  26. compressedPayload.append(cleanedPayload);
  27. } else {
  28. compressedPayload.append("Payload:\n");
  29. compressedPayload.append(payload);
  30. }
  31. if (verbose) {
  32. compressedPayload.append("\n--- Details ---\n");
  33. compressedPayload.append("Original Length: ").append(payload.length()).append("\n");
  34. compressedPayload.append("Compressed Length: ").append(compressedPayload.length()).append("\n");
  35. }
  36. return compressedPayload.toString();
  37. }
  38. public static void main(String[] args) {
  39. String testPayload = "This is a test payload.\nIt has multiple lines.\nWith some extra spaces here.";
  40. // Example Usage
  41. String compressed1 = compressPayload(testPayload, true, false, true); // Compress, no verbose, include headers
  42. System.out.println(compressed1);
  43. String compressed2 = compressPayload(testPayload, false, true, false); // No compress, verbose, no headers
  44. System.out.println(compressed2);
  45. String compressed3 = compressPayload(testPayload, true, true, false); // Compress, verbose, no headers
  46. System.out.println(compressed3);
  47. String compressed4 = compressPayload(testPayload, false, false, true); // No compress, no verbose, include headers
  48. System.out.println(compressed4);
  49. }
  50. }

Add your comment