openfoodfacts 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 09d860eb4659431d4bf589f95572ab8dd0f8fc8d
4
- data.tar.gz: a23608b0c33c5450db5cacb99b55e9234f1cf96c
3
+ metadata.gz: 236ff1efe128490b9d482a5146be10fbe6907bd6
4
+ data.tar.gz: 24ab028750cca3d08ff539aed262c1bbb94b6f8b
5
5
  SHA512:
6
- metadata.gz: 33fb64a4602691cd37e59d17ad1d659b54888bac32a8ec35307bb324fd61d53964d56c038ff1b748b44e7c0fc3749e8f2d265cef83cf1a74260c06eb036db5a3
7
- data.tar.gz: 0c3efdae29963a8d5cb8973184bd7ad1c0a9ebdc45078f48b7a0fd0bbb43769be901dd8ee07cb635c84110f264f8077570786664fdad51d78c0b35b96aae3f6b
6
+ metadata.gz: f26f4ce2748bb094cd6c162427e99bd47754e5cecd962125c94b464382f3113f38d1ecefa919d678dbfa19cbb95df394ee38d4ec97c5b2f1697b5478247ed952
7
+ data.tar.gz: d918fdc1c6585a50837c257f3b4b58fe5b06d0519a51a6ccda06c70c1dadd3fe3b6d5758d4a05a28bffa50f7d5b76efe6b050edffabd672d687036e6c8e00848
data/README.md CHANGED
@@ -51,12 +51,21 @@ end
51
51
 
52
52
  # Search products
53
53
 
54
- Openfoodfacts::Product.search("Chocolate", locale: 'world', page_size: 3)
54
+ products = Openfoodfacts::Product.search("Chocolate", locale: 'world', page_size: 3)
55
55
  # => [#<Openfoodfacts::Product _id="3045140105502" code="3045140105502" id="3045140105502" image_small_url="http://en.openfoodfacts.org/images/products/304/514/010/5502/front.7.100.jpg" lc="en" product_name="Milka au lait du Pays Alpin">, #<Openfoodfacts::Product _id="3046920028363" code="3046920028363" id="3046920028363" image_small_url="http://en.openfoodfacts.org/images/products/304/692/002/8363/front.5.100.jpg" lc="en" product_name="Tableta de chocolate negro \"Lindt Excellence\" 85% cacao">, #<Openfoodfacts::Product _id="3046920029759" code="3046920029759" id="3046920029759" image_small_url="http://en.openfoodfacts.org/images/products/304/692/002/9759/front.9.100.jpg" lc="en" product_name="Tableta de chocolate negro \"Lindt Excellence\" 90% cacao">]
56
56
 
57
+ # You might need to fetch full product data from results
58
+
59
+ products.first.fetch
60
+
61
+ # By product state
62
+
63
+ product_states = Openfoodfacts::ProductState.all
64
+ product_states.last.products
65
+
57
66
  # Config
58
67
 
59
- Openfoodfacts:Locale.all
68
+ Openfoodfacts::Locale.all
60
69
  # => ["ad", "ad-es", "ad-fr", "ad-pt", "ae", "al", "am", "ar", "at", "au", "ax", "az", "bd", "be", "be-de", "be-fr", "bf", "bg", "bi", "bi-rn", "bn", "br", "by", "by-be", "bz", "ca", "ca-fr", "cg", "ch", "ch-fr", "ch-it", "ci", "cl", "cn", "co", "cr", "cu", "cy", "cy-tr", "cz", "de", "dk", "do", "dz", "dz-fr", "ec", "eg", "es", "es-ca", "es-eu", "es-gl", "fi", "fi-sv", "fr", "ga", "gf", "gn", "gp", "gr", "hk", "hr", "hu", "id", "ie", "ie-ga", "il", "il-ar", "il-ru", "in", "iq", "iq-ku", "ir", "is", "it", "jp", "ke", "ke-sw", "kh", "kr", "kw", "kz", "kz-kk", "lb", "lk", "lk-ta", "lu", "lu-de", "lu-lb", "lv", "ma", "ma-es", "ma-fr", "mc", "md", "mf", "ml", "mn", "mo", "mo-zh", "mq", "mr", "mt", "mt-mt", "mu", "mx", "my", "nc", "nl", "no", "nz", "nz-mi", "pa", "pe", "pf", "ph", "ph-tl", "pl", "pm", "pt", "qa", "re", "ro", "rs", "ru", "sa", "se", "sg", "sg-ms", "sg-ta", "sg-zh", "si", "sk", "sn", "sy", "th", "tn", "tr", "tw", "tz", "tz-sw", "ua", "uk", "us", "ve", "vn", "vu", "vu-bi", "world", "ye", "yt", "za", "za-af", "za-nr", "za-ss", "za-st", "za-tn", "za-ts", "za-ve", "za-xh", "za-zu"]
