gogokit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. checksums.yaml +15 -0
  2. data/LICENSE.txt +19 -0
  3. data/README.md +18 -0
  4. data/Rakefile +12 -0
  5. data/gogokit.gemspec +27 -0
  6. data/lib/gogokit.rb +6 -0
  7. data/lib/gogokit/client.rb +171 -0
  8. data/lib/gogokit/client/category.rb +39 -0
  9. data/lib/gogokit/client/country.rb +38 -0
  10. data/lib/gogokit/client/currency.rb +38 -0
  11. data/lib/gogokit/client/event.rb +41 -0
  12. data/lib/gogokit/client/language.rb +38 -0
  13. data/lib/gogokit/client/listing.rb +41 -0
  14. data/lib/gogokit/client/metro_area.rb +39 -0
  15. data/lib/gogokit/client/oauth.rb +55 -0
  16. data/lib/gogokit/client/root.rb +24 -0
  17. data/lib/gogokit/client/search.rb +27 -0
  18. data/lib/gogokit/client/venue.rb +39 -0
  19. data/lib/gogokit/configuration.rb +40 -0
  20. data/lib/gogokit/connection.rb +34 -0
  21. data/lib/gogokit/default.rb +10 -0
  22. data/lib/gogokit/error.rb +12 -0
  23. data/lib/gogokit/middleware/raise_error.rb +27 -0
  24. data/lib/gogokit/money.rb +19 -0
  25. data/lib/gogokit/oauth_token.rb +21 -0
  26. data/lib/gogokit/paged_resource.rb +23 -0
  27. data/lib/gogokit/resource.rb +18 -0
  28. data/lib/gogokit/resource/category.rb +43 -0
  29. data/lib/gogokit/resource/country.rb +27 -0
  30. data/lib/gogokit/resource/currency.rb +27 -0
  31. data/lib/gogokit/resource/event.rb +54 -0
  32. data/lib/gogokit/resource/language.rb +27 -0
  33. data/lib/gogokit/resource/listing.rb +89 -0
  34. data/lib/gogokit/resource/listing_note.rb +17 -0
  35. data/lib/gogokit/resource/metro_area.rb +29 -0
  36. data/lib/gogokit/resource/root.rb +15 -0
  37. data/lib/gogokit/resource/search_result.rb +52 -0
  38. data/lib/gogokit/resource/ticket_type.rb +17 -0
  39. data/lib/gogokit/resource/venue.rb +49 -0
  40. data/lib/gogokit/seating.rb +19 -0
  41. data/lib/gogokit/utils.rb +18 -0
  42. data/lib/gogokit/version.rb +17 -0
  43. metadata +155 -0
