https://github.com/seatgeek/sgapi
The SG Api SDK for iOS
https://github.com/seatgeek/sgapi
Last synced: 3 months ago
JSON representation
The SG Api SDK for iOS
- Host: GitHub
- URL: https://github.com/seatgeek/sgapi
- Owner: seatgeek
- License: bsd-2-clause
- Created: 2014-07-01T15:16:47.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2021-05-24T18:42:20.000Z (almost 4 years ago)
- Last Synced: 2024-04-24T14:58:44.760Z (about 1 year ago)
- Language: Objective-C
- Homepage:
- Size: 149 KB
- Stars: 11
- Watchers: 112
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.markdown
- Changelog: CHANGELOG.markdown
- License: LICENSE
Awesome Lists containing this project
README
## SGAPI
SGAPI is an iOS SDK for querying the [SeatGeek Platform API](http://platform.seatgeek.com),
a comprehensive directory of live events in the United States and Canada.### CocoaPods Setup
```
pod 'SGAPI'
```### Example Usage
`SGAPI` provides model classes `SGKEvent`, `SGPerformer`, `SGVenue`, and item set
classes `SGKEventSet`, `SGPerformerSet`, `SGVenueSet` for paginated fetching.```objc
#import
```### Fetching Events
Create `SGKEventSet` instances to fetch paginated `SGKEvent` results. See the
[SeatGeek Platform docs](http://platform.seatgeek.com/#events) for available query parameters.```objc
// 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.
```objc
events.onPageLoaded = ^(NSOrderedSet *results) {
for (SGKEvent *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](http://platform.seatgeek.com/#performers) for available query
parameters.```objc
// find all performers matching 'imagine dragons'
SGPerformerSet *performers = SGPerformerSet.performersSet;
performers.query.search = @"imagine dragons";
``````objc
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](http://platform.seatgeek.com/#venues) for available query parameters.```objc
// find all venues matching 'new york'
SGVenueSet *venues = SGVenueSet.venuesSet;
venues.query.search = @"new york";
``````objc
venues.onPageLoaded = ^(NSOrderedSet *results) {
for (SGVenue *venue in results) {
NSLog(@"venue: %@", venue.name);
}
};
``````
[performers fetchNextPage];
```### Familiar Item Set Properties
Item sets (`SGKEventSet`, `SGPerformerSet`, `SGVenueSet`) support subscripting and common set
properties.```objc
// 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);
}
```### SGQuery
You can modify the `query` of each set to change default values and filters.
```objc
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.```objc
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
```