mtg_sdk 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +155 -0
- data/Rakefile +16 -0
- data/lib/mtg_sdk.rb +32 -0
- data/lib/mtg_sdk/card.rb +48 -0
- data/lib/mtg_sdk/changelog.rb +29 -0
- data/lib/mtg_sdk/configuration.rb +9 -0
- data/lib/mtg_sdk/foreign_name.rb +10 -0
- data/lib/mtg_sdk/legality.rb +10 -0
- data/lib/mtg_sdk/representers/card_representer.rb +54 -0
- data/lib/mtg_sdk/representers/changelog_representer.rb +13 -0
- data/lib/mtg_sdk/representers/foreign_name_representer.rb +11 -0
- data/lib/mtg_sdk/representers/legality_representer.rb +10 -0
- data/lib/mtg_sdk/representers/ruling_representer.rb +12 -0
- data/lib/mtg_sdk/representers/set_representer.rb +21 -0
- data/lib/mtg_sdk/resource.rb +21 -0
- data/lib/mtg_sdk/rest_client.rb +31 -0
- data/lib/mtg_sdk/ruling.rb +10 -0
- data/lib/mtg_sdk/set.rb +64 -0
- data/lib/mtg_sdk/subtype.rb +15 -0
- data/lib/mtg_sdk/supertype.rb +15 -0
- data/lib/mtg_sdk/type.rb +15 -0
- data/lib/mtg_sdk/version.rb +3 -0
- data/mtg_sdk.gemspec +33 -0
- data/test/card_test.rb +62 -0
- data/test/changelog_test.rb +12 -0
- data/test/configuration_test.rb +10 -0
- data/test/fixtures/all_changelogs.yml +129 -0
- data/test/fixtures/all_subtypes.yml +129 -0
- data/test/fixtures/all_supertypes.yml +59 -0
- data/test/fixtures/all_types.yml +59 -0
- data/test/fixtures/booster.yml +974 -0
- data/test/fixtures/invalid_code.yml +49 -0
- data/test/fixtures/invalid_id.yml +49 -0
- data/test/fixtures/one_card.yml +111 -0
- data/test/fixtures/one_set.yml +60 -0
- data/test/fixtures/query_cards_pageSize.yml +356 -0
- data/test/fixtures/query_zurgo.yml +336 -0
- data/test/set_test.rb +34 -0
- data/test/subtype_test.rb +12 -0
- data/test/supertype_test.rb +12 -0
- data/test/test_helper.rb +10 -0
- data/test/type_test.rb +12 -0
- metadata +263 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'roar/json'
|
2
|
+
|
3
|
+
module MTG
|
4
|
+
module SetRepresenter
|
5
|
+
include Roar::JSON
|
6
|
+
|
7
|
+
property :code
|
8
|
+
property :name
|
9
|
+
property :type
|
10
|
+
property :border
|
11
|
+
property :mkm_id
|
12
|
+
property :mkm_name
|
13
|
+
property :old_code, as: :oldCode
|
14
|
+
property :online_only, as: :onlineOnly
|
15
|
+
property :release_date, as: :releaseDate
|
16
|
+
property :gatherer_code, as: :gatherCode
|
17
|
+
property :magic_cards_info_code, as: :magicCardsInfoCode
|
18
|
+
|
19
|
+
collection :booster
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module MTG
|
2
|
+
class Resource
|
3
|
+
|
4
|
+
# Get the hash of query parameters
|
5
|
+
#
|
6
|
+
# @return [Hash] query parameters
|
7
|
+
def self.query
|
8
|
+
@query ||= {:parameters => {}}
|
9
|
+
end
|
10
|
+
|
11
|
+
# Adds a parameter to the hash of query parameters
|
12
|
+
#
|
13
|
+
# @param args [Hash] the query parameter
|
14
|
+
# @return [Resource] the Resource
|
15
|
+
def self.where(args)
|
16
|
+
query[:parameters].merge!(args)
|
17
|
+
self
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday_middleware'
|
3
|
+
|
4
|
+
module MTG
|
5
|
+
module RestClient
|
6
|
+
|
7
|
+
def self.get(endpoint, params=nil)
|
8
|
+
if params.nil?
|
9
|
+
query = endpoint
|
10
|
+
else
|
11
|
+
query = "#{endpoint}?#{params_to_query(params)}"
|
12
|
+
end
|
13
|
+
|
14
|
+
client.get(query)
|
15
|
+
end
|
16
|
+
|
17
|
+
protected
|
18
|
+
|
19
|
+
def self.client
|
20
|
+
@client = Faraday.new "#{API_URL}/v#{MTG.configuration.api_version}" do |conn|
|
21
|
+
conn.response :xml, :content_type => /\bxml$/
|
22
|
+
conn.response :json, :content_type => /\bjson$/
|
23
|
+
conn.adapter Faraday.default_adapter
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.params_to_query(params)
|
28
|
+
params.map {|p, v| "#{p}=#{URI.escape(v.to_s)}"}.join('&')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/mtg_sdk/set.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require_relative 'representers/set_representer'
|
2
|
+
require_relative 'card'
|
3
|
+
require_relative 'rest_client'
|
4
|
+
require_relative 'resource'
|
5
|
+
|
6
|
+
module MTG
|
7
|
+
class Set < Resource
|
8
|
+
include Roar::JSON
|
9
|
+
include SetRepresenter
|
10
|
+
include RestClient
|
11
|
+
|
12
|
+
attr_accessor :code, :name, :type, :border, :mkm_id, :mkm_name,
|
13
|
+
:release_date, :gatherer_code, :magic_cards_info_code, :booster,
|
14
|
+
:old_code, :block, :online_only
|
15
|
+
|
16
|
+
# Find a single set by the set code
|
17
|
+
#
|
18
|
+
# @param code [String] the Set code
|
19
|
+
# @return [Set] a Set object
|
20
|
+
def self.find(code)
|
21
|
+
response = RestClient.get("sets/#{code}")
|
22
|
+
|
23
|
+
if response.body['set'].nil?
|
24
|
+
raise ArgumentError, 'Set not found'
|
25
|
+
end
|
26
|
+
|
27
|
+
new.from_json(response.body['set'].to_json)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Generate a booster pack for a specific set
|
31
|
+
#
|
32
|
+
# @param code [String] the Set code
|
33
|
+
# @return [Array<Card>] Array of Card objects
|
34
|
+
def self.generate_booster(code)
|
35
|
+
cards = []
|
36
|
+
response = RestClient.get("sets/#{code}/booster")
|
37
|
+
data = response.body['cards']
|
38
|
+
|
39
|
+
data.each do |card|
|
40
|
+
cards << Card.new.from_json(card.to_json)
|
41
|
+
end
|
42
|
+
|
43
|
+
@query = nil
|
44
|
+
cards
|
45
|
+
end
|
46
|
+
|
47
|
+
# Execute a query and convert the response
|
48
|
+
# into a list of Set objects
|
49
|
+
#
|
50
|
+
# @return [Array<Set>] Array of Set objects
|
51
|
+
def self.get
|
52
|
+
sets = []
|
53
|
+
response = RestClient.get('sets', query[:parameters])
|
54
|
+
data = response.body['sets']
|
55
|
+
|
56
|
+
data.each do |set|
|
57
|
+
sets << new.from_json(set.to_json)
|
58
|
+
end
|
59
|
+
|
60
|
+
@query = nil
|
61
|
+
sets
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'rest_client'
|
2
|
+
require_relative 'resource'
|
3
|
+
|
4
|
+
module MTG
|
5
|
+
class Subtype < Resource
|
6
|
+
include RestClient
|
7
|
+
|
8
|
+
# Get all subtypes
|
9
|
+
#
|
10
|
+
# @return [Array<String>] All subtypes
|
11
|
+
def self.all
|
12
|
+
RestClient.get('subtypes').body['subtypes']
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'rest_client'
|
2
|
+
require_relative 'resource'
|
3
|
+
|
4
|
+
module MTG
|
5
|
+
class Supertype < Resource
|
6
|
+
include RestClient
|
7
|
+
|
8
|
+
# Get all supertypes
|
9
|
+
#
|
10
|
+
# @return [Array<String>] All supertypes
|
11
|
+
def self.all
|
12
|
+
RestClient.get('supertypes').body['supertypes']
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/mtg_sdk/type.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'rest_client'
|
2
|
+
require_relative 'resource'
|
3
|
+
|
4
|
+
module MTG
|
5
|
+
class Type < Resource
|
6
|
+
include RestClient
|
7
|
+
|
8
|
+
# Get all types
|
9
|
+
#
|
10
|
+
# @return [Array<String>] All types
|
11
|
+
def self.all
|
12
|
+
RestClient.get('types').body['types']
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/mtg_sdk.gemspec
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'mtg_sdk/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "mtg_sdk"
|
8
|
+
spec.version = MTG::VERSION
|
9
|
+
spec.authors = ["Andrew Backes"]
|
10
|
+
spec.email = ["backes.andrew@gmail.com"]
|
11
|
+
spec.summary = "Magic: The Gathering SDK for magicthegathering.io"
|
12
|
+
spec.description = "Magic: The Gathering SDK is a wrapper around the MTG API located at magicthegathering.io"
|
13
|
+
spec.homepage = "https://magicthegathering.io"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "minitest"
|
24
|
+
spec.add_development_dependency "vcr"
|
25
|
+
spec.add_development_dependency "webmock"
|
26
|
+
|
27
|
+
spec.add_dependency "faraday"
|
28
|
+
spec.add_dependency "faraday_middleware"
|
29
|
+
spec.add_dependency "json"
|
30
|
+
spec.add_dependency "multi_json"
|
31
|
+
spec.add_dependency "roar"
|
32
|
+
spec.add_dependency "virtus"
|
33
|
+
end
|
data/test/card_test.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
class CardTest < Minitest::Test
|
4
|
+
def test_find_returns_one_card
|
5
|
+
VCR.use_cassette('one_card') do
|
6
|
+
card = MTG::Card.find(88803)
|
7
|
+
|
8
|
+
assert_equal 'Choice of Damnations', card.name
|
9
|
+
assert_equal '{5}{B}', card.mana_cost
|
10
|
+
assert_equal 6, card.cmc
|
11
|
+
assert_equal 'Sorcery — Arcane', card.type
|
12
|
+
assert card.colors.any?{|color| color == 'Black'}
|
13
|
+
assert card.types.any?{|type| type == 'Sorcery'}
|
14
|
+
assert card.subtypes.any?{|subtype| subtype == 'Arcane'}
|
15
|
+
assert_equal 'Rare', card.rarity
|
16
|
+
assert_equal 'SOK', card.set
|
17
|
+
assert_equal "Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.text
|
18
|
+
assert_equal "\"Life is a series of choices between bad and worse.\"\n—Toshiro Umezawa", card.flavor
|
19
|
+
assert_equal 'Tim Hildebrandt', card.artist
|
20
|
+
assert_equal '62', card.number
|
21
|
+
assert_equal 'normal', card.layout
|
22
|
+
assert_equal 88803, card.multiverse_id
|
23
|
+
assert_equal 'http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=88803&type=card', card.image_url
|
24
|
+
assert card.rulings.any?{|ruling| ruling.date == Date.parse('2005-06-01')}
|
25
|
+
assert card.foreign_names.any?{|foreign_name| foreign_name.name == '破灭抉择'}
|
26
|
+
assert card.printings.any?{|printing| printing == 'SOK'}
|
27
|
+
assert_equal "Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.original_text
|
28
|
+
assert_equal 'Sorcery — Arcane', card.original_type
|
29
|
+
assert card.legalities.any?{|legality| legality.format == 'Commander' && legality.legality == 'Legal'}
|
30
|
+
assert_equal '1c4aab072d52d283e902f2302afa255b39e0794b', card.id
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_find_with_invalid_id_throws_exception
|
35
|
+
VCR.use_cassette('invalid_id') do
|
36
|
+
assert_raises ArgumentError do
|
37
|
+
MTG::Card.find(3239482932)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_where_and_get_returns_cards
|
43
|
+
VCR.use_cassette('query_cards_pageSize') do
|
44
|
+
cards = MTG::Card.where(pageSize: 10).get
|
45
|
+
|
46
|
+
# make sure we got a ton of cards
|
47
|
+
assert cards.length == 10
|
48
|
+
assert cards.kind_of?(Array)
|
49
|
+
assert cards.first.kind_of?(MTG::Card)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_where_appends_to_query
|
54
|
+
VCR.use_cassette('query_zurgo') do
|
55
|
+
name = 'zurgo'
|
56
|
+
query = MTG::Card.where(name: name).query
|
57
|
+
parameters = query[:parameters]
|
58
|
+
MTG::Card.get
|
59
|
+
assert_equal name, parameters[:name]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
class ChangelogTest < Minitest::Test
|
4
|
+
def test_all_returns_all_changelogs
|
5
|
+
VCR.use_cassette('all_changelogs') do
|
6
|
+
changelogs = MTG::Changelog.all
|
7
|
+
|
8
|
+
assert changelogs.length > 1
|
9
|
+
assert changelogs.any? {|changelog| changelog.version == '1.0.0'}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.magicthegathering.io/v1/changelogs
|
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
|
+
Server:
|
22
|
+
- cloudflare-nginx
|
23
|
+
Date:
|
24
|
+
- Thu, 21 Jan 2016 01:58:53 GMT
|
25
|
+
Content-Type:
|
26
|
+
- application/json; charset=utf-8
|
27
|
+
Transfer-Encoding:
|
28
|
+
- chunked
|
29
|
+
Connection:
|
30
|
+
- keep-alive
|
31
|
+
Set-Cookie:
|
32
|
+
- __cfduid=d91b83f8e592fa9004064ce3a8922ce161453341533; expires=Fri, 20-Jan-17
|
33
|
+
01:58:53 GMT; path=/; domain=.magicthegathering.io; HttpOnly
|
34
|
+
X-Frame-Options:
|
35
|
+
- SAMEORIGIN
|
36
|
+
X-Xss-Protection:
|
37
|
+
- 1; mode=block
|
38
|
+
X-Content-Type-Options:
|
39
|
+
- nosniff
|
40
|
+
Etag:
|
41
|
+
- W/"a0ed610acb768054f18d15a50e1288ca"
|
42
|
+
Cache-Control:
|
43
|
+
- max-age=0, private, must-revalidate
|
44
|
+
X-Request-Id:
|
45
|
+
- 8c653097-b501-466e-a2bd-e2f11891fea3
|
46
|
+
X-Runtime:
|
47
|
+
- '0.010917'
|
48
|
+
Vary:
|
49
|
+
- Origin
|
50
|
+
Via:
|
51
|
+
- 1.1 vegur
|
52
|
+
Cf-Ray:
|
53
|
+
- 267f6aaad35910e1-ORD
|
54
|
+
body:
|
55
|
+
encoding: ASCII-8BIT
|
56
|
+
string: !binary |-
|
57
|
+
eyJjaGFuZ2Vsb2dzIjpbeyJpZCI6MTUsInZlcnNpb24iOiIxLjguMCIsImRl
|
58
|
+
dGFpbHMiOiJUbyBxdWVyeSBmb3IgYSBjYXJkIG5hbWUgYnkgbWF0Y2hpbmcg
|
59
|
+
dGhlIHBhcmFtZXRlciBleGFjdGx5LCB5b3Ugd2lsbCBub3cgdXNlIHF1b3Rl
|
60
|
+
cyBpbnN0ZWFkIG9mIHBhcmVudGhlc2Vlcy4gRXhhbXBsZTogL2NhcmRzP25h
|
61
|
+
bWU9XCJ6dXJnbyBoZWxtc21hc2hlclwiIiwicmVsZWFzZURhdGUiOiIyMDE2
|
62
|
+
LTAxLTE4In0seyJpZCI6MTQsInZlcnNpb24iOiIxLjcuMCIsImRldGFpbHMi
|
63
|
+
OiJBZGRlZCBzZXQ6IE9hdGggb2YgdGhlIEdhdGV3YXRjaCAoT0dXKSIsInJl
|
64
|
+
bGVhc2VEYXRlIjoiMjAxNi0wMS0xMiJ9LHsiaWQiOjEzLCJ2ZXJzaW9uIjoi
|
65
|
+
MS42LjAiLCJkZXRhaWxzIjoiQ2FuIG5vdyBxdWVyeSBjYXJkIG5hbWVzIGJ5
|
66
|
+
IHRoZWlyIGZvcmVpZ24gbmFtZXMgdmlhIHRoZSAnbGFuZ3VhZ2UnIHVybCBw
|
67
|
+
YXJhbWV0ZXIuIEV4YW1wbGU6ICAvY2FyZHM/bGFuZ3VhZ2U9c3BhbmlzaCZu
|
68
|
+
YW1lPVBlcnNwaWNhY2lhIGRlIFVnaW48L2JyPjwvYnI+Q29sb3JzLCB0eXBl
|
69
|
+
cywgc3VidHlwZXMsIGFuZCBzdXBlcnR5cGVzIGRlZmF1bHQgdG8gYSBsb2dp
|
70
|
+
Y2FsIGFuZCBvcGVyYXRvciB3aGVuIHF1ZXJ5aW5nLCB1bmxlc3Mgd3JhcHBl
|
71
|
+
ZCBpbiBzcXVhcmUgYnJhY2tldHMsIHdoaWNoIHdpbGwgdXNlIGEgbG9naWNh
|
72
|
+
bCBvci4gU2VlIHRoZSBkb2NzIGZvciBleGFtcGxlcy4iLCJyZWxlYXNlRGF0
|
73
|
+
ZSI6IjIwMTUtMTItMDEifSx7ImlkIjoxMiwidmVyc2lvbiI6IjEuNS4wIiwi
|
74
|
+
ZGV0YWlscyI6IkFkZGVkIHNldDogQ29tbWFuZGVyIDIwMTUgKEMxNSkiLCJy
|
75
|
+
ZWxlYXNlRGF0ZSI6IjIwMTUtMTEtMTcifSx7ImlkIjoxMSwidmVyc2lvbiI6
|
76
|
+
IjEuNC4wIiwiZGV0YWlscyI6IlVwZGF0ZWQgcnVsaW5ncyBhbmQgb3JhY2xl
|
77
|
+
IHRleHQgZm9yIGFsbCBjYXJkcyBpbiBhbGwgc2V0cy48L2JyPkFkZGVkIHNl
|
78
|
+
dDogQmF0dGxlIGZvciBaZW5kaWthciAoQkZaKTwvYnI+QWRkZWQgc2V0OiBa
|
79
|
+
ZW5kaWthciBFeHBlZGl0aW9uIChFWFApPC9icj5ERFA6IEZpeGVkIHRoZSAn
|
80
|
+
Y29sb3JzJyBmaWVsZCBmb3IgdGhlIGNhcmRzIHdpdGggJ0Rldm9pZCcuPC9i
|
81
|
+
cj5VR0w6IFRoZSBjYXJkICdEZW5pZWQhJyBub3cgaGFzIGEgdHlwZSBvZiAn
|
82
|
+
SW5zdGFudCcgaW5zdGVhZCBvZiAnSW50ZXJydXB0Jy4gVGhlIG9yaWdpbmFs
|
83
|
+
VHlwZSBpcyBzdGlsbCAnSW50ZXJydXB0Jy4iLCJyZWxlYXNlRGF0ZSI6IjIw
|
84
|
+
MTUtMTAtMDEifSx7ImlkIjoxMCwidmVyc2lvbiI6IjEuMy4yIiwiZGV0YWls
|
85
|
+
cyI6IldoZW4gcXVlcnlpbmcgYSBjYXJkIGJ5IG5hbWUsIHBhcmVudGhlc2Vl
|
86
|
+
cyBjYW4gbm93IGJlIHBsYWNlcyBhcm91bmQgdGhlIGNhcmQgbmFtZSB0byB0
|
87
|
+
cnkgdG8gbWF0Y2ggdGhlIG5hbWUgZXhhY3RseS4gRXhhbXBsZTogL2NhcmRz
|
88
|
+
P25hbWU9KHRpbmtlcikiLCJyZWxlYXNlRGF0ZSI6IjIwMTUtMDktMTUifSx7
|
89
|
+
ImlkIjo5LCJ2ZXJzaW9uIjoiMS4zLjEiLCJkZXRhaWxzIjoiVGhlICdmb3Jl
|
90
|
+
aWduTmFtZXMnICdtdWx0aXZlcnNlaWQnIGZpZWxkIGlzIG5vdyBjb3JyZWN0
|
91
|
+
bHkgYW4gaW50ZWdlciByYXRoZXIgdGhhbiBhIHN0cmluZy48L2JyPlBMUzog
|
92
|
+
VGhlIDMgZm9pbCB2ZXJzaW9uIGNhcmRzIG5vdyBjb3JyZWN0bHkgaGF2ZSBh
|
93
|
+
IOKYhSBwcmVmaXggaW4gdGhlICdudW1iZXInIGZpZWxkIHRvIG1hdGNoIHdo
|
94
|
+
YXQgaXMgcHJpbnRlZCBvbiB0aGUgcGh5c2ljYWwgY2FyZC4iLCJyZWxlYXNl
|
95
|
+
RGF0ZSI6IjIwMTUtMDktMTQifSx7ImlkIjo4LCJ2ZXJzaW9uIjoiMS4zLjAi
|
96
|
+
LCJkZXRhaWxzIjoiQWRkZWQgc2V0OiBEdWVsIERlY2tzOiBaZW5kaWthciB2
|
97
|
+
cy4gRWxkcmF6aSAoRERQKTwvYnI+QWRkZWQgc2V0OiBGcm9tIHRoZSBWYXVs
|
98
|
+
dDogQW5nZWxzIChWMTUpPC9icj5FdmVyeSBjYXJkIG5vdyBoYXMgYSB1bmlx
|
99
|
+
dWUgJ2lkJyBmaWVsZDwvYnI+QWRkZWQgYSAnbXVsdGl2ZXJzZWlkJyBmaWVs
|
100
|
+
ZCB0byB0aGUgY2FyZCAnZm9yZWlnbk5hbWVzJyBvYmplY3QgICIsInJlbGVh
|
101
|
+
c2VEYXRlIjoiMjAxNS0wOS0wNSJ9LHsiaWQiOjcsInZlcnNpb24iOiIxLjIu
|
102
|
+
MSIsImRldGFpbHMiOiJTT006IEFkZGVkIG1pc3NpbmcgJ3dhdGVybWFyaycg
|
103
|
+
ZmllbGQgZm9yICdSYXpvcmZpZWxkIFRocmVzaGVyJyBjYXJkPC9icj5IT1A6
|
104
|
+
IEZpeGVkICd0ZXh0JyBmaWVsZCBmb3IgJ01pbmFtbycgY2FyZCB0byB1c2Ug
|
105
|
+
Q0hBT1MgaW5zdGVhZCBvZiB7Q30gdG8gYWxpZ24gd2l0aCBvdGhlciB1cGRh
|
106
|
+
dGVkIG9yYWNsZSAndGV4dCcgZmllbGRzIG9uIHNpbWlsYXIgY2FyZHMiLCJy
|
107
|
+
ZWxlYXNlRGF0ZSI6IjIwMTUtMDgtMTQifSx7ImlkIjo2LCJ2ZXJzaW9uIjoi
|
108
|
+
MS4yLjAiLCJkZXRhaWxzIjoiQWRkZWQgc2V0OiBNYWdpYyBPcmlnaW5zIChP
|
109
|
+
UkkpPGJyLz5BZGRlZCBzZXQ6IENsYXNoIFBhY2sgKENQSyk8L2JyPkFkZGVk
|
110
|
+
IHNldDogQ29sbGVjdG9yJ3MgRWRpdGlvbiAoQ0VEKTwvYnI+QWRkZWQgc2V0
|
111
|
+
OiBJbnRlcm5hdGlvbmFsIENvbGxlY3RvcidzIEVkaXRpb24gKENFSSkiLCJy
|
112
|
+
ZWxlYXNlRGF0ZSI6IjIwMTUtMDctMTYifSx7ImlkIjo1LCJ2ZXJzaW9uIjoi
|
113
|
+
MS4xLjMiLCJkZXRhaWxzIjoiQWRkZWQgc2V0IGNvZGUgdG8gdGhlIENhcmRz
|
114
|
+
IHJlc291cmNlLiIsInJlbGVhc2VEYXRlIjoiMjAxNS0wNi0wNyJ9LHsiaWQi
|
115
|
+
OjQsInZlcnNpb24iOiIxLjEuMiIsImRldGFpbHMiOiJSZW1vdmVkICdJbWFn
|
116
|
+
ZU5hbWUnIGZyb20gdGhlIEpTT04gYXMgaXQgaXMgbm8gbG9uZ2VyIGFwcGxp
|
117
|
+
Y2FibGUuPC9icj5BZGRlZCAnaW1hZ2VVcmwnIHRvIHRoZSBjYXJkcyByZXNv
|
118
|
+
dXJjZS48L2JyPkZpeGVkIG1pc3NpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYSBm
|
119
|
+
ZXcgZmllbGRzLiIsInJlbGVhc2VEYXRlIjoiMjAxNS0wNi0wMyJ9LHsiaWQi
|
120
|
+
OjMsInZlcnNpb24iOiIxLjEuMSIsImRldGFpbHMiOiJDYW4gbm93IHF1ZXJ5
|
121
|
+
IHNldHMgYnkgc2V0IG5hbWVDYW4gbm93IHF1ZXJ5IHNldHMgYnkgc2V0IG5h
|
122
|
+
bWUiLCJyZWxlYXNlRGF0ZSI6IjIwMTUtMDYtMDIifSx7ImlkIjoyLCJ2ZXJz
|
123
|
+
aW9uIjoiMS4xLjAiLCJkZXRhaWxzIjoiQWRkZWQgc2V0OiBNb2Rlcm4gTWFz
|
124
|
+
dGVycyAyMDE1IEVkaXRpb24gKE1NMikiLCJyZWxlYXNlRGF0ZSI6IjIwMTUt
|
125
|
+
MDUtMzAifSx7ImlkIjoxLCJ2ZXJzaW9uIjoiMS4wLjAiLCJkZXRhaWxzIjoi
|
126
|
+
Rmlyc3QgUmVsZWFzZSIsInJlbGVhc2VEYXRlIjoiMjAxNS0wNS0yOSJ9XX0=
|
127
|
+
http_version:
|
128
|
+
recorded_at: Thu, 21 Jan 2016 01:58:53 GMT
|
129
|
+
recorded_with: VCR 3.0.1
|