15b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// Copyright (c) 2006, Google Inc. 25b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// All rights reserved. 35b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// 45b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// Redistribution and use in source and binary forms, with or without 55b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// modification, are permitted provided that the following conditions are 65b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// met: 75b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// 85b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// * Redistributions of source code must retain the above copyright 95b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// notice, this list of conditions and the following disclaimer. 105b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// * Redistributions in binary form must reproduce the above 115b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// copyright notice, this list of conditions and the following disclaimer 125b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// in the documentation and/or other materials provided with the 135b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// distribution. 145b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// * Neither the name of Google Inc. nor the names of its 155b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// contributors may be used to endorse or promote products derived from 165b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// this software without specific prior written permission. 175b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// 185b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis 305b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// HTTPMultipartUpload: A multipart/form-data HTTP uploader. 315b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// Each parameter pair is sent as a boundary 325b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// Each file is sent with a name field in addition to the filename and data 335b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// The data will be sent synchronously. 345b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis 3557584bc289a255c4a97c76c14e4c42a83830d090qsr@chromium.org#import <Foundation/Foundation.h> 365b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis 375b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis@interface HTTPMultipartUpload : NSObject { 385b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis @protected 395b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis NSURL *url_; // The destination URL (STRONG) 405b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis NSDictionary *parameters_; // The key/value pairs for sending data (STRONG) 41b7b89b3b013b9b065090c2e74e04a2e6f62f5811waylonis NSMutableDictionary *files_; // Dictionary of name/file-path (STRONG) 425b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis NSString *boundary_; // The boundary string (STRONG) 435b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis NSHTTPURLResponse *response_; // The response from the send (STRONG) 445b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis} 455b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis 465b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis- (id)initWithURL:(NSURL *)url; 475b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis 485b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis- (NSURL *)URL; 495b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis 505b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis- (void)setParameters:(NSDictionary *)parameters; 515b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis- (NSDictionary *)parameters; 525b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis 535b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis- (void)addFileAtPath:(NSString *)path name:(NSString *)name; 540ec76c7fad331595270db25c29f997657289f725waylonis- (void)addFileContents:(NSData *)data name:(NSString *)name; 55b7b89b3b013b9b065090c2e74e04a2e6f62f5811waylonis- (NSDictionary *)files; 565b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis 575b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis// Set the data and return the response 585b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis- (NSData *)send:(NSError **)error; 595b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis- (NSHTTPURLResponse *)response; 605b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis 615b9bc2fd5e6d76de4ae2e45c24082210595c67a7waylonis@end 62