It is terrible to think, but some ten years ago the development of the system of the most reliable RPC was a whole celebration in the life of a developer. Painful and long holiday, like a wedding for a horse: head in flowers, ass in soap. It was terribly exciting and at the same time incredibly fast. One choice of protocol was worth it. I'm not talking about the fight against the powerful and monstrous frameworks, such as DCOM or CORBA. The implementation of the transport level was generally a lot of people with long beards."{\"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.gitmaps.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.gitmaps.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.gitmaps.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.gitmaps.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.gitmaps.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.gitmaps.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.gitmaps.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.gitmaps.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