ticketmaster-sdk 0.0.02

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.
@@ -0,0 +1,33 @@
1
+ require 'faraday'
2
+ require 'json'
3
+ require_relative 'configuration'
4
+
5
+ module Ticketmaster
6
+ class Request
7
+ include Configuration
8
+
9
+ attr_accessor :path, :params, :client, :method
10
+
11
+ def initialize(path, params, client)
12
+ self.path = path
13
+ self.params = params
14
+ self.client = client
15
+ end
16
+
17
+ def get
18
+ conn = Faraday.new(:url => 'https://app.ticketmaster.com')
19
+ response = conn.get path, formatted_params
20
+ JSON.parse(response.body)
21
+ end
22
+
23
+ private
24
+
25
+ def formatted_params
26
+ params.delete_if {|key, value| !PERMITTED_PARAMS.include? key }
27
+ params[:apikey] ||= client.apikey
28
+ params[:format] = 'json'
29
+ params
30
+ end
31
+ end
32
+ end
33
+
@@ -0,0 +1,27 @@
1
+ module Ticketmaster
2
+ class Result
3
+ attr_accessor :data, :request
4
+
5
+ def initialize(data, request)
6
+ self.data = data
7
+ self.request = request
8
+ end
9
+
10
+ def self.create(data, request, type)
11
+ Object.const_get(type).new(data, request)
12
+ end
13
+
14
+ def self.search(data, request, type)
15
+ result = Ticketmaster::Search.new(data, request)
16
+ result.type = type
17
+ result
18
+ end
19
+
20
+ def self.array(data, request, type)
21
+ return [] if data.nil? || data.empty?
22
+ results = data.map do |item|
23
+ Object.const_get(type).new(item, request)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,36 @@
1
+ module Ticketmaster
2
+ class Attraction < Result
3
+ def id
4
+ data['id']
5
+ end
6
+
7
+ def name
8
+ data['name']
9
+ end
10
+
11
+ def type
12
+ data['type']
13
+ end
14
+
15
+ def url
16
+ data['url']
17
+ end
18
+
19
+ def locale
20
+ data['locale']
21
+ end
22
+
23
+ def images
24
+ images = Result.array(data['images'], request, 'Ticketmaster::Image')
25
+ end
26
+
27
+ def classifications
28
+ Result.array(data['classifications'], request, 'Ticketmaster::Classification')
29
+ end
30
+
31
+ def reload
32
+ data = request.client.get_attraction(id).data
33
+ self
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,28 @@
1
+ module Ticketmaster
2
+ class Classification < Result
3
+ def id
4
+ data['id'] || data['segment']['id']
5
+ end
6
+
7
+ def name
8
+ data['name'] || data['segment']['name']
9
+ end
10
+
11
+ def genres
12
+ Result.array(data['segment']['_embedded']['genres'], request, 'Ticketmaster::Classification') if data['segment']['_embedded']['genres']
13
+ end
14
+
15
+ def subgenres
16
+ Result.array(data['segment']['_embedded']['subgenres'], request, 'Ticketmaster::Classification') if data['segment']['_embedded']['subgenres']
17
+ end
18
+
19
+ def type
20
+ data['_links']['self']['href'].match(/(?<=\/discovery\/v\d\/)[a-z\/]+(?=\/)/)[0]
21
+ end
22
+
23
+ def reload
24
+ data = request.client.get_classification(id, type).data
25
+ self
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,61 @@
1
+ module Ticketmaster
2
+ class Event < Result
3
+ def id
4
+ data['id']
5
+ end
6
+
7
+ def name
8
+ data['name']
9
+ end
10
+
11
+ def description
12
+ data['description']
13
+ end
14
+
15
+ def embedded
16
+ data['_embedded']
17
+ end
18
+
19
+ def dates
20
+ data['dates']
21
+ end
22
+
23
+ def start
24
+ dates['start']
25
+ end
26
+
27
+ def end
28
+ dates['end']
29
+ end
30
+
31
+ def timezone
32
+ dates['timezone']
33
+ end
34
+
35
+ def images
36
+ images = Result.array(data['images'], request, 'Ticketmaster::Image')
37
+ images ||= get_images
38
+ end
39
+
40
+ def get_images
41
+ request.client.get_event_images(id)
42
+ end
43
+
44
+ def classifications
45
+ Result.array(data['classifications'], request, 'Ticketmaster::Classification')
46
+ end
47
+
48
+ def attractions
49
+ Result.array(embedded['attractions'], request, 'Ticketmaster::Attraction')
50
+ end
51
+
52
+ def venues
53
+ Result.array(embedded['venues'], request, 'Ticketmaster::Venue')
54
+ end
55
+
56
+ def reload
57
+ data = request.client.get_event(id).data
58
+ self
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,23 @@
1
+ module Ticketmaster
2
+ class Image < Result
3
+ def url
4
+ data['url']
5
+ end
6
+
7
+ def ratio
8
+ data['ratio']
9
+ end
10
+
11
+ def width
12
+ data['width']
13
+ end
14
+
15
+ def height
16
+ data['height']
17
+ end
18
+
19
+ def is_fallback?
20
+ data['fallback']
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,45 @@
1
+ module Ticketmaster
2
+ class Search < Result
3
+ attr_accessor :type
4
+
5
+ def results
6
+ data['_embedded'][type].map do |event|
7
+ Result.create(event, request, "Ticketmaster::#{type.capitalize.chop}")
8
+ end
9
+ end
10
+
11
+ def current_page
12
+ data['page']['number']
13
+ end
14
+
15
+ def total_pages
16
+ data['page']['totalPages']
17
+ end
18
+
19
+ def next_page
20
+ current_page + 1 if current_page < total_pages
21
+ end
22
+
23
+ def previous_page
24
+ current_page - 1 if current_page > 0
25
+ end
26
+
27
+ def next_result
28
+ if next_page
29
+ params = request.params.merge(page: next_page)
30
+ result = request.client.send "search_#{type}".to_sym, params: params
31
+ end
32
+ end
33
+
34
+ def previous_result
35
+ if previous_page
36
+ params = request.params.merge(page: previous_page)
37
+ result = request.client.send "search_#{type}".to_sym, params: params
38
+ end
39
+ end
40
+
41
+ def reload
42
+ data = request.get
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,52 @@
1
+ module Ticketmaster
2
+ class Venue < Result
3
+ def id
4
+ data['id']
5
+ end
6
+
7
+ def name
8
+ data['name']
9
+ end
10
+
11
+ def address
12
+ data['address']
13
+ end
14
+
15
+ def state
16
+ data['state']
17
+ end
18
+
19
+ def city
20
+ data['city']['name']
21
+ end
22
+
23
+ def country
24
+ data['country']['name']
25
+ end
26
+
27
+ def country_code
28
+ data['country']['countryCode']
29
+ end
30
+
31
+ def location
32
+ data['location']
33
+ end
34
+
35
+ def timezone
36
+ data['timezone']
37
+ end
38
+
39
+ def postal_code
40
+ data['postalCode']
41
+ end
42
+
43
+ def url
44
+ data['url']
45
+ end
46
+
47
+ def reload
48
+ data = request.client.get_venue(id).data
49
+ self
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,60 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://app.ticketmaster.com/discovery/v2/attractions/K8vZ9171ya0?apikey=TEST&format=json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Headers:
22
+ - origin, x-requested-with, accept
23
+ Access-Control-Allow-Methods:
24
+ - GET, PUT, POST, DELETE
25
+ Access-Control-Allow-Origin:
26
+ - "*"
27
+ Access-Control-Max-Age:
28
+ - '3628800'
29
+ Content-Type:
30
+ - application/hal+json;charset=utf-8
31
+ Date:
32
+ - Wed, 15 Jun 2016 14:56:14 GMT
33
+ Rate-Limit:
34
+ - '500000'
35
+ Rate-Limit-Available:
36
+ - '499968'
37
+ Rate-Limit-Over:
38
+ - '0'
39
+ Rate-Limit-Reset:
40
+ - '1466057554290'
41
+ Server:
42
+ - Apache-Coyote/1.1
43
+ Set-Cookie:
44
+ - CMPS=y27uAjbRd0UgMoWNoPOBeHTSXFhVJGSiXFMfck7MD8rJiuiZL+p/9ZgEnsXWySqZrs3dCjbEdwo=;
45
+ path=/
46
+ X-Application-Context:
47
+ - application:local,default,jphx1:8080
48
+ X-Unknown-Params:
49
+ - format
50
+ Content-Length:
51
+ - '1671'
52
+ Connection:
53
+ - keep-alive
54
+ body:
55
+ encoding: UTF-8
56
+ string: '{"name":"#SummersEND Music Festival","type":"attraction","id":"K8vZ9171ya0","test":false,"url":"http://ticketmaster.com/artist/899742","locale":"en-us","images":[{"ratio":"3_2","url":"http://s1.ticketm.net/dam/c/MUSIC_TABLET_LANDSCAPE_3_2.jpg","width":1024,"height":683,"fallback":true},{"ratio":"16_9","url":"https://s1.ticketm.net/dbimages/147984a.jpg","width":205,"height":115,"fallback":false},{"ratio":"3_2","url":"http://s1.ticketm.net/dam/c/MUSIC_ARTIST_PAGE_3_2.jpg","width":305,"height":203,"fallback":true},{"ratio":"16_9","url":"http://s1.ticketm.net/dam/c/MUSIC_RECOMENDATION_16_9.jpg","width":100,"height":56,"fallback":true},{"ratio":"16_9","url":"http://s1.ticketm.net/dam/c/MUSIC_TABLET_LANDSCAPE_LARGE_16_9.jpg","width":2048,"height":1152,"fallback":true},{"ratio":"3_2","url":"http://s1.ticketm.net/dam/c/MUSIC_RETINA_PORTRAIT_3_2.jpg","width":640,"height":427,"fallback":true},{"ratio":"4_3","url":"https://s1.ticketm.net/dbimages/147983a.jpg","width":305,"height":225,"fallback":false},{"ratio":"16_9","url":"http://s1.ticketm.net/dam/c/MUSIC_TABLET_LANDSCAPE_16_9.jpg","width":1024,"height":576,"fallback":true},{"ratio":"16_9","url":"http://s1.ticketm.net/dam/c/MUSIC_RETINA_PORTRAIT_16_9.jpg","width":640,"height":360,"fallback":true},{"ratio":"16_9","url":"http://s1.ticketm.net/dam/c/MUSIC_RETINA_LANDSCAPE_16_9.jpg","width":1136,"height":639,"fallback":true}],"classifications":[{"primary":true,"segment":{"id":"KZFzniwnSyZfZ7v7nJ","name":"Music"},"genre":{"id":"KnvZfZ7vAvF","name":"Dance/Electronic"},"subGenre":{"id":"KZazBEonSMnZfZ7vAJ1","name":"Club
57
+ Dance"}}],"_links":{"self":{"href":"/discovery/v2/attractions/K8vZ9171ya0?locale=en-us"}}}'
58
+ http_version:
59
+ recorded_at: Wed, 15 Jun 2016 14:56:16 GMT
60
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,61 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://app.ticketmaster.com/discovery/v2/classifications/KZFzniwnSyZfZ7v7nn?apikey=TEST&format=json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Headers:
22
+ - origin, x-requested-with, accept
23
+ Access-Control-Allow-Methods:
24
+ - GET, PUT, POST, DELETE
25
+ Access-Control-Allow-Origin:
26
+ - "*"
27
+ Access-Control-Max-Age:
28
+ - '3628800'
29
+ Content-Type:
30
+ - application/hal+json;charset=utf-8
31
+ Date:
32
+ - Wed, 15 Jun 2016 14:56:12 GMT
33
+ Rate-Limit:
34
+ - '500000'
35
+ Rate-Limit-Available:
36
+ - '499970'
37
+ Rate-Limit-Over:
38
+ - '0'
39
+ Rate-Limit-Reset:
40
+ - '1466057554290'
41
+ Server:
42
+ - Apache-Coyote/1.1
43
+ Set-Cookie:
44
+ - CMPS=KEIEHVFZtbyGegs5TOE56rZGGlJGViXrx6IEqALGoyrXeqlhu2J6BrH1bG2G07tw0Ot8aWIAiaI=;
45
+ path=/
46
+ Vary:
47
+ - Accept-Encoding
48
+ X-Application-Context:
49
+ - application:local,default,jphx1:8080
50
+ X-Unknown-Params:
51
+ - format
52
+ Content-Length:
53
+ - '3815'
54
+ Connection:
55
+ - keep-alive
56
+ body:
57
+ encoding: UTF-8
58
+ string: '{"_links":{"self":{"href":"/discovery/v2/classifications/KZFzniwnSyZfZ7v7nn?locale=en-us"}},"segment":{"id":"KZFzniwnSyZfZ7v7nn","name":"Film","_links":{"self":{"href":"/discovery/v2/classifications/segments/KZFzniwnSyZfZ7v7nn?locale=en-us"}},"_embedded":{"genres":[{"id":"KnvZfZ7vAka","name":"Miscellaneous","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAka?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vFll","name":"Classic/Reissue","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vFll?locale=en-us"}}},{"id":"KZazBEonSMnZfZ7vFln","name":"Miscellaneous","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vFln?locale=en-us"}}}]}},{"id":"KnvZfZ7vAkF","name":"Family","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAkF?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vFlt","name":"Miscellaneous","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vFlt?locale=en-us"}}}]}},{"id":"KnvZfZ7vAk1","name":"Foreign","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAk1?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vavv","name":"Foreign","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vavv?locale=en-us"}}}]}},{"id":"KnvZfZ7vAkd","name":"Animation","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAkd?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vFla","name":"Animation","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vFla?locale=en-us"}}}]}},{"id":"KnvZfZ7vAkE","name":"Urban","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAkE?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vavd","name":"Urban","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vavd?locale=en-us"}}}]}},{"id":"KnvZfZ7vAke","name":"Action/Adventure","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAke?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vFlF","name":"Action/Adventure","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vFlF?locale=en-us"}}}]}},{"id":"KnvZfZ7vAkJ","name":"Music","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAkJ?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vave","name":"Music","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vave?locale=en-us"}}}]}},{"id":"KnvZfZ7vAkA","name":"Comedy","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAkA?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vFlJ","name":"Comedy","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vFlJ?locale=en-us"}}}]}},{"id":"KnvZfZ7vAk7","name":"Arthouse","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAk7?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vFl1","name":"Arthouse","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vFl1?locale=en-us"}}}]}},{"id":"KnvZfZ7vAk6","name":"Drama","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAk6?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vFlI","name":"Drama","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vFlI?locale=en-us"}}}]}},{"id":"KnvZfZ7vAkk","name":"Documentary","_links":{"self":{"href":"/discovery/v2/classifications/genres/KnvZfZ7vAkk?locale=en-us"}},"_embedded":{"subgenres":[{"id":"KZazBEonSMnZfZ7vFlE","name":"Documentary","_links":{"self":{"href":"/discovery/v2/classifications/subgenres/KZazBEonSMnZfZ7vFlE?locale=en-us"}}}]}}]}}}'
59
+ http_version:
60
+ recorded_at: Wed, 15 Jun 2016 14:56:14 GMT
61
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,186 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://app.ticketmaster.com/discovery/v2/events/1Av8ZfaGkwmkMSH?apikey=TEST&format=json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Headers:
22
+ - origin, x-requested-with, accept
23
+ Access-Control-Allow-Methods:
24
+ - GET, PUT, POST, DELETE
25
+ Access-Control-Allow-Origin:
26
+ - "*"
27
+ Access-Control-Max-Age:
28
+ - '3628800'
29
+ Content-Type:
30
+ - application/hal+json;charset=utf-8
31
+ Date:
32
+ - Wed, 15 Jun 2016 15:00:42 GMT
33
+ Rate-Limit:
34
+ - '500000'
35
+ Rate-Limit-Available:
36
+ - '499960'
37
+ Rate-Limit-Over:
38
+ - '0'
39
+ Rate-Limit-Reset:
40
+ - '1466057554290'
41
+ Server:
42
+ - Apache-Coyote/1.1
43
+ Set-Cookie:
44
+ - CMPS=et5mUEEaKhPA45GOOTLhxJcAGDB5ObHoJEY5DC/jBxJ1799TWpWLU4W7+599GDqPoiK897CBc2w=;
45
+ path=/
46
+ Vary:
47
+ - Accept-Encoding
48
+ X-Application-Context:
49
+ - application:local,default,jash1:8080
50
+ X-Unknown-Params:
51
+ - format
52
+ Content-Length:
53
+ - '5603'
54
+ Connection:
55
+ - keep-alive
56
+ body:
57
+ encoding: ASCII-8BIT
58
+ string: !binary |-
59
+ eyJuYW1lIjoiQWN1YXJpbyBJbmJ1cnNhIiwidHlwZSI6ImV2ZW50IiwiaWQi
60
+ OiIxQXY4WmZhR2t3bWtNU0giLCJ0ZXN0IjpmYWxzZSwidXJsIjoiaHR0cDov
61
+ L3RpY2tldG1hc3Rlci5jb20ubXgvZXZlbnQvMTQwMDUwOUNBRTFCN0NGQyIs
62
+ ImxvY2FsZSI6ImVuLXVzIiwiaW1hZ2VzIjpbeyJyYXRpbyI6IjNfMiIsInVy
63
+ bCI6Imh0dHA6Ly9zMS50aWNrZXRtLm5ldC9kYW0vYy9NSVNDX1RBQkxFVF9M
64
+ QU5EU0NBUEVfM18yLmpwZyIsIndpZHRoIjoxMDI0LCJoZWlnaHQiOjY4Mywi
65
+ ZmFsbGJhY2siOnRydWV9LHsicmF0aW8iOiIxNl85IiwidXJsIjoiaHR0cDov
66
+ L3MxLnRpY2tldG0ubmV0L2RhbS9jL01JU0NfVEFCTEVUX0xBTkRTQ0FQRV9M
67
+ QVJHRV8xNl85LmpwZyIsIndpZHRoIjoyMDQ4LCJoZWlnaHQiOjExNTIsImZh
68
+ bGxiYWNrIjp0cnVlfSx7InJhdGlvIjoiMTZfOSIsInVybCI6Imh0dHA6Ly9z
69
+ MS50aWNrZXRtLm5ldC9kYW0vYy9NSVNDX1RBQkxFVF9MQU5EU0NBUEVfMTZf
70
+ OS5qcGciLCJ3aWR0aCI6MTAyNCwiaGVpZ2h0Ijo1NzYsImZhbGxiYWNrIjp0
71
+ cnVlfSx7InJhdGlvIjoiM18yIiwidXJsIjoiaHR0cDovL3MxLnRpY2tldG0u
72
+ bmV0L2RhbS9jL01JU0NfUkVUSU5BX1BPUlRSQUlUXzNfMi5qcGciLCJ3aWR0
73
+ aCI6NjQwLCJoZWlnaHQiOjQyNywiZmFsbGJhY2siOnRydWV9LHsicmF0aW8i
74
+ OiIxNl85IiwidXJsIjoiaHR0cDovL3MxLnRpY2tldG0ubmV0L2RhbS9jL01J
75
+ U0NfUkVDT01FTkRBVElPTl8xNl85LmpwZyIsIndpZHRoIjoxMDAsImhlaWdo
76
+ dCI6NTYsImZhbGxiYWNrIjp0cnVlfSx7InJhdGlvIjoiM18yIiwidXJsIjoi
77
+ aHR0cDovL3MxLnRpY2tldG0ubmV0L2RhbS9jL01JU0NfQVJUSVNUX1BBR0Vf
78
+ M18yLmpwZyIsIndpZHRoIjozMDUsImhlaWdodCI6MjAzLCJmYWxsYmFjayI6
79
+ dHJ1ZX0seyJyYXRpbyI6IjRfMyIsInVybCI6Imh0dHA6Ly9zMS50aWNrZXRt
80
+ Lm5ldC9kYW0vYy9NSVNDX0NVU1RPTS5qcGciLCJ3aWR0aCI6MzA1LCJoZWln
81
+ aHQiOjIyNSwiZmFsbGJhY2siOnRydWV9LHsicmF0aW8iOiIxNl85IiwidXJs
82
+ IjoiaHR0cDovL3MxLnRpY2tldG0ubmV0L2RhbS9jL01JU0NfUkVUSU5BX1BP
83
+ UlRSQUlUXzE2XzkuanBnIiwid2lkdGgiOjY0MCwiaGVpZ2h0IjozNjAsImZh
84
+ bGxiYWNrIjp0cnVlfSx7InJhdGlvIjoiMTZfOSIsInVybCI6Imh0dHA6Ly9z
85
+ MS50aWNrZXRtLm5ldC9kYW0vYy9NSVNDX1JFVElOQV9MQU5EU0NBUEVfMTZf
86
+ OS5qcGciLCJ3aWR0aCI6MTEzNiwiaGVpZ2h0Ijo2MzksImZhbGxiYWNrIjp0
87
+ cnVlfSx7InJhdGlvIjoiMTZfOSIsInVybCI6Imh0dHA6Ly9zMS50aWNrZXRt
88
+ Lm5ldC9kYW0vYy9NSVNDX0VWRU5UX0RFVEFJTF9QQUdFXzE2XzkuanBnIiwi
89
+ d2lkdGgiOjIwNSwiaGVpZ2h0IjoxMTUsImZhbGxiYWNrIjp0cnVlfV0sInNh
90
+ bGVzIjp7InB1YmxpYyI6eyJzdGFydERhdGVUaW1lIjoiMjAxNi0wNS0yOVQx
91
+ NjowMDowMFoiLCJzdGFydFRCRCI6ZmFsc2UsImVuZERhdGVUaW1lIjoiMjAx
92
+ Ni0wNi0xNVQyMDowMDowMFoifX0sImRhdGVzIjp7InN0YXJ0Ijp7ImxvY2Fs
93
+ RGF0ZSI6IjIwMTYtMDYtMTUiLCJsb2NhbFRpbWUiOiIxMDowMDowMCIsImRh
94
+ dGVUaW1lIjoiMjAxNi0wNi0xNVQxNTowMDowMFoiLCJkYXRlVEJEIjpmYWxz
95
+ ZSwiZGF0ZVRCQSI6ZmFsc2UsInRpbWVUQkEiOmZhbHNlLCJub1NwZWNpZmlj
96
+ VGltZSI6ZmFsc2V9LCJ0aW1lem9uZSI6IkFtZXJpY2EvTWV4aWNvX0NpdHki
97
+ LCJzdGF0dXMiOnsiY29kZSI6Im9uc2FsZSJ9fSwiY2xhc3NpZmljYXRpb25z
98
+ IjpbeyJwcmltYXJ5Ijp0cnVlLCJzZWdtZW50Ijp7ImlkIjoiS1pGem5pd25T
99
+ eVpmWjd2N24xIiwibmFtZSI6Ik1pc2NlbGxhbmVvdXMifSwiZ2VucmUiOnsi
100
+ aWQiOiJLbnZaZlo3djdsbCIsIm5hbWUiOiJVbmRlZmluZWQifSwic3ViR2Vu
101
+ cmUiOnsiaWQiOiJLWmF6QkVvblNNblpmWjd2QXYxIiwibmFtZSI6IlVuZGVm
102
+ aW5lZCJ9fV0sInByb21vdGVyIjp7ImlkIjoiMzMyNCJ9LCJpbmZvIjoiTGEg
103
+ aW5zcGlyYWNpw7NuIHBhcmEgY29uc3RydWlyIEFjdWFyaW8gSW5idXJzYSBl
104
+ cyBwcm9kdWN0byBkZWwgZ3JhdmUgZGV0ZXJpb3JvIGRlIGxvcyBlY29zaXN0
105
+ ZW1hcyBhY3XDoXRpY29zIHkgZGUgbGEgbmVjZXNpZGFkIGRlIGNvbmNpZW50
106
+ aXphciBhIGxhIGdlbnRlIHBhcmEgYXl1ZGFyIGEgY29uc2VydmFyIGVsIG11
107
+ bmRvIG1hcmluby4gU8OpIHBhcnRlIGRlIGVzdGEgZ3JhbiBleHBlcmllbmNp
108
+ YSB5IMO6bmV0ZSBjb21vIHRyaXB1bGFudGUgZGVudHJvIGRlIG51ZXN0cmEg
109
+ YXNvbWJyb3NhIGF2ZW50dXJhLiBESVZJw4lSVEVURSwgSU5TUMONUkFURSB5
110
+ IEFQUkVOREUgbGEgcGFzacOzbiBwb3IgbGEgdmlkYSBtYXJpbmEsIGNvbnZp
111
+ cnRpw6luZG90ZSBlbiB1biBwcm90ZWN0b3IgZGUgZXN0ZSBtYXJhdmlsbG9z
112
+ byBtdW5kby4gU29tb3MgdW4gY2VudHJvIGRlIGNvbnNlcnZhY2nDs24gZG9u
113
+ ZGUgdG9kb3MgZm9ybWFtb3MgcGFydGUgZGVsIGNvbXByb21pc28gZGUgY3Vp
114
+ ZGFyIHkgcHJvdGVnZXIgYSBudWVzdHJvcyBhbmltYWxlcyB5IG9jw6lhbm9z
115
+ LiBBIHRyYXbDqXMgZGUgdW4gZGl2ZXJ0aWRvIHkgZWR1Y2F0aXZvIHJlY29y
116
+ cmlkbyBjb25vY2Vyw6FzIGVsIGZvbmRvIGRlbCBvY8OpYW5vLCBleMOzdGlj
117
+ b3MgbWFuZ2xhcmVzIHkgbGEgY29uZ2VsYWRhIEFudMOhcnRpZGEgY29uIG3D
118
+ oXMgZGUgMjUwIGVzcGVjaWVzIHkgbcOhcyBkZSA1MDAwIGVqZW1wbGFyZXMg
119
+ Y29tbyB0aWJ1cm9uZXMsIGNhYmFsbGl0b3MgZGUgbWFyLCB0b3J0dWdhcywg
120
+ Y29jb2RyaWxvcywgcGlyYcOxYXMsIG1lZHVzYXMsIGNvcmFsZXMsIGJhcnJh
121
+ Y3VkYXMsIHBpbmfDvGlub3MsIGVudHJlIG11Y2hvcyBvdHJvcy4gQSB0cmF2
122
+ w6lzIGRlIGV4aGliaWNpb25lcyBhbWJpZW50YWRhcyBlbiBlc3BhY2lvcyBj
123
+ ZXJyYWRvcyBjb24gaW5zdGFsYWNpb25lcyBkZSBjbGFzZSBtdW5kaWFsLiIs
124
+ InBsZWFzZU5vdGUiOiJDb25vY2UgbnVlc3RyYXMgcG9sw610aWNhcyBkZSBl
125
+ bnRyZWdhLiIsInByaWNlUmFuZ2VzIjpbeyJ0eXBlIjoic3RhbmRhcmQiLCJj
126
+ dXJyZW5jeSI6Ik1YTiIsIm1pbiI6MTM1LjAsIm1heCI6MTM1LjB9XSwiX2xp
127
+ bmtzIjp7InNlbGYiOnsiaHJlZiI6Ii9kaXNjb3ZlcnkvdjIvZXZlbnRzLzFB
128
+ djhaZmFHa3dta01TSD9sb2NhbGU9ZW4tdXMifSwiYXR0cmFjdGlvbnMiOlt7
129
+ ImhyZWYiOiIvZGlzY292ZXJ5L3YyL2F0dHJhY3Rpb25zL0s4dlo5MTczVmhW
130
+ P2xvY2FsZT1lbi11cyJ9XSwidmVudWVzIjpbeyJocmVmIjoiL2Rpc2NvdmVy
131
+ eS92Mi92ZW51ZXMvS292WnBaQUV2azFBP2xvY2FsZT1lbi11cyJ9XX0sIl9l
132
+ bWJlZGRlZCI6eyJ2ZW51ZXMiOlt7Im5hbWUiOiJBY3VhcmlvIEluYnVyc2Ei
133
+ LCJ0eXBlIjoidmVudWUiLCJpZCI6IktvdlpwWkFFdmsxQSIsInRlc3QiOmZh
134
+ bHNlLCJ1cmwiOiJodHRwOi8vdGlja2V0bWFzdGVyLmNvbS5teC92ZW51ZS8x
135
+ NjUyMzEiLCJsb2NhbGUiOiJlbi11cyIsInBvc3RhbENvZGUiOiIxMTUyOSIs
136
+ InRpbWV6b25lIjoiQW1lcmljYS9NZXhpY29fQ2l0eSIsImNpdHkiOnsibmFt
137
+ ZSI6Ik3DqXhpY28ifSwic3RhdGUiOnsibmFtZSI6IkRpc3RyaXRvIEZlZGVy
138
+ YWwiLCJzdGF0ZUNvZGUiOiJERiJ9LCJjb3VudHJ5Ijp7Im5hbWUiOiJNZXhp
139
+ Y28iLCJjb3VudHJ5Q29kZSI6Ik1YIn0sImFkZHJlc3MiOnsibGluZTEiOiJN
140
+ aWd1ZWwgZGUgQ2VydmFudGVzIFNhYXZlZHJhICIsImxpbmUyIjoiQ29sLiBB
141
+ bXBsaWFjacOzbiJ9LCJsb2NhdGlvbiI6eyJsb25naXR1ZGUiOiItOTkuMjA0
142
+ OTAyNjAiLCJsYXRpdHVkZSI6IjE5LjQ0MDI2OTUwIn0sIm1hcmtldHMiOlt7
143
+ ImlkIjoiNDAxIn0seyJpZCI6IjQwMiJ9XSwiZG1hcyI6W3siaWQiOjgwMX0s
144
+ eyJpZCI6ODAyfV0sIl9saW5rcyI6eyJzZWxmIjp7ImhyZWYiOiIvZGlzY292
145
+ ZXJ5L3YyL3ZlbnVlcy9Lb3ZacFpBRXZrMUE/bG9jYWxlPWVuLXVzIn19fV0s
146
+ ImF0dHJhY3Rpb25zIjpbeyJuYW1lIjoiQWN1YXJpbyBJbmJ1cnNhIiwidHlw
147
+ ZSI6ImF0dHJhY3Rpb24iLCJpZCI6Iks4dlo5MTczVmhWIiwidGVzdCI6ZmFs
148
+ c2UsInVybCI6Imh0dHA6Ly90aWNrZXRtYXN0ZXIuY29tLm14L2FydGlzdC8y
149
+ MDM4NDk1IiwibG9jYWxlIjoiZW4tdXMiLCJpbWFnZXMiOlt7InJhdGlvIjoi
150
+ M18yIiwidXJsIjoiaHR0cDovL3MxLnRpY2tldG0ubmV0L2RhbS9jL01JU0Nf
151
+ VEFCTEVUX0xBTkRTQ0FQRV8zXzIuanBnIiwid2lkdGgiOjEwMjQsImhlaWdo
152
+ dCI6NjgzLCJmYWxsYmFjayI6dHJ1ZX0seyJyYXRpbyI6IjE2XzkiLCJ1cmwi
153
+ OiJodHRwOi8vczEudGlja2V0bS5uZXQvZGFtL2MvTUlTQ19UQUJMRVRfTEFO
154
+ RFNDQVBFXzE2XzkuanBnIiwid2lkdGgiOjEwMjQsImhlaWdodCI6NTc2LCJm
155
+ YWxsYmFjayI6dHJ1ZX0seyJyYXRpbyI6IjE2XzkiLCJ1cmwiOiJodHRwOi8v
156
+ czEudGlja2V0bS5uZXQvZGFtL2MvTUlTQ19UQUJMRVRfTEFORFNDQVBFX0xB
157
+ UkdFXzE2XzkuanBnIiwid2lkdGgiOjIwNDgsImhlaWdodCI6MTE1MiwiZmFs
158
+ bGJhY2siOnRydWV9LHsicmF0aW8iOiIzXzIiLCJ1cmwiOiJodHRwOi8vczEu
159
+ dGlja2V0bS5uZXQvZGFtL2MvTUlTQ19SRVRJTkFfUE9SVFJBSVRfM18yLmpw
160
+ ZyIsIndpZHRoIjo2NDAsImhlaWdodCI6NDI3LCJmYWxsYmFjayI6dHJ1ZX0s
161
+ eyJyYXRpbyI6IjE2XzkiLCJ1cmwiOiJodHRwOi8vczEudGlja2V0bS5uZXQv
162
+ ZGFtL2MvTUlTQ19SRUNPTUVOREFUSU9OXzE2XzkuanBnIiwid2lkdGgiOjEw
163
+ MCwiaGVpZ2h0Ijo1NiwiZmFsbGJhY2siOnRydWV9LHsicmF0aW8iOiI0XzMi
164
+ LCJ1cmwiOiJodHRwOi8vczEudGlja2V0bS5uZXQvZGFtL2MvTUlTQ19DVVNU
165
+ T00uanBnIiwid2lkdGgiOjMwNSwiaGVpZ2h0IjoyMjUsImZhbGxiYWNrIjp0
166
+ cnVlfSx7InJhdGlvIjoiM18yIiwidXJsIjoiaHR0cDovL3MxLnRpY2tldG0u
167
+ bmV0L2RhbS9jL01JU0NfQVJUSVNUX1BBR0VfM18yLmpwZyIsIndpZHRoIjoz
168
+ MDUsImhlaWdodCI6MjAzLCJmYWxsYmFjayI6dHJ1ZX0seyJyYXRpbyI6IjE2
169
+ XzkiLCJ1cmwiOiJodHRwOi8vczEudGlja2V0bS5uZXQvZGFtL2MvTUlTQ19S
170
+ RVRJTkFfUE9SVFJBSVRfMTZfOS5qcGciLCJ3aWR0aCI6NjQwLCJoZWlnaHQi
171
+ OjM2MCwiZmFsbGJhY2siOnRydWV9LHsicmF0aW8iOiIxNl85IiwidXJsIjoi
172
+ aHR0cDovL3MxLnRpY2tldG0ubmV0L2RhbS9jL01JU0NfUkVUSU5BX0xBTkRT
173
+ Q0FQRV8xNl85LmpwZyIsIndpZHRoIjoxMTM2LCJoZWlnaHQiOjYzOSwiZmFs
174
+ bGJhY2siOnRydWV9LHsicmF0aW8iOiIxNl85IiwidXJsIjoiaHR0cDovL3Mx
175
+ LnRpY2tldG0ubmV0L2RhbS9jL01JU0NfRVZFTlRfREVUQUlMX1BBR0VfMTZf
176
+ OS5qcGciLCJ3aWR0aCI6MjA1LCJoZWlnaHQiOjExNSwiZmFsbGJhY2siOnRy
177
+ dWV9XSwiY2xhc3NpZmljYXRpb25zIjpbeyJwcmltYXJ5Ijp0cnVlLCJzZWdt
178
+ ZW50Ijp7ImlkIjoiS1pGem5pd25TeVpmWjd2N24xIiwibmFtZSI6Ik1pc2Nl
179
+ bGxhbmVvdXMifSwiZ2VucmUiOnsiaWQiOiJLbnZaZlo3djdsbCIsIm5hbWUi
180
+ OiJVbmRlZmluZWQifSwic3ViR2VucmUiOnsiaWQiOiJLWmF6QkVvblNNblpm
181
+ Wjd2QXYxIiwibmFtZSI6IlVuZGVmaW5lZCJ9fV0sIl9saW5rcyI6eyJzZWxm
182
+ Ijp7ImhyZWYiOiIvZGlzY292ZXJ5L3YyL2F0dHJhY3Rpb25zL0s4dlo5MTcz
183
+ VmhWP2xvY2FsZT1lbi11cyJ9fX1dfX0=
184
+ http_version:
185
+ recorded_at: Wed, 15 Jun 2016 15:00:44 GMT
186
+ recorded_with: VCR 3.0.3