affilinet 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +29 -0
  8. data/Rakefile +11 -0
  9. data/affilinet.gemspec +31 -0
  10. data/lib/affilinet.rb +11 -0
  11. data/lib/affilinet/client.rb +86 -0
  12. data/lib/affilinet/middleware/mash.rb +21 -0
  13. data/lib/affilinet/middleware/mashify.rb +9 -0
  14. data/lib/affilinet/middleware/parse_json.rb +15 -0
  15. data/lib/affilinet/version.rb +3 -0
  16. data/spec/cassettes/Affilinet_Client/initialized_with_credentials/_categories/performs_the_GET_request_to_the_correct_endpoint.yml +46 -0
  17. data/spec/cassettes/Affilinet_Client/initialized_with_credentials/_categories/returns_a_Affilinet_Middleware_Mash.yml +50 -0
  18. data/spec/cassettes/Affilinet_Client/initialized_with_credentials/_products/returns_a_Affilinet_Middleware_Mash.yml +156 -0
  19. data/spec/cassettes/Affilinet_Client/initialized_with_credentials/_properties/returns_a_Affilinet_Middleware_Mash.yml +46 -0
  20. data/spec/cassettes/Affilinet_Client/initialized_with_credentials/_search/returns_a_Affilinet_Middleware_Mash.yml +627 -0
  21. data/spec/cassettes/Affilinet_Client/initialized_with_credentials/_shops/returns_a_Affilinet_Middleware_Mash.yml +51 -0
  22. data/spec/cassettes/Affilinet_Client/initialized_with_credentials/categories/performs_the_GET_request_to_the_correct_endpoint.yml +50 -0
  23. data/spec/cassettes/Affilinet_Client/initialized_with_credentials/raises_Error_on_wrong_API_requests.yml +37 -0
  24. data/spec/cassettes/Affilinet_Client/initialized_with_credentials/raises_Faraday_Error_ParsingError_on_wrong_API_requests.yml +37 -0
  25. data/spec/lib/client_spec.rb +98 -0
  26. data/spec/spec_helper.rb +25 -0
  27. metadata +206 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 184b9f6e9ad36532cd5abab5f241b73d3abb53a3
