affilinet 0.0.1

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 (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