@@ -0,0 +1,43 @@
1
+ require 'gogokit/resource'
2
+ require 'gogokit/paged_resource'
3
+ require 'gogokit/money'
4
+ require 'roar/coercion'
5
+
6
+ module GogoKit
7
+ # Represents a grouping of events or other categories
8
+ #
9
+ # @see http://viagogo.github.io/developer.viagogo.net/#category
10
+ class Category < Resource
11
+ attr_accessor :id,
12
+ :name,
13
+ :description_html,
14
+ :min_ticket_price,
15
+ :min_event_date,
16
+ :max_event_date
17
+ end
18
+
19
+ module CategoryRepresenter
20
+ include Representable::JSON
21
+ include GogoKit::ResourceRepresenter
22
+
23
+ property :id
24
+ property :name
25
+ property :description_html
26
+ property :min_ticket_price,
27
+ extend: GogoKit::MoneyRepresenter,
28
+ class: GogoKit::Money,
29
+ skip_parse: ->(fragment, _) { fragment.nil? }
30
+ property :min_event_date, type: DateTime
31
+ property :max_event_date, type: DateTime
32
+ end
33
+
34
+ module CategoriesRepresenter
35
+ include Representable::JSON
36
+ include GogoKit::PagedResourceRepresenter
37
+
38
+ collection :items,
39
+ class: Category,
40
+ extend: CategoryRepresenter,
41
+ embedded: true
42
+ end
43
+ end
@@ -0,0 +1,27 @@
1
+ require 'gogokit/resource'
2
+
3
+ module GogoKit
4
+ # @see http://viagogo.github.io/developer.viagogo.net/#country
5
+ class Country < Resource
6
+ attr_accessor :code,
7
+ :name
8
+ end
9
+
10
+ module CountryRepresenter
11
+ include Representable::JSON
12
+ include GogoKit::ResourceRepresenter
13
+
14
+ property :code
15
+ property :name
16
+ end
17
+
18
+ module CountriesRepresenter
19
+ include Representable::JSON
20
+ include GogoKit::PagedResourceRepresenter
21
+
22
+ collection :items,
23
+ class: Country,
24
+ extend: CountryRepresenter,
25
+ embedded: true
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ require 'gogokit/resource'
2
+
3
+ module GogoKit
4
+ # @see http://viagogo.github.io/developer.viagogo.net/#currency
5
+ class Currency < Resource
6
+ attr_accessor :code,
7
+ :name
8
+ end
9
+
10
+ module CurrencyRepresenter
11
+ include Representable::JSON
12
+ include GogoKit::ResourceRepresenter
13
+
14
+ property :code
15
+ property :name
16
+ end
17
+
18
+ module CurrenciesRepresenter
19
+ include Representable::JSON
20
+ include GogoKit::PagedResourceRepresenter
21
+
22
+ collection :items,
23
+ class: Currency,
24
+ extend: CurrencyRepresenter,
25
+ embedded: true
26
+ end
27
+ end
@@ -0,0 +1,54 @@
1
+ require 'gogokit/resource'
2
+ require 'gogokit/paged_resource'
3
+ require 'gogokit/money'
4
+ require 'gogokit/resource/venue'
5
+ require 'roar/coercion'
6
+
7
+ module GogoKit
8
+ # An event on the viagogo platform.
9
+ #
10
+ # @see http://viagogo.github.io/developer.viagogo.net/#event
11
+ class Event < Resource
12
+ attr_accessor :id,
13
+ :name,
14
+ :start_date,
15
+ :end_date,
16
+ :date_confirmed,
17
+ :min_ticket_price,
18
+ :notes_html,
19
+ :restrictions_html,
20
+ :venue
21
+ end
22
+
23
+ module EventRepresenter
24
+ include Representable::JSON
25
+ include GogoKit::ResourceRepresenter
26
+
27
+ property :id
28
+ property :name
29
+ property :start_date, type: DateTime
30
+ property :end_date, type: DateTime
31
+ property :date_confirmed
32
+ property :min_ticket_price,
33
+ class: GogoKit::Money,
34
+ extend: GogoKit::MoneyRepresenter,
35
+ skip_parse: ->(fragment, _) { fragment.nil? }
36
+ property :notes_html
37
+ property :restrictions_html
38
+ property :venue,
39
+ class: Venue,
40
+ extend: VenueRepresenter,
41
+ skip_parse: ->(fragment, _) { fragment.nil? },
42
+ embedded: true
43
+ end
44
+
45
+ module EventsRepresenter
46
+ include Representable::JSON
47
+ include GogoKit::PagedResourceRepresenter
48
+
49
+ collection :items,
50
+ class: Event,
51
+ extend: EventRepresenter,
52
+ embedded: true
53
+ end
54
+ end
@@ -0,0 +1,27 @@
1
+ require 'gogokit/resource'
2
+
3
+ module GogoKit
4
+ # @see http://viagogo.github.io/developer.viagogo.net/#language
5
+ class Language < Resource
6
+ attr_accessor :code,
7
+ :name
8
+ end
9
+
10
+ module LanguageRepresenter
11
+ include Representable::JSON
12
+ include GogoKit::ResourceRepresenter
13
+
14
+ property :code
15
+ property :name
16
+ end
17
+
18
+ module LanguagesRepresenter
19
+ include Representable::JSON
20
+ include GogoKit::PagedResourceRepresenter
21
+
22
+ collection :items,
23
+ class: Language,
24
+ extend: LanguageRepresenter,
25
+ embedded: true
26
+ end
27
+ end
@@ -0,0 +1,89 @@
1
+ require 'gogokit/resource'
2
+ require 'gogokit/resource/listing_note'
3
+ require 'gogokit/resource/ticket_type'
4
+ require 'gogokit/money'
5
+ require 'gogokit/seating'
6
+
7
+ module GogoKit
8
+ # A set of tickets for sale on the viagogo marketplace
9
+ #
10
+ # @see http://viagogo.github.io/developer.viagogo.net/#listing
11
+ class Listing < Resource
12
+ attr_accessor :id,
13
+ :number_of_tickets,
14
+ :seating,
15
+ :pickup_available,
16
+ :download_available,
17
+ :ticket_price,
18
+ :estimated_ticket_price,
19
+ :estimated_total_ticket_price,
20
+ :estimated_booking_fee,
21
+ :estimated_shipping,
22
+ :estimated_vat,
23
+ :estimated_total_charge,
24
+ :ticket_type,
25
+ :listing_notes
26
+ end
27
+
28
+ module ListingRepresenter
29
+ include Representable::JSON
30
+ include GogoKit::ResourceRepresenter
31
+
32
+ property :id
33
+ property :number_of_tickets
34
+ property :seating,
35
+ extend: GogoKit::SeatingRepresenter,
36
+ class: GogoKit::Seating,
37
+ skip_parse: ->(fragment, _) { fragment.nil? }
38
+ property :pickup_available
39
+ property :download_available
40
+ property :ticket_price,
41
+ extend: GogoKit::MoneyRepresenter,
42
+ class: GogoKit::Money,
43
+ skip_parse: ->(fragment, _) { fragment.nil? }
44
+ property :estimated_ticket_price,
45
+ extend: GogoKit::MoneyRepresenter,
46
+ class: GogoKit::Money,
47
+ skip_parse: ->(fragment, _) { fragment.nil? }
48
+ property :estimated_total_ticket_price,
49
+ extend: GogoKit::MoneyRepresenter,
50
+ class: GogoKit::Money,
51
+ skip_parse: ->(fragment, _) { fragment.nil? }
52
+ property :estimated_booking_fee,
53
+ extend: GogoKit::MoneyRepresenter,
54
+ class: GogoKit::Money,
55
+ skip_parse: ->(fragment, _) { fragment.nil? }
56
+ property :estimated_shipping,
57
+ extend: GogoKit::MoneyRepresenter,
58
+ class: GogoKit::Money,
59
+ skip_parse: ->(fragment, _) { fragment.nil? }
60
+ property :estimated_vat,
61
+ extend: GogoKit::MoneyRepresenter,
62
+ class: GogoKit::Money,
63
+ skip_parse: ->(fragment, _) { fragment.nil? }
64
+ property :estimated_total_charge,
65
+ extend: GogoKit::MoneyRepresenter,
66
+ class: GogoKit::Money,
67
+ skip_parse: ->(fragment, _) { fragment.nil? }
68
+ property :ticket_type,
69
+ extend: GogoKit::TicketTypeRepresenter,
70
+ class: GogoKit::TicketType,
71
+ skip_parse: ->(fragment, _) { fragment.nil? },
72
+ embedded: true
73
+ collection :listing_notes,
74
+ extend: GogoKit::ListingNoteRepresenter,
75
+ class: GogoKit::ListingNote,
76
+ skip_parse: ->(fragment, _) { fragment.nil? },
77
+ embedded: true
78
+ end
79
+
80
+ module ListingsRepresenter
81
+ include Representable::JSON
82
+ include GogoKit::PagedResourceRepresenter
83
+
84
+ collection :items,
85
+ class: Listing,
86
+ extend: ListingRepresenter,
87
+ embedded: true
88
+ end
89
+ end
@@ -0,0 +1,17 @@
1
+ require 'gogokit/resource'
2
+
3
+ module GogoKit
4
+ # @see http://viagogo.github.io/developer.viagogo.net/#listingnote
5
+ class ListingNote < Resource
6
+ attr_accessor :id,
7
+ :note
8
+ end
9
+
10
+ module ListingNoteRepresenter
11
+ include Representable::JSON
12
+ include GogoKit::ResourceRepresenter
13
+
14
+ property :id
15
+ property :note
16
+ end
17
+ end
@@ -0,0 +1,29 @@
1
+ require 'gogokit/resource'
2
+
3
+ module GogoKit
4
+ # A metropolitan region that contains venues where events are taking place
5
+ #
6
+ # @see http://viagogo.github.io/developer.viagogo.net/#metroarea
7
+ class MetroArea < Resource
8
+ attr_accessor :id,
9
+ :name
10
+ end
11
+
12
+ module MetroAreaRepresenter
13
+ include Representable::JSON
14
+ include GogoKit::ResourceRepresenter
15
+
16
+ property :id
17
+ property :name
18
+ end
19
+
20
+ module MetroAreasRepresenter
21
+ include Representable::JSON
22
+ include GogoKit::PagedResourceRepresenter
23
+
24
+ collection :items,
25
+ class: MetroArea,
26
+ extend: MetroAreaRepresenter,
27
+ embedded: true
28
+ end
29
+ end
@@ -0,0 +1,15 @@
1
+ require 'gogokit/resource'
2
+
3
+ module GogoKit
4
+ # The root of the viagogo API service.
5
+ #
6
+ # @see http://viagogo.github.io/developer.viagogo.net/#root
7
+ class Root < Resource
8
+ end
9
+
10
+ # A representer for {GogoKit::Root}
11
+ module RootRepresenter
12
+ include Representable::JSON
13
+ include GogoKit::ResourceRepresenter
14
+ end
15
+ end
@@ -0,0 +1,52 @@
1
+ require 'gogokit/resource'
2
+ require 'gogokit/paged_resource'
3
+ require 'gogokit/resource/category'
4
+ require 'gogokit/resource/event'
5
+ require 'gogokit/resource/metro_area'
6
+ require 'gogokit/resource/venue'
7
+
8
+ module GogoKit
9
+ # A result of a search query
10
+ #
11
+ # @see http://viagogo.github.io/developer.viagogo.net/#searchresult
12
+ class SearchResult < Resource
13
+ attr_accessor :title,
14
+ :type,
15
+ :type_description,
16
+ :event,
17
+ :category,
18
+ :metro_area,
19
+ :venue
20
+ end
21
+
22
+ # Representer for {GogoKit::SearchResult}
23
+ module SearchResultRepresenter
24
+ include Representable::JSON
25
+ include GogoKit::ResourceRepresenter
26
+
27
+ property :title
28
+ property :type
29
+ property :type_description
30
+ property :event, class: Event, extend: EventRepresenter, embedded: true
31
+ property :category,
32
+ class: Category,
33
+ extend: CategoryRepresenter,
34
+ embedded: true
35
+ property :metro_area,
36
+ class: MetroArea,
37
+ extend: MetroAreaRepresenter,
38
+ embedded: true
39
+ property :venue, class: Venue, extend: VenueRepresenter, embedded: true
40
+ end
41
+
42
+ # Representer for a {GogoKit::Page} of {GogoKit::SearchResult}s
43
+ module SearchResultsRepresenter
44
+ include Representable::JSON
45
+ include GogoKit::PagedResourceRepresenter
46
+
47
+ collection :items,
48
+ class: SearchResult,
49
+ extend: SearchResultRepresenter,
50
+ embedded: true
51
+ end
52
+ end
@@ -0,0 +1,17 @@
1
+ require 'gogokit/resource'
2
+
3
+ module GogoKit
4
+ # @see http://viagogo.github.io/developer.viagogo.net/#tickettype
5
+ class TicketType < Resource
6
+ attr_accessor :type,
7
+ :name
8
+ end
9
+
10
+ module TicketTypeRepresenter
11
+ include Representable::JSON
12
+ include GogoKit::ResourceRepresenter
13
+
14
+ property :type
15
+ property :name
16
+ end
17
+ end
@@ -0,0 +1,49 @@
1
+ require 'gogokit/resource'
2
+ require 'gogokit/resource/country'
3
+
4
+ module GogoKit
5
+ # A location where an event takes place.
6
+ #
7
+ # @see http://viagogo.github.io/developer.viagogo.net/#venue
8
+ class Venue < Resource
9
+ attr_accessor :id,
10
+ :name,
11
+ :address_1,
12
+ :address_2,
13
+ :city,
14
+ :state_province,
15
+ :postal_code,
16
+ :latitude,
17
+ :longitude,
18
+ :country
19
+ end
20
+
21
+ module VenueRepresenter
22
+ include Representable::JSON
23
+ include GogoKit::ResourceRepresenter
24
+
25
+ property :id
26
+ property :name
27
+ property :address_1
28
+ property :address_2
29
+ property :city
30
+ property :state_province
31
+ property :postal_code
32
+ property :latitude
33
+ property :longitude
34
+ property :country,
35
+ class: Country,
36
+ extend: CountryRepresenter,
37
+ embedded: true
38
+ end
39
+
40
+ module VenuesRepresenter
41
+ include Representable::JSON
42
+ include GogoKit::PagedResourceRepresenter
43
+
44
+ collection :items,
45
+ class: Venue,
46
+ extend: VenueRepresenter,
47
+ embedded: true
48
+ end
49
+ end