SGAPI is an iOS SDK for querying the SeatGeek Platform API, a comprehensive directory of live events in the United States and Canada.
pod 'SGAPI'
SGAPI
provides model classes SGKEvent
, SGPerformer
, SGVenue
, and item set
classes SGKEventSet
, SGPerformerSet
, SGVenueSet
for paginated fetching.
#import <SGAPI/SGAPI>
Create SGKEventSet
instances to fetch paginated SGKEvent
results. See the
SeatGeek Platform docs for available query parameters.
// find all 'new york mets' events
SGKEventSet *events = SGKEventSet.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 (SGKEvent *event in results) {
NSLog(@"event: %@", event.title);
}
};
events.onPageLoadFailed = ^(NSError *error) {
NSLog(@"error: %@", error);
};
[events fetchNextPage];
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];
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];
Item sets (SGKEventSet
, 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 SGKEvent in the set
for (SGKEvent *event in events.array) {
NSLog(@"event: %@", event.title);
}
// iterate over an NSOrderedSet of SGKEvent in the set
for (SGKEvent *event in events.orderedSet) {
NSLog(@"event: %@", event.title);
}
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 range
If 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