GBA001/Pods/GoogleAPIClientForREST/Source/Objects/GTLRRuntimeCommon.h
Riley Testut 6cca0f244f Replaces frameworks with static libraries
As of iOS 13.3.1, apps installed with free developer accounts that contain embedded frameworks fail to launch. To work around this, we now link all dependencies via Cocoapods as static libraries.
2020-02-03 19:28:23 -08:00

74 lines
2.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.
*/
#import <Foundation/Foundation.h>
#import "GTLRDefines.h"
@protocol GTLRObjectClassResolver;
NS_ASSUME_NONNULL_BEGIN
// This protocol and support class are an internal implementation detail so
// GTLRObject and GTLRQuery can share some code.
/**
* An internal protocol for the GTLR library.
*
* None of these methods should be used by client apps.
*/
@protocol GTLRRuntimeCommon <NSObject>
@required
// Get/Set properties
- (void)setJSONValue:(nullable id)obj forKey:(NSString *)key;
- (id)JSONValueForKey:(NSString *)key;
// Child cache
- (void)setCacheChild:(nullable id)obj forKey:(NSString *)key;
- (nullable id)cacheChildForKey:(NSString *)key;
// Object mapper.
- (nullable id<GTLRObjectClassResolver>)objectClassResolver;
// Key map
+ (nullable NSDictionary<NSString *, NSString *> *)propertyToJSONKeyMapForClass:(Class<GTLRRuntimeCommon>)aClass;
// Array item types
+ (nullable NSDictionary<NSString *, Class> *)arrayPropertyToClassMapForClass:(Class<GTLRRuntimeCommon>)aClass;
// The parent class for dynamic support
+ (nullable Class<GTLRRuntimeCommon>)ancestorClass;
@end
/**
* An internal class for the GTLR library.
*
* None of these methods should be used by client apps.
*/
@interface GTLRRuntimeCommon : NSObject
// Wire things up.
+ (BOOL)resolveInstanceMethod:(SEL)sel onClass:(Class)onClass;
// Helpers
+ (nullable id)objectFromJSON:(id)json
defaultClass:(nullable Class)defaultClass
objectClassResolver:(id<GTLRObjectClassResolver>)objectClassResolver
isCacheable:(nullable BOOL *)isCacheable;
+ (nullable id)jsonFromAPIObject:(id)obj
expectedClass:(nullable Class)expectedClass
isCacheable:(nullable BOOL *)isCacheable;
// Walk up the class tree merging dictionaries and return the result.
+ (NSDictionary *)mergedClassDictionaryForSelector:(SEL)selector
startClass:(Class)startClass
ancestorClass:(Class)ancestorClass
cache:(NSMutableDictionary *)cache;
@end
NS_ASSUME_NONNULL_END