GBA-8-19/Pods/GoogleAPIClientForREST/Source/Objects/GTLRUploadParameters.h
2024-06-14 17:15:51 +08:00

125 lines
3.7 KiB
Objective-C

/* Copyright (c) 2011 Google Inc.
*
* 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.
*/
// Uploading documentation:
// https://github.com/google/google-api-objectivec-client-for-rest/wiki#uploading-files
#import <Foundation/Foundation.h>
#import "GTLRDefines.h"
NS_ASSUME_NONNULL_BEGIN
/**
* Upload parameters are required for chunked-resumable or simple/multipart uploads.
*
* The MIME type and one source for data (@c NSData, file URL, or @c NSFileHandle) must
* be specified.
*/
@interface GTLRUploadParameters : NSObject <NSCopying>
/**
* The type of media being uploaded.
*/
@property(atomic, copy, nullable) NSString *MIMEType;
/**
* The media to be uploaded, represented as @c NSData.
*/
@property(atomic, retain, nullable) NSData *data;
/**
* The URL for the local file to be uploaded.
*/
@property(atomic, retain, nullable) NSURL *fileURL;
/**
* The media to be uploaded, represented as @c NSFileHandle.
*
* @note This property is provided for compatibility with older code.
* Uploading using @c fileURL is preferred over @c fileHandle
*/
@property(atomic, retain, nullable) NSFileHandle *fileHandle;
/**
* Resuming an in-progress resumable, chunked upload is done with the upload location URL,
* and requires a file URL or file handle for uploading.
*/
@property(atomic, retain, nullable) NSURL *uploadLocationURL;
/**
* Small uploads (for example, under 200K) can be done with a single multipart upload
* request. The upload body must be provided as NSData, not a file URL or file handle.
*
* Default value is NO.
*/
@property(atomic, assign) BOOL shouldUploadWithSingleRequest;
/**
* Uploads may be done without a JSON body as metadata in the initial request.
*
* Default value is NO.
*/
@property(atomic, assign) BOOL shouldSendUploadOnly;
/**
* Uploads may use a background session when uploading via GTMSessionUploadFetcher.
* Since background session fetches are slower than foreground fetches, this defaults
* to NO.
*
* It's reasonable for an application to set this to YES for a rare upload of a large file.
*
* Default value is NO.
*
* For more information about the hazards of background sessions, see the header comments for
* the GTMSessionFetcher useBackgroundSession property.
*/
@property(atomic, assign) BOOL useBackgroundSession;
/**
* Constructor for uploading from @c NSData.
*
* @param data The data to uploaded.
* @param mimeType The media's type.
*
* @return The upload parameters object.
*/
+ (instancetype)uploadParametersWithData:(NSData *)data
MIMEType:(NSString *)mimeType;
/**
* Constructor for uploading from a file URL.
*
* @param fileURL The file to upload.
* @param mimeType The media's type.
*
* @return The upload parameters object.
*/
+ (instancetype)uploadParametersWithFileURL:(NSURL *)fileURL
MIMEType:(NSString *)mimeType;
/**
* Constructor for uploading from a file handle.
*
* @note This method is provided for compatibility with older code. To upload files,
* use a file URL.
*/
+ (instancetype)uploadParametersWithFileHandle:(NSFileHandle *)fileHandle
MIMEType:(NSString *)mimeType;
@end
NS_ASSUME_NONNULL_END