"{\"weird\":42,\"str\":\"yes\"}"
. "geometry" : { "location" : { "lat" : -33.8583790, "lng" : 151.2100270 } }
{"iface": [ { "struct":"GoogleGeometry", "typedef" : { "location" : { "lat" : "double", "lng" : "double" } } } }
$ python ifacegen.py GoogleClient.json
@interface GoogleGeometryLocation: NSObject @property (nonatomic) double_t lat; @property (nonatomic) double_t lng; @end; @interface GoogleGeometry: NSObject - (NSData*)dumpWithError:(NSError* __autoreleasing*)error; - (id)initWithLocation:(GoogleGeometryLocation*)location; - (id)initWithDictionary:(NSDictionary*)dictionary error:(NSError* __autoreleasing*)error; - (id)initWithJSONData:(NSData*)jsonData error:(NSError* __autoreleasing*)error; @property (nonatomic) GoogleGeometryLocation* location; @end;
{ "struct":"GoogleLocation", "typedef" : { "lat" : "double", "lng" : "double" } }, { "struct":"GoogleGeometry", "typedef" : { "location" : "GoogleLocation" } }
{ "struct":"GoogleLocationEx", "extends": "GoogleLocation", "typedef" : { "elv" : "double" } }
{"iface": [ { "import": "OtherModule.json" } ...
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
maps.googleapis.com/maps/api/place/details/json?
, , JSON. GoogleDetailsResult , :
{ "procedure": "placeDetails", "prefix": "place/details/json", "prerequest": { "key":"string", "reference": "string", "sensor": "string", "language": "string" }, "request" : {}, "response": "GoogleDetailsResult" }
prefix , . prerequest , URL ( RFC 3986 ), request JSON, . . . «» ( ):
- (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error;
:
GoogleDetailsResult* result = [self.google placeDetailsWithKey:key andReference:ref andSensor:@"true" andLanguage:locale andError:&error];
Objective-C : GoogleClient.m - (GoogleDetailsResult*)placeDetailsWithKey:(NSString*)key andReference:(NSString*)reference andSensor:(NSString*)sensor andLanguage:(NSString*)language andError:(NSError* __autoreleasing*)error { id tmp; [transport setRequestParams:@{ @"key" : NULLABLE(key), @"reference" : NULLABLE(reference), @"sensor" : NULLABLE(sensor), @"language" : NULLABLE(language) }]; if ( ![transport writeAll:nil prefix:@"/place/details/json" error:error] ) { return nil; } NSData* outputData = [transport readAll]; if ( outputData == nil ) { return nil; } NSDictionary* output = [NSJSONSerialization JSONObjectWithData:outputData options:NSJSONReadingAllowFragments error:error]; if ( *error != nil ) { return nil; } GoogleDetailsResult* GoogleDetailsResult235; GoogleDetailsResult235 = [GoogleDetailsResult new]; GooglePlaceDetails* GooglePlaceDetails236; NSDictionary* outputResult237 = [output objectForKey:@"result"]; if ( outputResult237 != nil && ![outputResult237 isEqual:[NSNull null]]) { GooglePlaceDetails236 = [GooglePlaceDetails new]; NSArray* outputResult237Address_components238 = [outputResult237 objectForKey:@"address_components"]; NSMutableArray* address_components4; if ( outputResult237Address_components238 != nil && ![outputResult237Address_components238 isEqual:[NSNull null]]) { address_components4 = [NSMutableArray arrayWithCapacity:[outputResult237Address_components238 count]]; for ( id item in outputResult237Address_components238) { GoogleAddressComponent* GoogleAddressComponent239; GoogleAddressComponent239 = [GoogleAddressComponent new]; GoogleAddressComponent239.longName = ( tmp = [item objectForKey:@"long_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); GoogleAddressComponent239.shortName = ( tmp = [item objectForKey:@"short_name"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); NSArray* itemTypes240 = [item objectForKey:@"types"]; NSMutableArray* types7; if ( itemTypes240 != nil && ![itemTypes240 isEqual:[NSNull null]]) { types7 = [NSMutableArray arrayWithCapacity:[itemTypes240 count]]; for ( id item in itemTypes240) { [types7 addObject:item]; } } GoogleAddressComponent239.types = types7; [address_components4 addObject:GoogleAddressComponent239]; } } GooglePlaceDetails236.addressComponents = address_components4; // ... GoogleDetailsResult235.result = GooglePlaceDetails236; GoogleDetailsResult235.status = ( tmp = [output objectForKey:@"status"], [tmp isEqual:[NSNull null]] ? nil : (NSString*)tmp ); return GoogleDetailsResult235; }
? . , IFTransport:
@protocol IFTransport - (void)setRequestParams:(NSDictionary*)params; - (BOOL)writeAll:(NSData*)data prefix:(NSString*)prefix error:(NSError* __autoreleasing*)error; - (NSData*)readAll; @end
IFHTTPTransport, NSURLConnection HTTP(S). JSON-, POST. — GET. HTTP 200 202 , NSError . URL- -, IFHTTPTransport (Protected). :
- (NSMutableURLRequest*)prepareRequestWithURL:(NSURL*)url data:(NSData*)data; - (NSString*)buildRequestParamsString:(NSDictionary*)requestParams; - (BOOL)shouldBreakOnError:(NSError*)error;
IFTransport . . , , . , , .
RPC- :
NSURL* googleURL = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api"]; id<IFTransport> transport = [[IFHTTPTransport alloc] initWithURL:googleURL]; self.google = [[google alloc] initWithTransport:transport];
? , , . : -, ARC, . -, NSJSONSerialization, . , ifacegen . , python , .
: , , . . , . , , .
: prerequest "string" , . , . IDL, -.
? Bitbucket. IDL. .
$ git clone https://bitbucket.org/ifreefree/ifacegen.git
Source: https://habr.com/ru/post/213697/
All Articles