// // RKParamsAttachment.h // RestKit // // Created by Blake Watters on 8/6/09. // Copyright 2009 Two Toasters // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #import /** * Models an individual part of a multi-part MIME document. These * attachments are stacked together within the RKParams document to * allow for uploading files via HTTP */ @interface RKParamsAttachment : NSObject { NSString* _name; NSString* _fileName; NSString* _MIMEType; @private NSData* _MIMEHeader; NSUInteger _MIMEHeaderLength; NSInputStream* _bodyStream; NSUInteger _bodyLength; NSUInteger _length; NSUInteger _delivered; } /** * The parameter name of this attachment in the multi-part document */ @property (nonatomic, retain) NSString* name; /** * The name of the attached file in the MIME stream * Defaults to the name of the file attached or nil if there is not one. */ @property (nonatomic, retain) NSString* fileName; /** * The MIME type of the attached file in the MIME stream. MIME Type will be * auto-detected from the file extension of the attached file. * * Defaults to nil */ @property (nonatomic, retain) NSString* MIMEType; /** * The MIME boundary string */ @property (nonatomic, readonly) NSString* MIMEBoundary; /** * Initialize a new attachment with a given parameter name and a value */ - (id)initWithName:(NSString*)name value:(id)value; /** * Initialize a new attachment with a given parameter name and the data stored in an NSData object */ - (id)initWithName:(NSString*)name data:(NSData*)data; /** * Initialize a new attachment with a given parameter name and the data stored on disk at the given file path */ - (id)initWithName:(NSString*)name file:(NSString*)filePath; /** * Open the attachment stream to begin reading. This will generate a MIME header and prepare the * attachment for writing to an RKParams stream */ - (void)open; /** * The length of the entire attachment (including the MIME Header and the body) */ - (NSUInteger)length; /** * Read the attachment body in a streaming fashion */ - (NSUInteger)read:(uint8_t *)buffer maxLength:(NSUInteger)len; @end