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