61
70
  ```
62
71
 
@@ -1,4 +1,5 @@
1
1
  require 'hashie'
2
+ require 'net/http'
2
3
  require 'nokogiri'
3
4
  require 'open-uri'
4
5
 
@@ -32,17 +33,21 @@ module Openfoodfacts
32
33
  url = "http://#{locale}.openfoodfacts.org/cgi/search.pl?search_terms=#{terms}&jqm=1&page=#{page}&page_size=#{page_size}&sort_by=#{sort_by}"
33
34
  json = open(url).read
34
35
  hash = JSON.parse(json)
36
+ html = hash["jqm"]
35
37
 
36
- results_jqm = hash["jqm"]
37
- results_dom = Nokogiri::HTML.fragment(results_jqm)
38
-
39
- results_dom.css('li:not(#loadmore)').map do |product|
38
+ from_jquery_mobile_list(html)
39
+ end
40
+ alias_method :where, :search
41
+
42
+ def from_html_list(html, list_css_selector, code_from_link_regex)
43
+ dom = Nokogiri::HTML.fragment(html)
44
+ dom.css(list_css_selector).map do |product|
40
45
  attributes = {}
41
46
 
42
47
  if link = product.css('a').first
43
48
  attributes["product_name"] = link.inner_text.strip
44
49
 
45
- if code = link.attr('href').split('=').last
50
+ if code = link.attr('href')[code_from_link_regex, 1]
46
51
  attributes["_id"] = code
47
52
  attributes["code"] = code
48
53
  end
@@ -50,13 +55,21 @@ module Openfoodfacts
50
55
 
51
56
  if image = product.css('img').first and image_url = image.attr('src')
52
57
  attributes["image_small_url"] = image_url
53
- attributes["lc"] = Openfoodfacts.locale_from_link(image_url)
58
+ attributes["lc"] = Locale.locale_from_link(image_url)
54
59
  end
55
60
 
56
61
  new(attributes)
57
62
  end
63
+
64
+ end
65
+
66
+ def from_jquery_mobile_list(jqm_html)
67
+ from_html_list(jqm_html, 'ul li:not(#loadmore)', /code=(\d+)\Z/i)
68
+ end
69
+
70
+ def from_website_list(html)
71
+ from_html_list(html, 'ul.products li', /\/(\d+)[\/|\Z]/i)
58
72
  end
59
- alias_method :where, :search
60
73
 
61
74
  end
62
75
 
@@ -0,0 +1,49 @@
1
+ require 'hashie'
2
+ require 'nokogiri'
3
+ require 'open-uri'
4
+
5
+ module Openfoodfacts
6
+ class ProductState < Hashie::Mash
7
+
8
+ class << self
9
+
10
+ # Get product states
11
+ #
12
+ def all
13
+ url = "http://world.openfoodfacts.org/states"
14
+ html = open(url).read
15
+ dom = Nokogiri::HTML.fragment(html)
16
+
17
+ dom.css('table#tagstable tbody tr').map do |product_state|
18
+ link = product_state.css('a').first
19
+
20
+ new({
21
+ "name" => link.text.strip,
22
+ "url" => URI.join(url, link.attr('href')).to_s,
23
+ "products_count" => product_state.css('td').last.text.to_i
24
+ })
25
+ end
26
+ end
27
+
28
+ end
29
+
30
+ # Get products with state
31
+ #
32
+ def products(page: -1)
33
+ if url
34
+ if page == -1
35
+ if products_count
36
+ pages_count = (products_count.to_f / 20).ceil
37
+ (1..pages_count).map { |page| products(page: page) }.flatten
38
+ end
39
+ else
40
+ page_url = "#{url}/#{page}"
41
+ html = open(page_url).read
42
+
43
+ Product.from_website_list(html)
44
+ end
45
+ end
46
+ end
47
+
48
+ end
49
+ end
@@ -1,3 +1,5 @@
1
+ require 'net/http'
2
+
1
3
  module Openfoodfacts
2
4
  class User < Hashie::Mash
3
5
 
@@ -1,3 +1,3 @@
1
1
  module Openfoodfacts
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.2"
3
3
  end
data/lib/openfoodfacts.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require_relative 'openfoodfacts/locale'
2
2
  require_relative 'openfoodfacts/product'
3
+ require_relative 'openfoodfacts/product_state'
3
4
  require_relative 'openfoodfacts/user'
4
5
  require_relative 'openfoodfacts/version'
5
6
 
@@ -0,0 +1,280 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://world.openfoodfacts.org/api/v0/produit/3029330003533.json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Sat, 23 May 2015 19:34:31 GMT
23
+ Server:
24
+ - Apache/2.2.20 (Unix) mod_perl/2.0.5 Perl/v5.10.1
25
+ Access-Control-Allow-Origin:
26
+ - "*"
27
+ Content-Type:
28
+ - application/json; charset=UTF-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ body:
32
+ encoding: ASCII-8BIT
33
+ string: !binary |-
34
+ eyJzdGF0dXNfdmVyYm9zZSI6InByb2R1Y3QgZm91bmQiLCJzdGF0dXMiOjEs
35
+ InByb2R1Y3QiOnsibGFzdF9lZGl0X2RhdGVzX3RhZ3MiOlsiMjAxMi0xMC0x
36
+ OCIsIjIwMTItMTAiLCIyMDEyIiwiMjAxNS0wMy0yMSIsIjIwMTUtMDMiLCIy
37
+ MDE1IiwiMjAxNS0wNS0yMSIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
38
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
39
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
40
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
41
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
42
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
43
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
44
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
45
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
46
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
47
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
48
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
49
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
50
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
51
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
52
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
53
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
54
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
55
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
56
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
57
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
58
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
59
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
60
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
61
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
62
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
63
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
64
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
65
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
66
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
67
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
68
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
69
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
70
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
71
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
72
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
73
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
74
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
75
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
76
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
77
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
78
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
79
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
80
+ MyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIy
81
+ MDE1IiwiMjAxNS0wNS0yMyIsIjIwMTUtMDUiLCIyMDE1IiwiMjAxNS0wNS0y
82
+ MyIsIjIwMTUtMDUiLCIyMDE1Il0sImxhYmVsc19oaWVyYXJjaHkiOltdLCJf
83
+ aWQiOiIzMDI5MzMwMDAzNTMzIiwiY2F0ZWdvcmllc19oaWVyYXJjaHkiOlsi
84
+ ZW46cGxhbnQtYmFzZWQtZm9vZHMtYW5kLWJldmVyYWdlcyIsImVuOnBsYW50
85
+ LWJhc2VkLWZvb2RzIiwiZW46Y2VyZWFscy1hbmQtcG90YXRvZXMiLCJlbjpi
86
+ cmVhZHMiLCJlbjpzbGljZWQtYnJlYWRzIiwiZnI6cGFpbnMtZGUtbWllLWNv
87
+ bXBsZXQiXSwicG5uc19ncm91cHNfMSI6IkNlcmVhbHMgYW5kIHBvdGF0b2Vz
88
+ IiwiY2hlY2tlcnNfdGFncyI6W10sInN0YXRlc190YWdzIjpbImVuOnRvLWJl
89
+ LWNoZWNrZWQiLCJlbjpjb21wbGV0ZSIsImVuOm51dHJpdGlvbi1mYWN0cy1j
90
+ b21wbGV0ZWQiLCJlbjppbmdyZWRpZW50cy1jb21wbGV0ZWQiLCJlbjpleHBp
91
+ cmF0aW9uLWRhdGUtdG8tYmUtY29tcGxldGVkIiwiZW46Y2hhcmFjdGVyaXN0
92
+ aWNzLWNvbXBsZXRlZCIsImVuOnBob3Rvcy12YWxpZGF0ZWQiLCJlbjpwaG90
93
+ b3MtdXBsb2FkZWQiXSwibGFiZWxzX3RhZ3MiOltdLCJpbWFnZV9zbWFsbF91
94
+ cmwiOiJodHRwOi8vd29ybGQub3BlbmZvb2RmYWN0cy5vcmcvaW1hZ2VzL3By
95
+ b2R1Y3RzLzMwMi85MzMvMDAwLzM1MzMvZnJvbnQuOS4yMDAuanBnIiwiY29k
96
+ ZSI6IjMwMjkzMzAwMDM1MzMiLCJ0cmFjZXNfdGFncyI6WyJsYWl0Iiwib2V1
97
+ ZnMiLCJzZXNhbWUiLCJzb2phIl0sImxhbmciOiJmciIsInBob3RvZ3JhcGhl
98
+ cnMiOlsibWFudTE0MDAiXSwiaW5ncmVkaWVudHNfdGhhdF9tYXlfYmVfZnJv
99
+ bV9wYWxtX29pbF90YWdzIjpbImU0NzEtbW9uby1ldC1kaWdseWNlcmlkZXMt
100
+ ZC1hY2lkZXMtZ3Jhcy1hbGltZW50YWlyZXMiXSwiZ2VuZXJpY19uYW1lIjoi
101
+ UGFpbiBjb21wbGV0IGVuIHRyYW5jaGUiLCJvbGRfYWRkaXRpdmVzX3RhZ3Mi
102
+ OlsiZW46ZTU3NSIsImVuOmUyODIiLCJlbjplNDcxIiwiZW46ZTMwMCJdLCJy
103
+ ZXYiOjg2LCJfa2V5d29yZHMiOlsicGFpbiIsImNyb3VzdGkiLCJmcmFuY2Ui
104
+ LCJqYWNxdWV0IiwibWllIiwidGVycmUiLCJib2lzc29uIiwiYmFzZSIsImV0
105
+ IiwidmVnZXRhbGUiLCJjb21wbGV0IiwidHJhbmNoZSIsIm9yaWdpbmUiLCJl
106
+ biIsInBvbW1lIiwiY2VyZWFsZSIsImRlIiwiYWxpbWVudCIsIm1vZWxsZXV4
107
+ IiwidmVnZXRhdXgiXSwiZW1iX2NvZGVzIjoiIiwiZWRpdG9ycyI6WyIiLCJu
108
+ aW9mZiIsIm1hbnUxNDAwIiwiYW5kcmUiLCJzdGVwaGFuZSJdLCJtYXhfaW1n
109
+ aWQiOiI0IiwiYWRkaXRpdmVzX3RhZ3MiOlsiZW46ZTU3NSIsImVuOmUyODIi
110
+ LCJlbjplNDcxIiwiZW46ZTMwMCJdLCJlbWJfY29kZXNfb3JpZyI6IiIsIm51
111
+ dHJpZW50X2xldmVsc190YWdzIjpbIm1hdGllcmVzLWdyYXNzZXMtbGlwaWRl
112
+ cy1lbi1mYWlibGUtcXVhbnRpdGUiLCJhY2lkZXMtZ3Jhcy1zYXR1cmVzLWVu
113
+ LWZhaWJsZS1xdWFudGl0ZSIsInN1Y3Jlcy1lbi1xdWFudGl0ZS1tb2RlcmVl
114
+ Iiwic2VsLWVuLXF1YW50aXRlLW1vZGVyZWUiXSwiaW5mb3JtZXJzX3RhZ3Mi
115
+ OlsiYW5kcmUiLCJtYW51MTQwMCIsInN0ZXBoYW5lIiwibmlvZmYiXSwicGhv
116
+ dG9ncmFwaGVyc190YWdzIjpbImFuZHJlIl0sImFkZGl0aXZlc19uIjo0LCJw
117
+ bm5zX2dyb3Vwc18yX3RhZ3MiOlsiYnJlYWQiXSwiYWxsZXJnZW5zX2hpZXJh
118
+ cmNoeSI6W10sInVua25vd25fbnV0cmllbnRzX3RhZ3MiOltdLCJwYWNrYWdp
119
+ bmdfdGFncyI6WyJzYWMiLCJwbGFzdGlxdWUiXSwibWFudWZhY3R1cmluZ19w
120
+ bGFjZXMiOiIiLCJ1bmlxdWVfc2NhbnNfbiI6MywibnV0cmltZW50cyI6eyJz
121
+ b2RpdW0iOiIwLjQ0Iiwic3VnYXJzIjoiNi41Iiwic3VnYXJzX3ZhbHVlIjoi
122
+ Ni41IiwiY2FyYm9oeWRyYXRlc191bml0IjoiZyIsImZhdF91bml0IjoiZyIs
123
+ InByb3RlaW5zX3VuaXQiOiJnIiwibnV0cml0aW9uLXNjb3JlLWZyXzEwMGci
124
+ OiItMiIsImZhdCI6IjIuNSIsImNhcmJvaHlkcmF0ZXNfdmFsdWUiOiI0NCIs
125
+ InByb3RlaW5zX3NlcnZpbmciOiIxMi44Iiwic29kaXVtX3NlcnZpbmciOiIw
126
+ LjUzNSIsImZpYmVyX3ZhbHVlIjoiNiIsInByb3RlaW5zIjoiMTAuNSIsInNh
127
+ bHQiOiIxLjExNzYiLCJzYWx0X3VuaXQiOiJnIiwibnV0cml0aW9uLXNjb3Jl
128
+ LWZyIjoiLTIiLCJzdWdhcnNfdW5pdCI6ImciLCJmYXRfc2VydmluZyI6IjMu
129
+ MDQiLCJmYXRfdmFsdWUiOiIyLjUiLCJzb2RpdW1fdW5pdCI6ImciLCJzdWdh
130
+ cnNfMTAwZyI6IjYuNSIsInNvZGl1bV8xMDBnIjoiMC40NCIsInNhdHVyYXRl
131
+ ZC1mYXRfc2VydmluZyI6IjAuNjA4Iiwic2F0dXJhdGVkLWZhdF91bml0Ijoi
132
+ ZyIsImZpYmVyX3VuaXQiOiJnIiwiZW5lcmd5X3ZhbHVlIjoiMTA2NyIsImVu
133
+ ZXJneSI6IjEwNjciLCJlbmVyZ3lfdW5pdCI6ImtKIiwic3VnYXJzX3NlcnZp
134
+ bmciOiI3LjkiLCJjYXJib2h5ZHJhdGVzXzEwMGciOiI0NCIsIm51dHJpdGlv
135
+ bi1zY29yZS11ayI6Ii0yIiwic2F0dXJhdGVkLWZhdF92YWx1ZSI6IjAuNSIs
136
+ InByb3RlaW5zXzEwMGciOiIxMC41IiwiZmliZXJfc2VydmluZyI6IjcuMjki
137
+ LCJjYXJib2h5ZHJhdGVzX3NlcnZpbmciOiI1My41Iiwic29kaXVtX3ZhbHVl
138
+ IjoiMC40NCIsInNhbHRfdmFsdWUiOiIxLjExNzYiLCJlbmVyZ3lfc2Vydmlu
139
+ ZyI6IjEzMDAiLCJmYXRfMTAwZyI6IjIuNSIsInNhdHVyYXRlZC1mYXRfMTAw
140
+ ZyI6IjAuNSIsIm51dHJpdGlvbi1zY29yZS11a18xMDBnIjoiLTIiLCJmaWJl
141
+ ciI6IjYiLCJzYWx0XzEwMGciOiIxLjExNzYiLCJzYWx0X3NlcnZpbmciOiIx
142
+ LjM2IiwiZmliZXJfMTAwZyI6IjYiLCJjYXJib2h5ZHJhdGVzIjoiNDQiLCJl
143
+ bmVyZ3lfMTAwZyI6IjEwNjciLCJwcm90ZWluc192YWx1ZSI6IjEwLjUiLCJz
144
+ YXR1cmF0ZWQtZmF0IjoiMC41In0sImNvdW50cmllc190YWdzIjpbImVuOmZy
145
+ YW5jZSJdLCJpbmdyZWRpZW50c19mcm9tX3BhbG1fb2lsX3RhZ3MiOltdLCJw
146
+ dXJjaGFzZV9wbGFjZXMiOiIiLCJlbWJfY29kZXNfdGFncyI6W10sImJyYW5k
147
+ c190YWdzIjpbImphY3F1ZXQiXSwicG5uc19ncm91cHNfMiI6IkJyZWFkIiwi
148
+ Y291bnRyaWVzX2hpZXJhcmNoeSI6WyJlbjpmcmFuY2UiXSwidHJhY2VzIjoi
149
+ bGFpdCxvZXVmcyxzw6lzYW1lLHNvamEiLCJjYXRlZ29yaWVzIjoiQWxpbWVu
150
+ dHMgZXQgYm9pc3NvbnMgw6AgYmFzZSBkZSB2w6lnw6l0YXV4LEFsaW1lbnRz
151
+ IGQnb3JpZ2luZSB2w6lnw6l0YWxlLEPDqXLDqWFsZXMgZXQgcG9tbWVzIGRl
152
+ IHRlcnJlLFBhaW5zLFBhaW5zIGRlIG1pZSxQYWlucyBkZSBtaWUgY29tcGxl
153
+ dCIsImluZ3JlZGllbnRzX3RleHQiOiJQYWluIGRlIG1pZSBjb21wbGV0IDog
154
+ RmFyaW5lIGNvbXBsw6h0ZSBkZSBibMOpICg2MSUpLCBlYXUsIGxldnVyZSwg
155
+ c3VjcmUsIGh1aWxlIGRlIGNvbHphLCBzZWwsIGFyw7RtZSwgZGV4dHJvc2Us
156
+ IGxldmFpbiBkZSBibMOpIGTDqXNoeWRyYXTDqSBldCBkw6l2aXRhbGlzw6ks
157
+ IGdsdXRlbiBkZSBibMOpLCBDb3JyZWN0ZXVyIGQnYWNpZGl0w6k6IEU1NzUs
158
+ IENvbnNlcnZhdGV1cjogIEUyODIsIGZhcmluZSBkZSBibMOpLCDDqW11bHNp
159
+ ZmlhbnQ6IEU0NzEsIGZpYnJlcyB2w6lnw6l0YWxlcyAoYXZvaW5lIGV0L291
160
+ IHBvaXMgZXQvb3UgbWHDr3MpLCBBZ2VudCBkZSB0cmFpdGVtZW50IGRlIGxh
161
+ IGZhcmluZTogRTMwMC4iLCJjcmVhdGVkX3QiOjEzMzgwNDY5MjUsInByb2R1
162
+ Y3RfbmFtZSI6IkNyb3VzdGkgTW9lbGxldXggQ29tcGxldCIsImNyZWF0b3Ii
163
+ OiJhbmRyZSIsImluZ3JlZGllbnRzX2Zyb21fb3JfdGhhdF9tYXlfYmVfZnJv
164
+ bV9wYWxtX29pbF9uIjoxLCJzZXJ2aW5nX3NpemUiOiIyIHRyYW5jaGVzIDEy
165
+ MS41ZyIsIm5vX251dHJpdGlvbl9kYXRhIjpudWxsLCJjb21wbGV0ZWRfdCI6
166
+ MTM1MDU2NzUxMywibGFzdF9tb2RpZmllZF9ieSI6bnVsbCwiYWxsZXJnZW5z
167
+ IjoiIiwibmV3X2FkZGl0aXZlc19uIjo0LCJvcmlnaW5zIjoiRnJhbmNlIiwi
168
+ c3RvcmVzIjoiIiwibnV0cml0aW9uX2dyYWRlX2ZyIjoiYSIsIm51dHJpZW50
169
+ X2xldmVscyI6eyJzYWx0IjoibW9kZXJhdGUiLCJmYXQiOiJsb3ciLCJzdWdh
170
+ cnMiOiJtb2RlcmF0ZSIsInNhdHVyYXRlZC1mYXQiOiJsb3cifSwiaWQiOiIz
171
+ MDI5MzMwMDAzNTMzIiwic3RvcmVzX3RhZ3MiOltdLCJjb3VudHJpZXMiOiJG
172
+ cmFuY2UiLCJwdXJjaGFzZV9wbGFjZXNfdGFncyI6W10sImZydWl0cy12ZWdl
173
+ dGFibGVzLW51dHNfMTAwZ19lc3RpbWF0ZSI6MCwiaW50ZXJmYWNlX3ZlcnNp
174
+ b25fbW9kaWZpZWQiOiIyMDEzMDMyMy5qcW0iLCJzb3J0a2V5IjoxNDMyMzg3
175
+ MzUxLCJsYXN0X21vZGlmaWVkX3QiOjE0MzIzODczNTEsIm51dHJpdGlvbl9z
176
+ Y29yZV9kZWJ1ZyI6IiAtLSBlbmVyZ3kgMyArIHNhdC1mYXQgMCArIGZyLXNh
177
+ dC1mYXQtZm9yLWZhdHMgMCArIHN1Z2FycyAxICsgc29kaXVtIDQgLSBmcnVp
178
+ dHMgMCUgMCAtIGZpYmVyIDUgLSBwcm90ZWlucyA1IC0tIGZzYSAtMiAtLSBm
179
+ ciAtMiIsImNvdW50cmllcy4yMDEzMTIyNyI6bnVsbCwiY29ycmVjdG9yc190
180
+ YWdzIjpbImFuZHJlIiwibWFudTE0MDAiLCJzdGVwaGFuZSIsIm5pb2ZmIl0s
181
+ Im5ld19hZGRpdGl2ZXNfZGVidWciOiJsYzogZnIgLSAgWyBwYWluLWRlLW1p
182
+ ZS1jb21wbGV0IC0+IGZyOnBhaW4tZGUtbWllLWNvbXBsZXQgIF0gIFsgZmFy
183
+ aW5lLWNvbXBsZXRlLWRlLWJsZSAtPiBmcjpmYXJpbmUtY29tcGxldGUtZGUt
184
+ YmxlICBdICBbIDYxIC0+IGZyOjYxICBdICBbIGVhdSAtPiBmcjplYXUgIF0g
185
+ IFsgbGV2dXJlIC0+IGZyOmxldnVyZSAgXSAgWyBzdWNyZSAtPiBmcjpzdWNy
186
+ ZSAgXSAgWyBodWlsZS1kZS1jb2x6YSAtPiBmcjpodWlsZS1kZS1jb2x6YSAg
187
+ XSAgWyBzZWwgLT4gZnI6c2VsICBdICBbIGFyb21lIC0+IGZyOmFyb21lICBd
188
+ ICBbIGRleHRyb3NlIC0+IGZyOmRleHRyb3NlICBdICBbIGxldmFpbi1kZS1i
189
+ bGUtZGVzaHlkcmF0ZS1ldC1kZXZpdGFsaXNlIC0+IGZyOmxldmFpbi1kZS1i
190
+ bGUtZGVzaHlkcmF0ZS1ldC1kZXZpdGFsaXNlICBdICBbIGdsdXRlbi1kZS1i
191
+ bGUgLT4gZnI6Z2x1dGVuLWRlLWJsZSAgXSAgWyBjb3JyZWN0ZXVyIC0+IGZy
192
+ OmNvcnJlY3RldXIgIF0gIFsgZTU3NSAtPiBlbjplNTc1ICAtPiBleGlzdHMg
193
+ IF0gIFsgZTI4MiAtPiBlbjplMjgyICAtPiBleGlzdHMgIF0gIFsgZmFyaW5l
194
+ LWRlLWJsZSAtPiBmcjpmYXJpbmUtZGUtYmxlICBdICBbIGU0NzEgLT4gZW46
195
+ ZTQ3MSAgLT4gZXhpc3RzICBdICBbIGZpYnJlcy12ZWdldGFsZXMgLT4gZnI6
196
+ ZmlicmVzLXZlZ2V0YWxlcyAgXSAgWyBhdm9pbmUtZXQtb3UtcG9pcy1ldC1v
197
+ dS1tYWlzIC0+IGZyOmF2b2luZS1ldC1vdS1wb2lzLWV0LW91LW1haXMgIF0g
198
+ IFsgYWdlbnQgLT4gZnI6YWdlbnQgIF0gIFsgZGUtbGEtZmFyaW5lIC0+IGZy
199
+ OmRlLWxhLWZhcmluZSAgXSAgWyBlMzAwIC0+IGVuOmUzMDAgIC0+IGV4aXN0
200
+ cyAgXSAgWyBsZXZhaW4tZGUtYmxlLWRlc2h5ZHJhdGUgLT4gZnI6bGV2YWlu
201
+ LWRlLWJsZS1kZXNoeWRyYXRlICBdICBbIGRldml0YWxpc2UgLT4gZnI6ZGV2
202
+ aXRhbGlzZSAgXSAiLCJjb3JyZWN0b3JzIjpbIm1hbnUxNDAwIl0sImJyYW5k
203
+ cyI6IkphY3F1ZXQiLCJpbmdyZWRpZW50c190YWdzIjpbInBhaW4tZGUtbWll
204
+ LWNvbXBsZXQiLCJlYXUiLCJsZXZ1cmUiLCJzdWNyZSIsImh1aWxlLWRlLWNv
205
+ bHphIiwic2VsIiwiYXJvbWUiLCJkZXh0cm9zZSIsImxldmFpbi1kZS1ibGUt
206
+ ZGVzaHlkcmF0ZS1ldC1kZXZpdGFsaXNlIiwiZ2x1dGVuLWRlLWJsZSIsImNv
207
+ cnJlY3RldXItZC1hY2lkaXRlIiwiZTU3NSIsImNvbnNlcnZhdGV1ciIsImUy
208
+ ODIiLCJmYXJpbmUtZGUtYmxlIiwiZW11bHNpZmlhbnQiLCJlNDcxIiwiZmli
209
+ cmVzLXZlZ2V0YWxlcyIsImF2b2luZS1ldC1vdS1wb2lzLWV0LW91LW1haXMi
210
+ LCJhZ2VudC1kZS10cmFpdGVtZW50LWRlLWxhLWZhcmluZSIsImUzMDAiLCJm
211
+ YXJpbmUtY29tcGxldGUtZGUtYmxlIl0sIm5ld19hZGRpdGl2ZXNfdGFncyI6
212
+ WyJlbjplNTc1IiwiZW46ZTI4MiIsImVuOmU0NzEiLCJlbjplMzAwIl0sImlu
213
+ Zm9ybWVycyI6WyJtYW51MTQwMCIsInN0ZXBoYW5lIl0sInN0YXRlcyI6ImVu
214
+ OnRvLWJlLWNoZWNrZWQsIGVuOmNvbXBsZXRlLCBlbjpudXRyaXRpb24tZmFj
215
+ dHMtY29tcGxldGVkLCBlbjppbmdyZWRpZW50cy1jb21wbGV0ZWQsIGVuOmV4
216
+ cGlyYXRpb24tZGF0ZS10by1iZS1jb21wbGV0ZWQsIGVuOmNoYXJhY3Rlcmlz
217
+ dGljcy1jb21wbGV0ZWQsIGVuOnBob3Rvcy12YWxpZGF0ZWQsIGVuOnBob3Rv
218
+ cy11cGxvYWRlZCIsImVudHJ5X2RhdGVzX3RhZ3MiOlsiMjAxMi0wNS0yNiIs
219
+ IjIwMTItMDUiLCIyMDEyIl0sIm51dHJpdGlvbl9ncmFkZXNfdGFncyI6WyJh
220
+ Il0sImluZ3JlZGllbnRzX3RleHRfd2l0aF9hbGxlcmdlbnMiOiJQYWluIGRl
221
+ IG1pZSBjb21wbGV0IDogRmFyaW5lIGNvbXBsw6h0ZSBkZSBibMOpICg2MSUp
222
+ LCBlYXUsIGxldnVyZSwgc3VjcmUsIGh1aWxlIGRlIGNvbHphLCBzZWwsIGFy
223
+ w7RtZSwgZGV4dHJvc2UsIGxldmFpbiBkZSBibMOpIGTDqXNoeWRyYXTDqSBl
224
+ dCBkw6l2aXRhbGlzw6ksIGdsdXRlbiBkZSBibMOpLCBDb3JyZWN0ZXVyIGQn
225
+ YWNpZGl0w6k6IEU1NzUsIENvbnNlcnZhdGV1cjogIEUyODIsIGZhcmluZSBk
226
+ ZSBibMOpLCDDqW11bHNpZmlhbnQ6IEU0NzEsIGZpYnJlcyB2w6lnw6l0YWxl
227
+ cyAoYXZvaW5lIGV0L291IHBvaXMgZXQvb3UgbWHDr3MpLCBBZ2VudCBkZSB0
228
+ cmFpdGVtZW50IGRlIGxhIGZhcmluZTogRTMwMC4iLCJwYWNrYWdpbmciOiJT
229
+ YWMsUGxhc3RpcXVlIiwic2VydmluZ19xdWFudGl0eSI6MTIxLjUsIm1hbnVm
230
+ YWN0dXJpbmdfcGxhY2VzX3RhZ3MiOltdLCJvcmlnaW5zX3RhZ3MiOlsiZnJh
231
+ bmNlIl0sInNjYW5zX24iOjIyLCJudXRyaXRpb25fZGF0YV9wZXIiOiIxMDBn
232
+ IiwibGFiZWxzIjoiIiwibGluayI6IiIsImNpdGllc190YWdzIjpbXSwiZW1i
233
+ X2NvZGVzXzIwMTQxMDE2IjoiIiwiY2F0ZWdvcmllc190YWdzIjpbImVuOnBs
234
+ YW50LWJhc2VkLWZvb2RzLWFuZC1iZXZlcmFnZXMiLCJlbjpwbGFudC1iYXNl
235
+ ZC1mb29kcyIsImVuOmNlcmVhbHMtYW5kLXBvdGF0b2VzIiwiZW46YnJlYWRz
236
+ IiwiZW46c2xpY2VkLWJyZWFkcyIsImZyOnBhaW5zLWRlLW1pZS1jb21wbGV0
237
+ Il0sInF1YW50aXR5IjoiNzMwIGciLCJleHBpcmF0aW9uX2RhdGUiOiIiLCJp
238
+ bmdyZWRpZW50c190aGF0X21heV9iZV9mcm9tX3BhbG1fb2lsX24iOjEsInN0
239
+ YXRlc19oaWVyYXJjaHkiOlsiZW46dG8tYmUtY2hlY2tlZCIsImVuOmNvbXBs
240
+ ZXRlIiwiZW46bnV0cml0aW9uLWZhY3RzLWNvbXBsZXRlZCIsImVuOmluZ3Jl
241
+ ZGllbnRzLWNvbXBsZXRlZCIsImVuOmV4cGlyYXRpb24tZGF0ZS10by1iZS1j
242
+ b21wbGV0ZWQiLCJlbjpjaGFyYWN0ZXJpc3RpY3MtY29tcGxldGVkIiwiZW46
243
+ cGhvdG9zLXZhbGlkYXRlZCIsImVuOnBob3Rvcy11cGxvYWRlZCJdLCJlbWJf
244
+ Y29kZSI6IiIsImFsbGVyZ2Vuc190YWdzIjpbXSwiaW5ncmVkaWVudHNfZnJv
245
+ bV9wYWxtX29pbF9uIjowLCJpbWFnZV91cmwiOiJodHRwOi8vd29ybGQub3Bl
246
+ bmZvb2RmYWN0cy5vcmcvaW1hZ2VzL3Byb2R1Y3RzLzMwMi85MzMvMDAwLzM1
247
+ MzMvZnJvbnQuOS40MDAuanBnIiwibGMiOiJmciIsImluZ3JlZGllbnRzIjpb
248
+ eyJ0ZXh0IjoiUGFpbiBkZSBtaWUgY29tcGxldCIsImlkIjoicGFpbi1kZS1t
249
+ aWUtY29tcGxldCIsInJhbmsiOjF9LHsidGV4dCI6ImVhdSIsImlkIjoiZWF1
250
+ IiwicmFuayI6Mn0seyJ0ZXh0IjoibGV2dXJlIiwiaWQiOiJsZXZ1cmUiLCJy
251
+ YW5rIjozfSx7InRleHQiOiJzdWNyZSIsImlkIjoic3VjcmUiLCJyYW5rIjo0
252
+ fSx7InRleHQiOiJodWlsZSBkZSBjb2x6YSIsImlkIjoiaHVpbGUtZGUtY29s
253
+ emEiLCJyYW5rIjo1fSx7InRleHQiOiJzZWwiLCJpZCI6InNlbCIsInJhbmsi
254
+ OjZ9LHsidGV4dCI6ImFyw7RtZSIsImlkIjoiYXJvbWUiLCJyYW5rIjo3fSx7
255
+ InRleHQiOiJkZXh0cm9zZSIsImlkIjoiZGV4dHJvc2UiLCJyYW5rIjo4fSx7
256
+ InRleHQiOiJsZXZhaW4gZGUgYmzDqSBkw6lzaHlkcmF0w6kgZXQgZMOpdml0
257
+ YWxpc8OpIiwiaWQiOiJsZXZhaW4tZGUtYmxlLWRlc2h5ZHJhdGUtZXQtZGV2
258
+ aXRhbGlzZSIsInJhbmsiOjl9LHsidGV4dCI6ImdsdXRlbiBkZSBibMOpIiwi
259
+ aWQiOiJnbHV0ZW4tZGUtYmxlIiwicmFuayI6MTB9LHsidGV4dCI6IkNvcnJl
260
+ Y3RldXIgZCdhY2lkaXTDqSIsImlkIjoiY29ycmVjdGV1ci1kLWFjaWRpdGUi
261
+ LCJyYW5rIjoxMX0seyJ0ZXh0IjoiRTU3NSIsImlkIjoiZTU3NSIsInJhbmsi
262
+ OjEyfSx7InRleHQiOiJDb25zZXJ2YXRldXIiLCJpZCI6ImNvbnNlcnZhdGV1
263
+ ciIsInJhbmsiOjEzfSx7InRleHQiOiJFMjgyIiwiaWQiOiJlMjgyIiwicmFu
264
+ ayI6MTR9LHsidGV4dCI6ImZhcmluZSBkZSBibMOpIiwiaWQiOiJmYXJpbmUt
265
+ ZGUtYmxlIiwicmFuayI6MTV9LHsidGV4dCI6IsOpbXVsc2lmaWFudCIsImlk
266
+ IjoiZW11bHNpZmlhbnQiLCJyYW5rIjoxNn0seyJ0ZXh0IjoiRTQ3MSIsImlk
267
+ IjoiZTQ3MSIsInJhbmsiOjE3fSx7InRleHQiOiJmaWJyZXMgdsOpZ8OpdGFs
268
+ ZXMiLCJpZCI6ImZpYnJlcy12ZWdldGFsZXMiLCJyYW5rIjoxOH0seyJ0ZXh0
269
+ IjoiYXZvaW5lIGV0L291IHBvaXMgZXQvb3UgbWHDr3MiLCJpZCI6ImF2b2lu
270
+ ZS1ldC1vdS1wb2lzLWV0LW91LW1haXMiLCJyYW5rIjoxOX0seyJ0ZXh0Ijoi
271
+ QWdlbnQgZGUgdHJhaXRlbWVudCBkZSBsYSBmYXJpbmUiLCJpZCI6ImFnZW50
272
+ LWRlLXRyYWl0ZW1lbnQtZGUtbGEtZmFyaW5lIiwicmFuayI6MjB9LHsidGV4
273
+ dCI6IkUzMDAuIiwiaWQiOiJlMzAwIiwicmFuayI6MjF9LHsicGVyY2VudCI6
274
+ IjYxIiwidGV4dCI6IkZhcmluZSBjb21wbMOodGUgZGUgYmzDqSIsImlkIjoi
275
+ ZmFyaW5lLWNvbXBsZXRlLWRlLWJsZSJ9XSwicG5uc19ncm91cHNfMV90YWdz
276
+ IjpbImNlcmVhbHMtYW5kLXBvdGF0b2VzIl0sImNoZWNrZXJzIjpbXSwiY29t
277
+ cGxldGUiOjF9LCJjb2RlIjoiMzAyOTMzMDAwMzUzMyJ9
278
+ http_version:
279
+ recorded_at: Sat, 23 May 2015 19:26:25 GMT
280
+ recorded_with: VCR 2.9.3