FLEXNetworkCurlLogger.m 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. //
  2. // FLEXCurlLogger.m
  3. //
  4. //
  5. // Created by Ji Pei on 07/27/16
  6. //
  7. #import "FLEXNetworkCurlLogger.h"
  8. @implementation FLEXNetworkCurlLogger
  9. + (NSString *)curlCommandString:(NSURLRequest *)request {
  10. __block NSMutableString *curlCommandString = [NSMutableString stringWithFormat:@"curl -v -X %@ ", request.HTTPMethod];
  11. [curlCommandString appendFormat:@"\'%@\' ", request.URL.absoluteString];
  12. [request.allHTTPHeaderFields enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *val, BOOL *stop) {
  13. [curlCommandString appendFormat:@"-H \'%@: %@\' ", key, val];
  14. }];
  15. NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:request.URL];
  16. if (cookies) {
  17. [curlCommandString appendFormat:@"-H \'Cookie:"];
  18. for (NSHTTPCookie *cookie in cookies) {
  19. [curlCommandString appendFormat:@" %@=%@;", cookie.name, cookie.value];
  20. }
  21. [curlCommandString appendFormat:@"\' "];
  22. }
  23. if (request.HTTPBody) {
  24. if ([request.allHTTPHeaderFields[@"Content-Length"] intValue] < 1024) {
  25. [curlCommandString appendFormat:@"-d \'%@\'",
  26. [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]];
  27. } else {
  28. [curlCommandString appendFormat:@"[TOO MUCH DATA TO INCLUDE]"];
  29. }
  30. }
  31. return curlCommandString;
  32. }
  33. @end