openfoodfacts 0.2.0 → 0.2.2

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