Thrift: Allow a custom User-Agent with the Cocoa THttpClient.
authorDavid Reiss <dreiss@apache.org>
Wed, 23 Jan 2008 20:35:39 +0000 (20:35 +0000)
committerDavid Reiss <dreiss@apache.org>
Wed, 23 Jan 2008 20:35:39 +0000 (20:35 +0000)
Reviewed By: mcslee

Test Plan: None.

Other Notes:
Submitted by Andrew McGeachie, the author of the Cocoa bindings.

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665440 13f79535-47bb-0310-9956-ffa450edef68

lib/cocoa/src/transport/THTTPClient.h
lib/cocoa/src/transport/THTTPClient.m

index 802ff51..d9ea1a9 100644 (file)
@@ -7,11 +7,14 @@
   NSMutableData * mRequestData;
   NSData * mResponseData;
   int mResponseDataOffset;
+  NSString * mUserAgent;
+  int mTimeout;
 }
 
 - (id) initWithURL: (NSURL *) aURL;
 
 - (id) initWithURL: (NSURL *) aURL 
+         userAgent: (NSString *) userAgent
            timeout: (int) timeout;
 
 - (void) setURL: (NSURL *) aURL;
index 2e31a98..f5186e2 100644 (file)
   [mRequest setHTTPMethod: @"POST"];
   [mRequest setValue: @"application/x-thrift" forHTTPHeaderField: @"Content-Type"];
   [mRequest setValue: @"application/x-thrift" forHTTPHeaderField: @"Accept"];
-  [mRequest setValue: @"Cocoa/THTTPClient" forHTTPHeaderField: @"User-Agent"];
+
+  NSString * userAgent = mUserAgent;
+  if (!userAgent) {
+    userAgent = @"Cocoa/THTTPClient";
+  }
+  [mRequest setValue: userAgent forHTTPHeaderField: @"User-Agent"];
+
   [mRequest setCachePolicy: NSURLRequestReloadIgnoringCacheData];
+  if (mTimeout) {
+    [mRequest setTimeoutInterval: mTimeout];
+  }
 }
 
 
 - (id) initWithURL: (NSURL *) aURL
 {
-  self = [super init];
-  mURL = [aURL retain];
-
-  [self setupRequest];
-
-  // create our request data buffer
-  mRequestData = [[NSMutableData alloc] initWithCapacity: 1024];
-
-  return self;
+  return [self initWithURL: aURL
+                 userAgent: nil
+                   timeout: 0];
 }
 
 
 - (id) initWithURL: (NSURL *) aURL 
+         userAgent: (NSString *) userAgent
            timeout: (int) timeout
 {
-  self = [self initWithURL: aURL];
+  self = [super init];
+  if (!self) {
+    return nil;
+  }
+  
+  mTimeout = timeout;
+  if (userAgent) {
+    mUserAgent = [userAgent retain];
+  }
+  mURL = [aURL retain];
 
-  [mRequest setTimeoutInterval: timeout];
+  [self setupRequest];
 
+  // create our request data buffer
+  mRequestData = [[NSMutableData alloc] initWithCapacity: 1024];
+    
   return self;
 }
 
@@ -58,6 +74,7 @@
 - (void) dealloc
 {
   [mURL release];
+  [mUserAgent release];
   [mRequest release];
   [mRequestData release];
   [mResponseData release];