SGAPI
SGAPI is an iOS SDK for querying the SeatGeek Platform API, a comprehensive directory of live events in the United States and Canada.
CocoaPods Setup
pod 'SGAPI'
Example Usage
SGAPI provides model classes SGEvent, SGPerformer, SGVenue, and item set
classes SGEventSet, SGPerformerSet, SGVenueSet for paginated fetching.
#import <SGAPI/SGAPI>Fetching Events
Create SGEventSet instances to fetch paginated SGEvent results. See the
SeatGeek Platform docs for available query parameters.
// find all 'new york mets' events
SGEventSet *events = SGEventSet.eventsSet;
events.query.search = @"new york mets";
events.query.perPage = 30;The onPageLoaded block property is called on successful page load. The onPageLoadFailed
block property is called when a request fails.
events.onPageLoaded = ^(NSOrderedSet *results) {
for (SGEvent *event in results) {
NSLog(@"event: %@", event.title);
}
};
events.onPageLoadFailed = ^(NSError *error) {
NSLog(@"error: %@", error);
};[events fetchNextPage];
Fetching Performers
Create SGPerformerSet instances to fetch paginated SGPerformer results. See the
SeatGeek Platform docs for available query
parameters.
// find all performers matching 'imagine dragons'
SGPerformerSet *performers = SGPerformerSet.performersSet;
performers.query.search = @"imagine dragons";performers.onPageLoaded = ^(NSOrderedSet *results) {
if (results.count) {
SGPerformer *performer = results[0];
NSLog(@"performer: %@", performer.name);
}
};[performers fetchNextPage];
Fetching Venues
Create SGVenueSet instances to fetch paginated SGVenue objects. See the
SeatGeek Platform docs for available query parameters.
// find all venues matching 'new york'
SGVenueSet *venues = SGVenueSet.venuesSet;
venues.query.search = @"new york";venues.onPageLoaded = ^(NSOrderedSet *results) {
for (SGVenue *venue in results) {
NSLog(@"venue: %@", venue.name);
}
};[performers fetchNextPage];
Familiar Item Set Properties
Item sets (SGEventSet, SGPerformerSet, SGVenueSet) support subscripting and common set
properties.
// count, firstObject, and lastObject
if (events.count) {
NSLog(@"first event: %@", [events.firstObject title]);
NSLog(@"last event: %@", [events.lastObject title]);
}
// subscripting
if (events.count >= 3) {
NSLog(@"third event: %@", [events[2] title]);
}
// iterate over an NSArray of SGEvents in the set
for (SGEvent *event in events.array) {
NSLog(@"event: %@", event.title);
}
// iterate over an NSOrderedSet of SGEvents in the set
for (SGEvent *event in events.orderedSet) {
NSLog(@"event: %@", event.title);
}SGQuery
You can modify the query of each set to change default values and filters.
events.query.perPage = 100;
events.query.location = CLLocationCoordinate2DMake(40.752, -73.972) // New York City
events.query.range = @"200mi" // 200 mile search rangeIf you would rather use your own network fetching code, you can construct standalone SGQuery
instances for URL construction.
SGQuery *query = SGQuery.eventsQuery;
[query addFilter:@"taxonomies.name" value:@"sports"];
query.search = @"new york";
NSLog(@"%@", query.URL);
// http://api.seatgeek.com/2/events?q=new+york&taxonomies.name=sports