//
|
// GTMBase64.h
|
//
|
// Copyright 2006-2008 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.
|
//
|
|
#import <Foundation/Foundation.h>
|
#import "GTMDefines.h"
|
|
// GTMBase64
|
//
|
/// Helper for handling Base64 and WebSafeBase64 encodings
|
//
|
/// The webSafe methods use different character set and also the results aren't
|
/// always padded to a multiple of 4 characters. This is done so the resulting
|
/// data can be used in urls and url query arguments without needing any
|
/// encoding. You must use the webSafe* methods together, the data does not
|
/// interop with the RFC methods.
|
//
|
@interface WASdkGTMBase64 : NSObject
|
|
//
|
// Standard Base64 (RFC) handling
|
//
|
|
// encodeData:
|
//
|
/// Base64 encodes contents of the NSData object.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)encodeData:(NSData *)data;
|
|
// decodeData:
|
//
|
/// Base64 decodes contents of the NSData object.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the decoded payload. nil for any error.
|
//
|
+(NSData *)decodeData:(NSData *)data;
|
|
// encodeBytes:length:
|
//
|
/// Base64 encodes the data pointed at by |bytes|.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length;
|
|
// decodeBytes:length:
|
//
|
/// Base64 decodes the data pointed at by |bytes|.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length;
|
|
// stringByEncodingData:
|
//
|
/// Base64 encodes contents of the NSData object.
|
//
|
/// Returns:
|
/// A new autoreleased NSString with the encoded payload. nil for any error.
|
//
|
+(NSString *)stringByEncodingData:(NSData *)data;
|
|
// stringByEncodingBytes:length:
|
//
|
/// Base64 encodes the data pointed at by |bytes|.
|
//
|
/// Returns:
|
/// A new autoreleased NSString with the encoded payload. nil for any error.
|
//
|
+(NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length;
|
|
// decodeString:
|
//
|
/// Base64 decodes contents of the NSString.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the decoded payload. nil for any error.
|
//
|
+(NSData *)decodeString:(NSString *)string;
|
|
//
|
// Modified Base64 encoding so the results can go onto urls.
|
//
|
// The changes are in the characters generated and also allows the result to
|
// not be padded to a multiple of 4.
|
// Must use the matching call to encode/decode, won't interop with the
|
// RFC versions.
|
//
|
|
// webSafeEncodeData:padded:
|
//
|
/// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES
|
/// then padding characters are added so the result length is a multiple of 4.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)webSafeEncodeData:(NSData *)data
|
padded:(BOOL)padded;
|
|
// webSafeDecodeData:
|
//
|
/// WebSafe Base64 decodes contents of the NSData object.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the decoded payload. nil for any error.
|
//
|
+(NSData *)webSafeDecodeData:(NSData *)data;
|
|
// webSafeEncodeBytes:length:padded:
|
//
|
/// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES
|
/// then padding characters are added so the result length is a multiple of 4.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)webSafeEncodeBytes:(const void *)bytes
|
length:(NSUInteger)length
|
padded:(BOOL)padded;
|
|
// webSafeDecodeBytes:length:
|
//
|
/// WebSafe Base64 decodes the data pointed at by |bytes|.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length;
|
|
// stringByWebSafeEncodingData:padded:
|
//
|
/// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES
|
/// then padding characters are added so the result length is a multiple of 4.
|
//
|
/// Returns:
|
/// A new autoreleased NSString with the encoded payload. nil for any error.
|
//
|
+(NSString *)stringByWebSafeEncodingData:(NSData *)data
|
padded:(BOOL)padded;
|
|
// stringByWebSafeEncodingBytes:length:padded:
|
//
|
/// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES
|
/// then padding characters are added so the result length is a multiple of 4.
|
//
|
/// Returns:
|
/// A new autoreleased NSString with the encoded payload. nil for any error.
|
//
|
+(NSString *)stringByWebSafeEncodingBytes:(const void *)bytes
|
length:(NSUInteger)length
|
padded:(BOOL)padded;
|
|
// webSafeDecodeString:
|
//
|
/// WebSafe Base64 decodes contents of the NSString.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the decoded payload. nil for any error.
|
//
|
+(NSData *)webSafeDecodeString:(NSString *)string;
|
|
@end
|