4
+ data.tar.gz: 6569fcf2500822f1a95f31ea80aad136f195a7cc
5
+ SHA512:
6
+ metadata.gz: 5a540928d05222bf9224cc3b4fda501a72a2f6c8a4f1a2ed4a8fb0b3365a2f6362857c4f65fc97b52ad9b9f8f0bfd61f898c7462f3d6a15b470330fbed16af86
7
+ data.tar.gz: b34089aede717a660c1b01769e4b5ccaabed5ae6d29cb1964a516331bceaa1637a57ed2eedf174216ef10aedf0d97160dd913e81613f75573a87c773c1fd2cdc
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .DS_Store
@@ -0,0 +1 @@
1
+ affilinet
@@ -0,0 +1 @@
1
+ 2.0.0
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Eduardo Sampaio
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Affilinet
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'affilinet'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install affilinet
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1,11 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :coverage do
7
+ ENV['COVERAGE'] = 'true'
8
+ Rake::Task["spec"].execute
9
+ end
10
+
11
+ task :default => :spec
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'affilinet/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "affilinet"
8
+ spec.version = Affilinet::VERSION
9
+ spec.authors = ["Eduardo Sampaio"]
10
+ spec.email = ["eduardo@sampa.io"]
11
+ spec.description = %q{Gem to access the rest (actually only get but...) API of affilinet}
12
+ spec.summary = %q{Gem to access the rest (actually only get but...) API of affilinet}
13
+ spec.homepage = "http://github.com/esampaio/affilinet"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
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_dependency "faraday", "~> 0.8.0"
22
+ spec.add_dependency "faraday_middleware", "~> 0.8.0"
23
+ spec.add_dependency "hashie"
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.5"
26
+ spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "rspec"
28
+ spec.add_development_dependency "vcr"
29
+ spec.add_development_dependency "webmock"
30
+ spec.add_development_dependency "simplecov"
31
+ end
@@ -0,0 +1,11 @@
1
+ require "faraday"
2
+ require "faraday_middleware"
3
+ require "hashie"
4
+ require "affilinet/version"
5
+ require "affilinet/middleware/mash"
6
+ require "affilinet/middleware/mashify"
7
+ require "affilinet/middleware/parse_json"
8
+ require "affilinet/client"
9
+
10
+ module Affilinet
11
+ end
@@ -0,0 +1,86 @@
1
+ module Affilinet
2
+ class Client
3
+ HOST = 'product-api.affili.net/'
4
+ SERVICE = 'productservice.svc/'
5
+ API_TYPE = 'JSON'
6
+ API_VERSION = 'V3/'
7
+ attr_reader :uri, :options, :connection, :publisher_id, :password
8
+
9
+ def initialize(options={})
10
+ @options = {ssl: true, image_scales: [], logo_scales: [], shop_ids: [], category_ids: [], facets: []}
11
+ @options.merge! options
12
+ uri = @options[:ssl] ? 'https://' : 'http://'
13
+ uri.concat HOST
14
+
15
+ @uri = URI.join uri, API_VERSION, SERVICE, API_TYPE
16
+ @publisher_id = @options[:publisher_id]
17
+ @password = @options[:password]
18
+
19
+ @connection = connection
20
+ end
21
+
22
+ def connection
23
+ raise ArgumentError, 'publisher_id and password are required to connect' if publisher_id.nil? || password.nil?
24
+ Faraday.new(url: @uri.to_s, params: {publisherId: publisher_id, 'Password' => password}) do |builder|
25
+ builder.use FaradayMiddleware::EncodeJson
26
+ builder.use Affilinet::Middleware::Mashify
27
+ builder.use Affilinet::Middleware::ParseJson
28
+ builder.adapter Faraday.default_adapter
29
+ builder.proxy @options[:proxy]
30
+ end
31
+ end
32
+
33
+ def get endpoint, args = {}
34
+ connection.get(endpoint, args).body
35
+ end
36
+
37
+ def categories id=0
38
+ get 'GetCategoryList', 'ShopId' => id
39
+ end
40
+
41
+ def properties id
42
+ get 'GetPropertyList', 'ShopId' => id
43
+ end
44
+
45
+ def shops args = {}
46
+ options = @options.merge args
47
+ get 'GetShopList',
48
+ 'LogoScale' => options[:logo_scale],
49
+ 'CurrentPage' => options[:page],
50
+ 'PageSize' => options[:page_size],
51
+ 'Query' => options[:query],
52
+ 'UpdatedAfter' => options[:updated_after]
53
+ end
54
+
55
+ def products ids = [], args = {}
56
+ options = @options.merge args
57
+ get 'GetProducts',
58
+ 'ProductIds' => ids.take(50).join(','),
59
+ 'ImageScales' => options[:image_scales].join(','),
60
+ 'LogoScales' => options[:logo_scales].join(',')
61
+ end
62
+
63
+ def search args = {}
64
+ options = @options.merge args
65
+ get 'SearchProducts',
66
+ 'ShopIds' => options[:shop_ids].join(','),
67
+ 'ShopIdMode' => options[:shop_id_exclude] ? 'Exclude' : 'Include',
68
+ 'Query' => options[:query],
69
+ 'CategoryIds' => options[:category_ids].join(','),
70
+ 'UseAffilinetCategories' => options[:affilinet_categories],
71
+ 'ExcludeSubCategories' => options[:categories_exclude],
72
+ 'WithImageOnly' => options[:image_only],
73
+ 'ImageScales' => options[:image_scales].join(','),
74
+ 'LogoScales' => options[:logo_scales].join(','),
75
+ 'CurrentPage' => options[:page],
76
+ 'PageSize' => options[:page_size],
77
+ 'MinimumPrice' => options[:price_min],
78
+ 'MaximumPrice' => options[:price_max],
79
+ 'SortBy' => options[:sort_by],
80
+ 'SortOrder' => options[:sort_asc] ? 'ascending' : 'descending',
81
+ 'FacetFields' => options[:facets].take(4).join(','),
82
+ 'FacetValueLimit' => options[:facet_limit],
83
+ 'FQ' => options[:filter_query]
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,21 @@
1
+ module Affilinet
2
+ module Middleware
3
+ class Mash < Hashie::Mash
4
+ def underscore(camel_cased_word)
5
+ word = camel_cased_word.to_s.dup
6
+ word.gsub!('::', '/')
7
+ word.gsub!(/(?:([A-Za-z\d])|^)(#{/(?=a)b/})(?=\b|[^a-z])/) { "#{$1}#{$1 && '_'}#{$2.downcase}" }
8
+ word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2')
9
+ word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
10
+ word.tr!("-", "_")
11
+ word.downcase!
12
+ word
13
+ end
14
+
15
+ protected
16
+ def convert_key(key)
17
+ underscore key.to_s
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ module Affilinet
2
+ module Middleware
3
+ class Mashify < FaradayMiddleware::Mashify
4
+ dependency do
5
+ self.mash_class = Affilinet::Middleware::Mash
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ module Affilinet
2
+ module Middleware
3
+ class ParseJson < FaradayMiddleware::ParseJson
4
+ define_parser do |body|
5
+ # Check for errors
6
+ if body =~ /ErrorMessages/
7
+ errors = ::JSON.parse body
8
+ raise errors['ErrorMessages'].first['Value']
9
+ end
10
+ # remove BOM (byte order mark) before parsing
11
+ ::JSON.parse body.force_encoding("UTF-8").sub!(/^\xEF\xBB\xBF/, '') unless body.nil? || body.strip.empty?
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,3 @@
1
+ module Affilinet
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,46 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://product-api.affili.net/V3/productservice.svc/JSON/GetCategoryList?Password=1TuKEGkOJJ24dN07ByOy&ShopId=0&publisherId=580442
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.8.9
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
+ Content-Length:
22
+ - '428'
23
+ Content-Type:
24
+ - application/json
25
+ Server:
26
+ - Microsoft-IIS/7.5
27
+ X-Powered-By:
28
+ - ASP.NET
29
+ Date:
30
+ - Sat, 15 Feb 2014 17:41:51 GMT
31
+ body:
32
+ encoding: ASCII-8BIT
33
+ string: !binary |-
34
+ 77u/ew0KICAiR2V0Q2F0ZWdvcnlMaXN0U3VtbWFyeSI6IHsNCiAgICAiUmVj
35
+ b3JkcyI6IDEsDQogICAgIlRvdGFsUmVjb3JkcyI6IDEsDQogICAgIlRvdGFs
36
+ UGFnZXMiOiAxLA0KICAgICJDdXJyZW50UGFnZSI6IDEsDQogICAgIlByb2dy
37
+ YW1JZCI6IDAsDQogICAgIlByb2dyYW1UaXRsZSI6ICJhZmZpbGluZXQiLA0K
38
+ ICAgICJTaG9wVGl0bGUiOiAiYWZmaWxpbmV0IiwNCiAgICAiU2hvcElkIjog
39
+ MA0KICB9LA0KICAiQ2F0ZWdvcmllcyI6IFsNCiAgICB7DQogICAgICAiSWQi
40
+ OiAxNCwNCiAgICAgICJJZFBhdGgiOiAiMTQiLA0KICAgICAgIlRpdGxlIjog
41
+ IkNsb3RoZXMgJiBBY2Nlc3NvcmllcyAiLA0KICAgICAgIlRpdGxlUGF0aCI6
42
+ ICJDbG90aGVzICYgQWNjZXNzb3JpZXMgIiwNCiAgICAgICJQcm9kdWN0Q291
43
+ bnQiOiAzMTMNCiAgICB9DQogIF0NCn0=
44
+ http_version:
45
+ recorded_at: Sat, 15 Feb 2014 17:41:51 GMT
46
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,50 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://product-api.affili.net/V3/productservice.svc/JSON/GetCategoryList?Password=1TuKEGkOJJ24dN07ByOy&ShopId=0&publisherId=580442
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.8.9
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
+ Date:
22
+ - Sat, 15 Feb 2014 17:59:35 GMT
23
+ Server:
24
+ - Microsoft-IIS/6.0
25
+ X-Powered-By:
26
+ - ASP.NET
27
+ X-Aspnet-Version:
28
+ - 4.0.30319
29
+ Content-Length:
30
+ - '428'
31
+ Cache-Control:
32
+ - private
33
+ Content-Type:
34
+ - application/json
35
+ body:
36
+ encoding: ASCII-8BIT
37
+ string: !binary |-
38
+ 77u/ew0KICAiR2V0Q2F0ZWdvcnlMaXN0U3VtbWFyeSI6IHsNCiAgICAiUmVj
39
+ b3JkcyI6IDEsDQogICAgIlRvdGFsUmVjb3JkcyI6IDEsDQogICAgIlRvdGFs
40
+ UGFnZXMiOiAxLA0KICAgICJDdXJyZW50UGFnZSI6IDEsDQogICAgIlByb2dy
41
+ YW1JZCI6IDAsDQogICAgIlByb2dyYW1UaXRsZSI6ICJhZmZpbGluZXQiLA0K
42
+ ICAgICJTaG9wVGl0bGUiOiAiYWZmaWxpbmV0IiwNCiAgICAiU2hvcElkIjog
43
+ MA0KICB9LA0KICAiQ2F0ZWdvcmllcyI6IFsNCiAgICB7DQogICAgICAiSWQi
44
+ OiAxNCwNCiAgICAgICJJZFBhdGgiOiAiMTQiLA0KICAgICAgIlRpdGxlIjog
45
+ IkNsb3RoZXMgJiBBY2Nlc3NvcmllcyAiLA0KICAgICAgIlRpdGxlUGF0aCI6
46
+ ICJDbG90aGVzICYgQWNjZXNzb3JpZXMgIiwNCiAgICAgICJQcm9kdWN0Q291
47
+ bnQiOiAzMTMNCiAgICB9DQogIF0NCn0=
48
+ http_version:
49
+ recorded_at: Sat, 15 Feb 2014 17:59:35 GMT
50
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,156 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://product-api.affili.net/V3/productservice.svc/JSON/GetProducts?ImageScales=&LogoScales=&Password=1TuKEGkOJJ24dN07ByOy&ProductIds=580858761,580858759&publisherId=580442
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.8.9
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
+ Content-Length:
22
+ - '5372'
23
+ Content-Type:
24
+ - application/json
25
+ Server:
26
+ - Microsoft-IIS/7.5
27
+ X-Powered-By:
28
+ - ASP.NET
29
+ Date:
30
+ - Sat, 15 Feb 2014 18:02:54 GMT
31
+ body:
32
+ encoding: ASCII-8BIT
33
+ string: !binary |-
34
+ 77u/ew0KICAiUHJvZHVjdHNTdW1tYXJ5Ijogew0KICAgICJSZWNvcmRzIjog
35
+ MiwNCiAgICAiVG90YWxSZWNvcmRzIjogMiwNCiAgICAiVG90YWxQYWdlcyI6
36
+ IDEsDQogICAgIkN1cnJlbnRQYWdlIjogMQ0KICB9LA0KICAiUHJvZHVjdHMi
37
+ OiBbDQogICAgew0KICAgICAgIkxhc3RTaG9wVXBkYXRlIjogIlwvRGF0ZSgx
38
+ MzkyNDA0ODIwMDAwKzAxMDApXC8iLA0KICAgICAgIkxhc3RQcm9kdWN0Q2hh
39
+ bmdlIjogIlwvRGF0ZSgxMzgyNDMyNDAwMDAwKzAyMDApXC8iLA0KICAgICAg
40
+ IlNjb3JlIjogMC4wLA0KICAgICAgIlByb2R1Y3RJZCI6IDU4MDg1ODc1OSwN
41
+ CiAgICAgICJBcnRpY2xlTnVtYmVyIjogIkFCQ0RfMDAwMTY1IiwNCiAgICAg
42
+ ICJTaG9wSWQiOiAxNzQ4LA0KICAgICAgIlNob3BUaXRsZSI6ICJhZmZpbGlu
43
+ ZXQgU2hvd0Nhc2UiLA0KICAgICAgIlByb2R1Y3ROYW1lIjogIkplYW5zIMK0
44
+ TWlsYW5vwrQsIERhcmsgYmx1ZSIsDQogICAgICAiRGVzY3JpcHRpb24iOiAi
45
+ b2JjYWVjYXQgaXJpdXJlIHF1aXMgdXQgbnVsbGEgYXV0ZW0gY29uc2VxdWF0
46
+ LiBtYWduYSBkb2xvciBhZCB2ZWwgZW9zIGV0IGVhIGR1byBqdXN0byBmZXVn
47
+ aWF0IGNvbnNlY3RldHVyIG5pc2kgcmVidW0uIGxvYm9ydGlzIGV4IGVsaXQs
48
+ IGRvbWluZyBjb25zZXF1YXQuIGthc2QgZXQgc2VkIGNvbnNlY3RldHVyIG5v
49
+ bnVtbXkgY29uc2VjdGV0dWVyIG5pc2kgdXQgZXUgdWxsYW1jb3JwZXIgaW4g
50
+ dnVscHV0YXRlIHp6cmlsIGV4IGltcGVyZGlldCBmYWNpbGlzaXMgYW1ldC4i
51
+ LA0KICAgICAgIkRlc2NyaXB0aW9uU2hvcnQiOiAiZG9sb3JlIG5vc3RydWQg
52
+ ZW9zIGFtZXQsIGFjY3Vtc2FuIHF1aXMgdnVscHV0YXRlIG1hZ25hIHNlZCBl
53
+ dSBlbGl0LCBjdXBpZGl0YXQgdXQgZG9sb3JlcyBsYWJvcmUgZXUgYWNjdXNh
54
+ bSBldCBoZW5kcmVyaXQiLA0KICAgICAgIlNob3BDYXRlZ29yeUlkIjogMzQ3
55
+ NTg3ODEsDQogICAgICAiQWZmaWxpbmV0Q2F0ZWdvcnlJZCI6IDE0LA0KICAg
56
+ ICAgIlNob3BDYXRlZ29yeVBhdGgiOiAiV29tZW4gPiBUcm91c2VycyA+IEpl
57
+ YW5zIiwNCiAgICAgICJBZmZpbGluZXRDYXRlZ29yeVBhdGgiOiAiQ2xvdGhl
58
+ cyAmIEFjY2Vzc29yaWVzICIsDQogICAgICAiQXZhaWxhYmlsaXR5IjogbnVs
59
+ bCwNCiAgICAgICJEZWxpdmVyeVRpbWUiOiBudWxsLA0KICAgICAgIkRlZXBs
60
+ aW5rMSI6ICJodHRwOi8vYmVpbmcuc3VjY2Vzc2Z1bHRvZ2V0aGVyLmNvLnVr
61
+ L2NsaWNrLmFzcD9yZWY9NTgwNDQyJnNpdGU9ODk5MSZ0eXBlPXRleHQmdG5i
62
+ PTImZGl1cmw9aHR0cDovL3d3dy5hZmZpbGluZXQtaW5zaWRlLmRlLyIsDQog
63
+ ICAgICAiRGVlcGxpbmsyIjogIiIsDQogICAgICAiQnJhbmQiOiAiQ2h1eCIs
64
+ DQogICAgICAiTWFudWZhY3R1cmVyIjogbnVsbCwNCiAgICAgICJEaXN0cmli
65
+ dXRvciI6IG51bGwsDQogICAgICAiRUFOIjogIjU4OTI1ODIwMDA4IiwNCiAg
66
+ ICAgICJLZXl3b3JkcyI6IG51bGwsDQogICAgICAiUHJpY2VJbmZvcm1hdGlv
67
+ biI6IHsNCiAgICAgICAgIkN1cnJlbmN5IjogIkdCUCIsDQogICAgICAgICJE
68
+ aXNwbGF5UHJpY2UiOiAic3RhcnRpbmcgZnJvbSA5MC45OSBHQlAgIiwNCiAg
69
+ ICAgICAgIkRpc3BsYXlTaGlwcGluZyI6ICJzdGFydGluZyBmcm9tIDMuOTUg
70
+ R0JQICIsDQogICAgICAgICJEaXNwbGF5QmFzZVByaWNlIjogbnVsbCwNCiAg
71
+ ICAgICAgIlByaWNlRGV0YWlscyI6IHsNCiAgICAgICAgICAiUHJpY2VPbGQi
72
+ OiA5MC45OSwNCiAgICAgICAgICAiUHJpY2VQcmVmaXgiOiAic3RhcnRpbmcg
73
+ ZnJvbSIsDQogICAgICAgICAgIlByaWNlIjogOTAuOTksDQogICAgICAgICAg
74
+ IlByaWNlU3VmZml4IjogbnVsbA0KICAgICAgICB9LA0KICAgICAgICAiU2hp
75
+ cHBpbmdEZXRhaWxzIjogew0KICAgICAgICAgICJTaGlwcGluZ1ByZWZpeCI6
76
+ ICJzdGFydGluZyBmcm9tIiwNCiAgICAgICAgICAiU2hpcHBpbmciOiAzLjk1
77
+ LA0KICAgICAgICAgICJTaGlwcGluZ1N1ZmZpeCI6IG51bGwNCiAgICAgICAg
78
+ fSwNCiAgICAgICAgIkJhc2VQcmljZURldGFpbHMiOiB7DQogICAgICAgICAg
79
+ IkJhc2VQcmljZVByZWZpeCI6IG51bGwsDQogICAgICAgICAgIkJhc2VQcmlj
80
+ ZSI6IG51bGwsDQogICAgICAgICAgIkJhc2VQcmljZVN1ZmZpeCI6IG51bGwN
81
+ CiAgICAgICAgfQ0KICAgICAgfSwNCiAgICAgICJJbWFnZXMiOiBbDQogICAg
82
+ ICAgIFtdDQogICAgICBdLA0KICAgICAgIkxvZ29zIjogW10sDQogICAgICAi
83
+ UHJvcGVydGllcyI6IFsNCiAgICAgICAgew0KICAgICAgICAgICJQcm9wZXJ0
84
+ eU5hbWUiOiAiQ29uZGl0aW9uIiwNCiAgICAgICAgICAiUHJvcGVydHlWYWx1
85
+ ZSI6ICJVc2VkIg0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAg
86
+ IlByb3BlcnR5TmFtZSI6ICJDb2xvdXIiLA0KICAgICAgICAgICJQcm9wZXJ0
87
+ eVZhbHVlIjogIkRhcmsgYmx1ZSINCiAgICAgICAgfSwNCiAgICAgICAgew0K
88
+ ICAgICAgICAgICJQcm9wZXJ0eU5hbWUiOiAiT3JpZ2luIiwNCiAgICAgICAg
89
+ ICAiUHJvcGVydHlWYWx1ZSI6ICJNYWRlIGluIEZyYW5jZSINCiAgICAgICAg
90
+ fSwNCiAgICAgICAgew0KICAgICAgICAgICJQcm9wZXJ0eU5hbWUiOiAiTWF0
91
+ ZXJpYWwiLA0KICAgICAgICAgICJQcm9wZXJ0eVZhbHVlIjogIiINCiAgICAg
92
+ ICAgfQ0KICAgICAgXSwNCiAgICAgICJQcm9ncmFtSWQiOiA4OTkxLA0KICAg
93
+ ICAgIlNob3BDYXRlZ29yeUlkUGF0aCI6ICIzNDc1ODc1NCA+IDM0NzU4Nzc4
94
+ ID4gMzQ3NTg3ODEiLA0KICAgICAgIkFmZmlsaW5ldENhdGVnb3J5SWRQYXRo
95
+ IjogIjE0Ig0KICAgIH0sDQogICAgew0KICAgICAgIkxhc3RTaG9wVXBkYXRl
96
+ IjogIlwvRGF0ZSgxMzkyNDA0ODIwMDAwKzAxMDApXC8iLA0KICAgICAgIkxh
97
+ c3RQcm9kdWN0Q2hhbmdlIjogIlwvRGF0ZSgxMzgyNDMyNDAwMDAwKzAyMDAp
98
+ XC8iLA0KICAgICAgIlNjb3JlIjogMC4wLA0KICAgICAgIlByb2R1Y3RJZCI6
99
+ IDU4MDg1ODc2MSwNCiAgICAgICJBcnRpY2xlTnVtYmVyIjogIkFCQ0RfMDAw
100
+ MTY3IiwNCiAgICAgICJTaG9wSWQiOiAxNzQ4LA0KICAgICAgIlNob3BUaXRs
101
+ ZSI6ICJhZmZpbGluZXQgU2hvd0Nhc2UiLA0KICAgICAgIlByb2R1Y3ROYW1l
102
+ IjogIkplYW5zIMK0RGVuIEhhYWfCtCIsDQogICAgICAiRGVzY3JpcHRpb24i
103
+ OiAidGFraW1hdGEgY29uc2VxdWF0LCBlc3QgZXUgZG9sb3IgZG9sb3IgbWFn
104
+ bmEgZXQgZWEgZWEgZXQgZXggaXBzdW0gc2VkIHNpdCBlcmF0LiBjb21tb2Rv
105
+ IGR1byBkb2xvcmUgbmliaCBlYSB2ZWwgYWRpcGlzY2luZyBub3N0cnVkIGRp
106
+ YW0gZXUgZXUgb2ZmaWNpYSBjbGl0YSBtb2xlc3RpZSBsYWJvcmlzIGRpYW0g
107
+ ZWxpdHIsIGRvbG9yZXMgZmFjaWxpc2lzLiIsDQogICAgICAiRGVzY3JpcHRp
108
+ b25TaG9ydCI6ICJjb25zZXF1YXQuIGl1c3RvIGRpYW0gZXQgYW1ldC4gZG9s
109
+ b3IgY2xpdGEgY29uc2V0ZXR1ciBpbXBlcmRpZXQgTG9yZW0gZXQgZHVpcyBl
110
+ bGl0LCB2dWxwdXRhdGUgVXQgZXJhdCB0YWtpbWF0YSBhbWV0LiIsDQogICAg
111
+ ICAiU2hvcENhdGVnb3J5SWQiOiAzNDc1ODc4MSwNCiAgICAgICJBZmZpbGlu
112
+ ZXRDYXRlZ29yeUlkIjogMTQsDQogICAgICAiU2hvcENhdGVnb3J5UGF0aCI6
113
+ ICJXb21lbiA+IFRyb3VzZXJzID4gSmVhbnMiLA0KICAgICAgIkFmZmlsaW5l
114
+ dENhdGVnb3J5UGF0aCI6ICJDbG90aGVzICYgQWNjZXNzb3JpZXMgIiwNCiAg
115
+ ICAgICJBdmFpbGFiaWxpdHkiOiBudWxsLA0KICAgICAgIkRlbGl2ZXJ5VGlt
116
+ ZSI6IG51bGwsDQogICAgICAiRGVlcGxpbmsxIjogImh0dHA6Ly9iZWluZy5z
117
+ dWNjZXNzZnVsdG9nZXRoZXIuY28udWsvY2xpY2suYXNwP3JlZj01ODA0NDIm
118
+ c2l0ZT04OTkxJnR5cGU9dGV4dCZ0bmI9MiZkaXVybD1odHRwOi8vZGV2ZWxv
119
+ cGVyLmFmZmlsaS5uZXQvZGVza3RvcGRlZmF1bHQuYXNweC90YWJpZC02NyIs
120
+ DQogICAgICAiRGVlcGxpbmsyIjogIiIsDQogICAgICAiQnJhbmQiOiAiTG95
121
+ ZGTCtHMiLA0KICAgICAgIk1hbnVmYWN0dXJlciI6IG51bGwsDQogICAgICAi
122
+ RGlzdHJpYnV0b3IiOiBudWxsLA0KICAgICAgIkVBTiI6ICIzMzk5NTk5MzUx
123
+ OTUyIiwNCiAgICAgICJLZXl3b3JkcyI6ICJldW0iLA0KICAgICAgIlByaWNl
124
+ SW5mb3JtYXRpb24iOiB7DQogICAgICAgICJDdXJyZW5jeSI6ICJHQlAiLA0K
125
+ ICAgICAgICAiRGlzcGxheVByaWNlIjogInN0YXJ0aW5nIGZyb20gMTg3Ljk1
126
+ IEdCUCAoc2VlIGRlc2NyaXB0aW9uKSIsDQogICAgICAgICJEaXNwbGF5U2hp
127
+ cHBpbmciOiAiIDEuOTUgR0JQIChzZWUgZGVzY3JpcHRpb24pIiwNCiAgICAg
128
+ ICAgIkRpc3BsYXlCYXNlUHJpY2UiOiBudWxsLA0KICAgICAgICAiUHJpY2VE
129
+ ZXRhaWxzIjogew0KICAgICAgICAgICJQcmljZU9sZCI6IDE4Ny45NSwNCiAg
130
+ ICAgICAgICAiUHJpY2VQcmVmaXgiOiAic3RhcnRpbmcgZnJvbSIsDQogICAg
131
+ ICAgICAgIlByaWNlIjogMTg3Ljk1LA0KICAgICAgICAgICJQcmljZVN1ZmZp
132
+ eCI6ICIoc2VlIGRlc2NyaXB0aW9uKSINCiAgICAgICAgfSwNCiAgICAgICAg
133
+ IlNoaXBwaW5nRGV0YWlscyI6IHsNCiAgICAgICAgICAiU2hpcHBpbmdQcmVm
134
+ aXgiOiBudWxsLA0KICAgICAgICAgICJTaGlwcGluZyI6IDEuOTUsDQogICAg
135
+ ICAgICAgIlNoaXBwaW5nU3VmZml4IjogIihzZWUgZGVzY3JpcHRpb24pIg0K
136
+ ICAgICAgICB9LA0KICAgICAgICAiQmFzZVByaWNlRGV0YWlscyI6IHsNCiAg
137
+ ICAgICAgICAiQmFzZVByaWNlUHJlZml4IjogbnVsbCwNCiAgICAgICAgICAi
138
+ QmFzZVByaWNlIjogbnVsbCwNCiAgICAgICAgICAiQmFzZVByaWNlU3VmZml4
139
+ IjogbnVsbA0KICAgICAgICB9DQogICAgICB9LA0KICAgICAgIkltYWdlcyI6
140
+ IFsNCiAgICAgICAgW10NCiAgICAgIF0sDQogICAgICAiTG9nb3MiOiBbXSwN
141
+ CiAgICAgICJQcm9wZXJ0aWVzIjogWw0KICAgICAgICB7DQogICAgICAgICAg
142
+ IlByb3BlcnR5TmFtZSI6ICJDb25kaXRpb24iLA0KICAgICAgICAgICJQcm9w
143
+ ZXJ0eVZhbHVlIjogIiINCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAg
144
+ ICAgICJQcm9wZXJ0eU5hbWUiOiAiQ29sb3VyIiwNCiAgICAgICAgICAiUHJv
145
+ cGVydHlWYWx1ZSI6ICIiDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAg
146
+ ICAgICAiUHJvcGVydHlOYW1lIjogIk9yaWdpbiIsDQogICAgICAgICAgIlBy
147
+ b3BlcnR5VmFsdWUiOiAiTWFkZSBpbiBGcmFuY2UiDQogICAgICAgIH0sDQog
148
+ ICAgICAgIHsNCiAgICAgICAgICAiUHJvcGVydHlOYW1lIjogIk1hdGVyaWFs
149
+ IiwNCiAgICAgICAgICAiUHJvcGVydHlWYWx1ZSI6ICIiDQogICAgICAgIH0N
150
+ CiAgICAgIF0sDQogICAgICAiUHJvZ3JhbUlkIjogODk5MSwNCiAgICAgICJT
151
+ aG9wQ2F0ZWdvcnlJZFBhdGgiOiAiMzQ3NTg3NTQgPiAzNDc1ODc3OCA+IDM0
152
+ NzU4NzgxIiwNCiAgICAgICJBZmZpbGluZXRDYXRlZ29yeUlkUGF0aCI6ICIx
153
+ NCINCiAgICB9DQogIF0NCn0=
154
+ http_version:
155
+ recorded_at: Sat, 15 Feb 2014 18:02:54 GMT
156
+ recorded_with: VCR 2.8.0