AutorÃa | Ultima modificación | Ver Log |
// Copyright 2019 Google//// 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 <Foundation/Foundation.h>/*** This class is a helper class for generating Multipart requests, as described in* http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html. In the case of multiple part messages, in* which one or more different sets of data are combined in a single body, a "multipart"* Content-Type field must appear in the entity's header. The body must then contain one or more* "body parts," each preceded by an encapsulation boundary, and the last one followed by a closing* boundary. Each part starts with an encapsulation boundary, and then contains a body part* consisting of header area, a blank line, and a body area.*/@interface FIRCLSMultipartMimeStreamEncoder : NSObject/*** Convenience class method to populate a NSMutableURLRequest with data from a block that takes an* instance of this class as input.*/+ (void)populateRequest:(NSMutableURLRequest *)requestwithDataFromEncoder:(void (^)(FIRCLSMultipartMimeStreamEncoder *encoder))block;/*** Returns a NSString instance with multipart/form-data appended to the boundary.*/+ (NSString *)contentTypeHTTPHeaderValueWithBoundary:(NSString *)boundary;/*** Convenience class method that returns an instance of this class*/+ (instancetype)encoderWithStream:(NSOutputStream *)stream andBoundary:(NSString *)boundary;/*** Returns a unique boundary string.*/+ (NSString *)generateBoundary;/*** Designated initializer* @param stream NSOutputStream associated with the Multipart request* @param boundary the unique Boundary string to be used*/- (instancetype)initWithStream:(NSOutputStream *)streamandBoundary:(NSString *)boundary NS_DESIGNATED_INITIALIZER;- (instancetype)init NS_UNAVAILABLE;+ (instancetype)new NS_UNAVAILABLE;/*** Encodes this block within the boundary on the output stream*/- (void)encode:(void (^)(void))block;/*** Adds the contents of the file data with given Mime type anf fileName within the boundary in* stream*/- (void)addFileData:(NSData *)datafileName:(NSString *)fileNamemimeType:(NSString *)mimeTypefieldName:(NSString *)name;/*** Convenience method for the method above. Converts fileURL to data and calls the above method.*/- (void)addFile:(NSURL *)fileURLfileName:(NSString *)fileNamemimeType:(NSString *)mimeTypefieldName:(NSString *)name;/*** Adds this field and value in the stream*/- (void)addValue:(id)value fieldName:(NSString *)name;/*** String referring to the multipart MIME type with boundary*/@property(nonatomic, copy, readonly) NSString *contentTypeHTTPHeaderValue;/*** Length of the data written to stream*/@property(nonatomic, copy, readonly) NSString *contentLengthHTTPHeaderValue;@end