mtg_sdk 1.0.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.
- 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
|