aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/mac/sender/uploader.mm37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/client/mac/sender/uploader.mm b/src/client/mac/sender/uploader.mm
index 42a43bfc..b6a8a846 100644
--- a/src/client/mac/sender/uploader.mm
+++ b/src/client/mac/sender/uploader.mm
@@ -168,6 +168,10 @@ NSDictionary *readConfigurationData(const char *configFile) {
// Records the uploaded crash ID to the log file.
- (void)logUploadWithID:(const char *)uploadID;
+
+// Builds an URL parameter for a given dictionary key. Uses Uploader's parameters
+// to provide its value. Returns nil if no item is stored for the given key.
+- (NSURLQueryItem *)queryItemWithName:(NSString *)queryItemName forParamKey:(NSString *)key;
@end
@implementation Uploader
@@ -532,8 +536,41 @@ NSDictionary *readConfigurationData(const char *configFile) {
}
//=============================================================================
+- (NSURLQueryItem *)queryItemWithName:(NSString *)queryItemName forParamKey:(NSString *)key {
+ NSString *value = [parameters_ objectForKey:key];
+ NSString *escapedValue = [value stringByAddingPercentEncodingWithAllowedCharacters:
+ [NSCharacterSet URLQueryAllowedCharacterSet]];
+ return [NSURLQueryItem queryItemWithName:queryItemName value:escapedValue];
+}
+
+//=============================================================================
- (void)report {
NSURL *url = [NSURL URLWithString:[parameters_ objectForKey:@BREAKPAD_URL]];
+
+ NSString *serverType = [parameters_ objectForKey:@BREAKPAD_SERVER_TYPE];
+ if ([serverType length] == 0 || [serverType isEqualToString:kGoogleServerType]) {
+ // when communicating to Crash @ Google, add URL params which identify the product
+ NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:url
+ resolvingAgainstBaseURL:false];
+ NSMutableArray *queryItemsToAdd = [urlComponents.queryItems mutableCopyWithZone:nil];
+ if (queryItemsToAdd == nil) {
+ queryItemsToAdd = [[NSMutableArray alloc] init];
+ }
+
+ NSURLQueryItem *queryItemProduct = [self queryItemWithName:@"product"
+ forParamKey:@BREAKPAD_PRODUCT];
+ NSURLQueryItem *queryItemVersion = [self queryItemWithName:@"version"
+ forParamKey:@BREAKPAD_VERSION];
+ NSURLQueryItem *queryItemGuid = [self queryItemWithName:@"guid" forParamKey:@"guid"];
+
+ if (queryItemProduct != nil) [queryItemsToAdd addObject:queryItemProduct];
+ if (queryItemVersion != nil) [queryItemsToAdd addObject:queryItemVersion];
+ if (queryItemGuid != nil) [queryItemsToAdd addObject:queryItemGuid];
+
+ urlComponents.queryItems = queryItemsToAdd;
+ url = [urlComponents URL];
+ }
+
HTTPMultipartUpload *upload = [[HTTPMultipartUpload alloc] initWithURL:url];
NSMutableDictionary *uploadParameters = [NSMutableDictionary dictionary];