ex_ua 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ex_ua.gemspec +3 -5
- data/lib/ex_ua/category.rb +3 -1
- data/lib/ex_ua/client.rb +15 -8
- data/lib/ex_ua/item.rb +20 -4
- data/lib/ex_ua/version.rb +1 -1
- data/spec/category_spec.rb +22 -11
- data/spec/item_spec.rb +36 -0
- metadata +6 -34
- data/fixtures/vcr_cassettes/ExUA_Category.yml +0 -151
- data/fixtures/vcr_cassettes/ExUA_Client.yml +0 -194
- data/spec/cassettes/ExUA_Category/general_1_page_category/_categories/has_current_category_as_a_parent_category_for_all_childs.yml +0 -366
- data/spec/cassettes/ExUA_Category/general_1_page_category/_categories/returns_list_of_child_categories.yml +0 -366
- data/spec/cassettes/ExUA_Category/general_1_page_category/canonical_url/.yml +0 -366
- data/spec/cassettes/ExUA_Category/general_1_page_category/description/.yml +0 -366
- data/spec/cassettes/ExUA_Category/general_1_page_category/items/.yml +0 -366
- data/spec/cassettes/ExUA_Category/general_1_page_category/name/.yml +0 -366
- data/spec/cassettes/ExUA_Category/general_1_page_category/next_/.yml +0 -366
- data/spec/cassettes/ExUA_Category/general_1_page_category/prev_/.yml +0 -366
- data/spec/cassettes/ExUA_Category/general_few_pages_category/_next/returns_a_category_with_same_url_but_different_page_number.yml +0 -555
- data/spec/cassettes/ExUA_Category/general_few_pages_category/_prev/raises_error_when_no_prev_url_found.yml +0 -555
- data/spec/cassettes/ExUA_Category/item_category/picture/.yml +0 -555
- data/spec/cassettes/ExUA_Client/_available_languages/returns_list_of_available_languages.yml +0 -194
- data/spec/cassettes/ExUA_Client/_search/returns_20_results_by_default.yml +0 -620
- data/spec/cassettes/ExUA_Client/_search/returns_list_of_categories.yml +0 -1233
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: acb906012343c1b591485c34e4f16c8d4d505038
|
4
|
+
data.tar.gz: 2d3d0f7f0068061c4c7a65690d5c5955ac6c55bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2ee3595dcf7d471b62ca53393dcb68da42b95c757a701b1312895d25857722cc0ae9c8e66a328ba128ad0ab2b07db6b2c017270c3e50feb68396dacd393258f
|
7
|
+
data.tar.gz: 6a191afbf4418a3edd3239a4ecf437c21b477449c25db68d82127402133360777858bf4db1e2b7a8e5bc3599aa1730cea56dc8ebe4b1a2d5736c12ac86a86fdc
|
data/README.md
CHANGED
@@ -20,7 +20,7 @@ Example usage
|
|
20
20
|
category = base_categories.first # Select first category (usually video)
|
21
21
|
sub_categories = category.categories # Select sub-categories of a category
|
22
22
|
example_video_category = sub_categories.first.categories.first
|
23
|
-
download_items = example_video_category.items # Here you'll have an array of download items in a given category with #
|
23
|
+
download_items = example_video_category.items # Here you'll have an array of download items in a given category with #load_uri
|
24
24
|
|
25
25
|
|
26
26
|
Search
|
data/ex_ua.gemspec
CHANGED
@@ -7,14 +7,12 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = ExUa::VERSION
|
8
8
|
s.authors = ["Andriy Dmytrenko"]
|
9
9
|
s.email = ["refresh.xss@gmail.com"]
|
10
|
-
s.homepage = ""
|
10
|
+
s.homepage = "https://github.com/Antti/ex_ua"
|
11
11
|
s.summary = %q{An http://ex.ua/ API}
|
12
12
|
s.description = %q{Ruby API for ex.ua}
|
13
13
|
|
14
|
-
s.
|
15
|
-
|
16
|
-
s.files = `git ls-files`.split("\n")
|
17
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
|
+
s.files = `git ls-files | grep -v spec/cassettes`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/* | grep -v spec/cassettes`.split("\n")
|
18
16
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
17
|
s.require_paths = ["lib"]
|
20
18
|
s.license = 'MIT'
|
data/lib/ex_ua/category.rb
CHANGED
@@ -93,6 +93,8 @@ module ExUA
|
|
93
93
|
uri.query_values["p"].to_i
|
94
94
|
end
|
95
95
|
|
96
|
+
# Category's path
|
97
|
+
# @return [String]
|
96
98
|
def path
|
97
99
|
uri.path
|
98
100
|
end
|
@@ -104,7 +106,7 @@ module ExUA
|
|
104
106
|
table_rows.map do |tr|
|
105
107
|
tr.search("a[title!='']")
|
106
108
|
end.reject(&:empty?).map do |links|
|
107
|
-
Item.
|
109
|
+
Item.parse(links)
|
108
110
|
end
|
109
111
|
end
|
110
112
|
|
data/lib/ex_ua/client.rb
CHANGED
@@ -4,20 +4,21 @@ require 'singleton'
|
|
4
4
|
require 'addressable/uri'
|
5
5
|
|
6
6
|
module ExUA
|
7
|
-
# Client for ExUA
|
8
|
-
# @example Usage
|
9
|
-
# client = ExUA::Client.new
|
10
|
-
# categories = client.base_categories('ru')
|
11
|
-
#
|
12
7
|
class ExUAFetcher
|
13
8
|
include HTTParty
|
14
9
|
no_follow true
|
10
|
+
# Returns the redirect target for a given uri
|
15
11
|
def self.get_redirect(uri)
|
16
12
|
get Addressable::URI.parse(uri).normalize.to_s
|
17
13
|
rescue HTTParty::RedirectionTooDeep => e
|
18
14
|
e.response["location"]
|
19
15
|
end
|
20
16
|
end
|
17
|
+
# Client for ExUA
|
18
|
+
# @example Usage
|
19
|
+
# client = ExUA::Client.new
|
20
|
+
# categories = client.base_categories('ru')
|
21
|
+
#
|
21
22
|
class Client
|
22
23
|
include Singleton
|
23
24
|
KNOWN_BASE_CATEGORIES = %w[video audio images texts games software]
|
@@ -40,9 +41,15 @@ module ExUA
|
|
40
41
|
# client.base_categories('ru')
|
41
42
|
# @return [Array<ExUA::Category>]
|
42
43
|
def base_categories(lang)
|
43
|
-
|
44
|
+
base_categories_names.map{|cat| Category.new(url: "/#{lang}/#{cat}")}
|
44
45
|
end
|
45
46
|
|
47
|
+
# Search for a given @text
|
48
|
+
# @param[String] text A term to search for
|
49
|
+
# @param[Integer] page Page number, starting from 0
|
50
|
+
# @param[Integer] per Items per page. Defaults to 20
|
51
|
+
# @return[Array<ExUA::Category>] list of categories
|
52
|
+
|
46
53
|
def search(text, page=0, per=20)
|
47
54
|
uri = Addressable::URI.parse("/search?#{Addressable::URI.form_encode(s: text, p: page, per: per)}")
|
48
55
|
page = get(uri)
|
@@ -53,8 +60,8 @@ module ExUA
|
|
53
60
|
end
|
54
61
|
end
|
55
62
|
|
56
|
-
def get(
|
57
|
-
Nokogiri.parse(HTTParty.get(Addressable::URI.join(ExUA::BASE_URL,
|
63
|
+
def get(path)
|
64
|
+
Nokogiri.parse(HTTParty.get(Addressable::URI.join(ExUA::BASE_URL,path).to_s).body)
|
58
65
|
end
|
59
66
|
|
60
67
|
private
|
data/lib/ex_ua/item.rb
CHANGED
@@ -3,7 +3,7 @@ require 'addressable/uri'
|
|
3
3
|
module ExUA
|
4
4
|
# Download item
|
5
5
|
class Item < Struct.new(:id, :title, :additional_servers)
|
6
|
-
def self.
|
6
|
+
def self.parse(links)
|
7
7
|
self.new.tap do |item|
|
8
8
|
links.each { |link|
|
9
9
|
case link.attributes["href"].value
|
@@ -19,14 +19,29 @@ module ExUA
|
|
19
19
|
end
|
20
20
|
|
21
21
|
# Queries ex.ua to get a real url to fetch data from (follows redirect)
|
22
|
+
# URI with content-disposition: attachment
|
22
23
|
def retrieve_real_load_url
|
23
|
-
retrieve_real_url(
|
24
|
+
retrieve_real_url(load_uri)
|
24
25
|
end
|
25
26
|
|
26
27
|
def retrieve_real_get_url
|
27
28
|
retrieve_real_url(get_uri)
|
28
29
|
end
|
29
30
|
|
31
|
+
# @params[String, File] save_to Optional. File location to save content to
|
32
|
+
# @return[HTTParty::Response] Response
|
33
|
+
def download(save_to=nil)
|
34
|
+
response = HTTParty.get(retrieve_real_get_url)
|
35
|
+
File.write(save_to, response.body) if save_to
|
36
|
+
response
|
37
|
+
end
|
38
|
+
|
39
|
+
# Returns response with headers(includes content-type, content-lenght)
|
40
|
+
# @return[HTTParty::Response]
|
41
|
+
def head
|
42
|
+
@head ||= HTTParty.head(retrieve_real_get_url)
|
43
|
+
end
|
44
|
+
|
30
45
|
# Actual download url with ex.ua included
|
31
46
|
# You can add ?fs_id=server_id param to download form #additional_servers
|
32
47
|
# @return[Addressable::URI]
|
@@ -35,8 +50,9 @@ module ExUA
|
|
35
50
|
@get_url ||= Addressable::URI.join(ExUA::BASE_URL,"/get/#{self.id}")
|
36
51
|
end
|
37
52
|
|
38
|
-
|
39
|
-
|
53
|
+
# URI with content-disposition: attachment
|
54
|
+
def load_uri
|
55
|
+
@load_url ||= Addressable::URI.join(ExUA::BASE_URL, "/load/#{self.id}")
|
40
56
|
end
|
41
57
|
|
42
58
|
private
|
data/lib/ex_ua/version.rb
CHANGED
data/spec/category_spec.rb
CHANGED
@@ -19,24 +19,35 @@ describe ExUA::Category, :vcr => true do
|
|
19
19
|
its(:uri){should eq(Addressable::URI.parse('http://www.ex.ua/ru/video'))}
|
20
20
|
end
|
21
21
|
context "general few pages category" do
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
context "on third page" do
|
23
|
+
subject{ExUA::Category.new(url: '/ru/video/foreign?p=2')}
|
24
|
+
describe '#prev' do
|
25
|
+
it 'returns a category with same url, but previous page number' do
|
26
|
+
expect(subject.prev.uri.request_uri).to eq('/ru/video/foreign?p=1')
|
27
|
+
end
|
26
28
|
end
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
expect(subject.prev.uri).to eq('')
|
29
|
+
describe '#next' do
|
30
|
+
it 'returns a category with same url, but different page number' do
|
31
|
+
subject.next.uri.request_uri.should eq('/ru/video/foreign?p=3')
|
32
|
+
end
|
32
33
|
end
|
33
|
-
|
34
|
-
|
34
|
+
end
|
35
|
+
context "on a first page" do
|
36
|
+
subject{ExUA::Category.new(url: '/ru/video/foreign')}
|
37
|
+
describe '#prev' do
|
38
|
+
it 'raises error when no prev url found' do
|
39
|
+
expect{subject.prev}.to raise_error(ExUA::Category::NotFound)
|
40
|
+
end
|
35
41
|
end
|
36
42
|
end
|
37
43
|
end
|
38
44
|
context "item category" do
|
39
45
|
subject{ExUA::Category.new(url: '/71902463')}
|
40
46
|
its(:picture){should_not be_nil}
|
47
|
+
describe '#items' do
|
48
|
+
it 'has an array of items' do
|
49
|
+
subject.items.size.should_not eq(0)
|
50
|
+
end
|
51
|
+
end
|
41
52
|
end
|
42
53
|
end
|
data/spec/item_spec.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'tempfile'
|
3
|
+
|
4
|
+
describe ExUA::Item, vcr: true do
|
5
|
+
let(:id) {68579769}
|
6
|
+
subject{ExUA::Item.new(id)}
|
7
|
+
describe '#download' do
|
8
|
+
let(:tmp_file) { Tempfile.new('foo')}
|
9
|
+
let(:png_header) {[137, 80, 78, 71, 13, 10, 26, 10] }
|
10
|
+
after(:each) do
|
11
|
+
tmp_file.unlink
|
12
|
+
end
|
13
|
+
it 'returns response with content-type' do
|
14
|
+
subject.download.content_type.should eq('image/png')
|
15
|
+
end
|
16
|
+
it 'returns response with content of a file' do
|
17
|
+
subject.download.body[0..7].bytes.to_a.should eq png_header
|
18
|
+
end
|
19
|
+
it 'saves content to a file' do
|
20
|
+
subject.download(tmp_file)
|
21
|
+
tmp_file.read[0..7].bytes.to_a.should eq png_header
|
22
|
+
end
|
23
|
+
end
|
24
|
+
describe '#head' do
|
25
|
+
it 'has content-type' do
|
26
|
+
subject.head.content_type.should eq('image/png')
|
27
|
+
end
|
28
|
+
it 'has content-length' do
|
29
|
+
subject.head.content_length.should_not be_nil
|
30
|
+
end
|
31
|
+
end
|
32
|
+
its(:get_uri){should eq Addressable::URI.parse("http://www.ex.ua/get/#{id}")}
|
33
|
+
its(:load_uri){should eq Addressable::URI.parse("http://www.ex.ua/load/#{id}")}
|
34
|
+
describe '#retrieve_real_load_url'
|
35
|
+
describe '#retrieve_real_get_url'
|
36
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ex_ua
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andriy Dmytrenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -121,31 +121,16 @@ files:
|
|
121
121
|
- README.md
|
122
122
|
- Rakefile
|
123
123
|
- ex_ua.gemspec
|
124
|
-
- fixtures/vcr_cassettes/ExUA_Category.yml
|
125
|
-
- fixtures/vcr_cassettes/ExUA_Client.yml
|
126
124
|
- lib/ex_ua.rb
|
127
125
|
- lib/ex_ua/category.rb
|
128
126
|
- lib/ex_ua/client.rb
|
129
127
|
- lib/ex_ua/item.rb
|
130
128
|
- lib/ex_ua/version.rb
|
131
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/_categories/has_current_category_as_a_parent_category_for_all_childs.yml
|
132
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/_categories/returns_list_of_child_categories.yml
|
133
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/canonical_url/.yml
|
134
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/description/.yml
|
135
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/items/.yml
|
136
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/name/.yml
|
137
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/next_/.yml
|
138
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/prev_/.yml
|
139
|
-
- spec/cassettes/ExUA_Category/general_few_pages_category/_next/returns_a_category_with_same_url_but_different_page_number.yml
|
140
|
-
- spec/cassettes/ExUA_Category/general_few_pages_category/_prev/raises_error_when_no_prev_url_found.yml
|
141
|
-
- spec/cassettes/ExUA_Category/item_category/picture/.yml
|
142
|
-
- spec/cassettes/ExUA_Client/_available_languages/returns_list_of_available_languages.yml
|
143
|
-
- spec/cassettes/ExUA_Client/_search/returns_20_results_by_default.yml
|
144
|
-
- spec/cassettes/ExUA_Client/_search/returns_list_of_categories.yml
|
145
129
|
- spec/category_spec.rb
|
146
130
|
- spec/client_spec.rb
|
131
|
+
- spec/item_spec.rb
|
147
132
|
- spec/spec_helper.rb
|
148
|
-
homepage:
|
133
|
+
homepage: https://github.com/Antti/ex_ua
|
149
134
|
licenses:
|
150
135
|
- MIT
|
151
136
|
metadata: {}
|
@@ -164,26 +149,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
149
|
- !ruby/object:Gem::Version
|
165
150
|
version: '0'
|
166
151
|
requirements: []
|
167
|
-
rubyforge_project:
|
152
|
+
rubyforge_project:
|
168
153
|
rubygems_version: 2.0.3
|
169
154
|
signing_key:
|
170
155
|
specification_version: 4
|
171
156
|
summary: An http://ex.ua/ API
|
172
157
|
test_files:
|
173
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/_categories/has_current_category_as_a_parent_category_for_all_childs.yml
|
174
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/_categories/returns_list_of_child_categories.yml
|
175
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/canonical_url/.yml
|
176
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/description/.yml
|
177
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/items/.yml
|
178
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/name/.yml
|
179
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/next_/.yml
|
180
|
-
- spec/cassettes/ExUA_Category/general_1_page_category/prev_/.yml
|
181
|
-
- spec/cassettes/ExUA_Category/general_few_pages_category/_next/returns_a_category_with_same_url_but_different_page_number.yml
|
182
|
-
- spec/cassettes/ExUA_Category/general_few_pages_category/_prev/raises_error_when_no_prev_url_found.yml
|
183
|
-
- spec/cassettes/ExUA_Category/item_category/picture/.yml
|
184
|
-
- spec/cassettes/ExUA_Client/_available_languages/returns_list_of_available_languages.yml
|
185
|
-
- spec/cassettes/ExUA_Client/_search/returns_20_results_by_default.yml
|
186
|
-
- spec/cassettes/ExUA_Client/_search/returns_list_of_categories.yml
|
187
158
|
- spec/category_spec.rb
|
188
159
|
- spec/client_spec.rb
|
160
|
+
- spec/item_spec.rb
|
189
161
|
- spec/spec_helper.rb
|
@@ -1,151 +0,0 @@
|
|
1
|
-
---
|
2
|
-
http_interactions:
|
3
|
-
- request:
|
4
|
-
method: get
|
5
|
-
uri: http://www.ex.ua/ru_video.html
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers: {}
|
10
|
-
response:
|
11
|
-
status:
|
12
|
-
code: 404
|
13
|
-
message: Not Found
|
14
|
-
headers:
|
15
|
-
Server:
|
16
|
-
- nginx/1.4.2
|
17
|
-
Date:
|
18
|
-
- Fri, 16 Aug 2013 09:24:25 GMT
|
19
|
-
Content-Type:
|
20
|
-
- text/html; charset=utf-8
|
21
|
-
Content-Length:
|
22
|
-
- '5010'
|
23
|
-
Connection:
|
24
|
-
- keep-alive
|
25
|
-
Set-Cookie:
|
26
|
-
- ccid=5912645536229401831; domain=www.ex.ua; path=/; expires=Mon, 14-Aug-2023
|
27
|
-
09:24:25 GMT
|
28
|
-
Cache-Control:
|
29
|
-
- no-cache, no-store, must-revalidate
|
30
|
-
Expires:
|
31
|
-
- '0'
|
32
|
-
Pragma:
|
33
|
-
- no-cache
|
34
|
-
body:
|
35
|
-
encoding: ASCII-8BIT
|
36
|
-
string: !binary |-
|
37
|
-
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEv
|
38
|
-
L0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+
|
39
|
-
DQogDQo8aHRtbD4NCg0KPGhlYWQ+DQo8dGl0bGU+RVguVUE8L3RpdGxlPg0K
|
40
|
-
PGxpbmsgaHJlZj0iL2luZGV4LmNzcz8wLjA0IiB0eXBlPSJ0ZXh0L2NzcyIg
|
41
|
-
cmVsPSJzdHlsZXNoZWV0Ij4NCjxsaW5rIGhyZWY9Ii9mYXZpY29uLmljbyIg
|
42
|
-
cmVsPSJzaG9ydGN1dCBpY29uIj4NCjxtZXRhIG5hbWU9InJvYm90cyIgY29u
|
43
|
-
dGVudD0ibm9hcmNoaXZlIj4NCjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQt
|
44
|
-
dHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxt
|
45
|
-
ZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtbGFuZ3VhZ2UiIGNvbnRlbnQ9InJ1
|
46
|
-
Ij4NCjxzY3JpcHQgc3JjPScvanMvbWFpbi5qcycgY2hhcnNldD0ndXRmLTgn
|
47
|
-
IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNy
|
48
|
-
Yz0nL2pzL3JlcXVlc3QuanMnIGNoYXJzZXQ9J3V0Zi04JyB0eXBlPSd0ZXh0
|
49
|
-
L2phdmFzY3JpcHQnPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSd0ZXh0L2ph
|
50
|
-
dmFzY3JpcHQnPg0KaWYgKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKSBkb2N1
|
51
|
-
bWVudC5jb29raWUgPSAndWRwcj0nICsgd2luZG93LmRldmljZVBpeGVsUmF0
|
52
|
-
aW8gKyAnO3BhdGg9Lyc7DQppZiAod2luZG93LnRvcCAhPSB3aW5kb3cuc2Vs
|
53
|
-
Zikgd2luZG93LnRvcC5sb2NhdGlvbiA9IHdpbmRvdy5zZWxmLmxvY2F0aW9u
|
54
|
-
Ow0KPC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
|
55
|
-
c3JjPSJodHRwczovL2FwaXMuZ29vZ2xlLmNvbS9qcy9wbHVzb25lLmpzIj4N
|
56
|
-
CnsgbGFuZzogJ3J1JyB9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCg0KPGJvZHkg
|
57
|
-
b25sb2FkPSdpbml0Qm9keSgpJz4NCg0KPHRhYmxlIHdpZHRoPScxMDAlJyBo
|
58
|
-
ZWlnaHQ9JzEwMCUnIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRp
|
59
|
-
bmc9MD4NCjx0cj48dGQgdmFsaWduPXRvcCBzdHlsZT0naGVpZ2h0OiA2MHB4
|
60
|
-
Oyc+DQo8ZGl2IHN0eWxlPSd3aWR0aDogMTAwJTsgaGVpZ2h0OiAzMHB4OyBv
|
61
|
-
dmVyZmxvdzogaGlkZGVuOyBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggI2Nj
|
62
|
-
YzsgcGFkZGluZzogMDsnIGlkPSdhbm5vdW5jZSc+PGlmcmFtZSB3aWR0aD0n
|
63
|
-
MTAwJScgaGVpZ2h0PSczMCcgZnJhbWVib3JkZXI9JzAnIG1hcmdpbmhlaWdo
|
64
|
-
dD0nMCcgbWFyZ2lud2lkdGg9JzAnIHNjcm9sbGluZz0nbm8nIHNyYz0nL2Fk
|
65
|
-
X2Fubm91bmNlLmh0bWwnPjwvaWZyYW1lPjwvZGl2Pg0KDQo8dGFibGUgd2lk
|
66
|
-
dGg9JzEwMCUnIGJvcmRlcj0wIGNsYXNzPW1lbnUgaWQ9bWVudT4NCjx0cj48
|
67
|
-
dGQgY2xhc3M9bWVudV90ZXh0PiZuYnNwOw0KPGEgaHJlZj0nLyc+PGltZyBz
|
68
|
-
cmM9Jy9pL2V4LXNtYWxsLnBuZycgd2lkdGg9MjYgaGVpZ2h0PTEyIGJvcmRl
|
69
|
-
cj0wIGFsdD0nRVgnPi3QpNCw0LnQu9GLPC9hPiZuYnNwO3wNCjxhIGhyZWY9
|
70
|
-
Jy9ydS92aWRlbyc+0JLQuNC00LXQvjwvYT4mbmJzcDt8DQo8YSBocmVmPScv
|
71
|
-
cnUvYXVkaW8nPtCQ0YPQtNC40L48L2E+Jm5ic3A7fA0KPGEgaHJlZj0nL3J1
|
72
|
-
L2ltYWdlcyc+0JjQt9C+0LHRgNCw0LbQtdC90LjRjzwvYT4mbmJzcDt8DQo8
|
73
|
-
YSBocmVmPScvcnUvdGV4dHMnPtCi0LXQutGB0YLRizwvYT4mbmJzcDt8DQo8
|
74
|
-
YSBocmVmPScvcnUvZ2FtZXMnPtCY0LPRgNGLPC9hPiZuYnNwO3wNCjxhIGhy
|
75
|
-
ZWY9Jy9ydS9zb2Z0d2FyZSc+0J/RgNC+0LPRgNCw0LzQvNGLPC9hPiZuYnNw
|
76
|
-
O3wNCjxhIGhyZWY9Jy9ydS9hYm91dCc+0J4g0YHQtdGA0LLQuNGB0LU8L2E+
|
77
|
-
Jm5ic3A7fA0KPGEgaHJlZj0nL3NlYXJjaCc+0J/QvtC40YHQujwvYT4NCiZu
|
78
|
-
YnNwOzwvdGQ+PHRkIGFsaWduPXJpZ2h0IHZhbGlnbj1jZW50ZXIgY2xhc3M9
|
79
|
-
bWVudV90ZXh0PiZuYnNwOw0KPGZvcm0gc3R5bGU9J2Rpc3BsYXk6IGlubGlu
|
80
|
-
ZTsnIGFjdGlvbj0nL2xhbmd1YWdlJz48c2VsZWN0IG5hbWU9bGFuZyBvbmNo
|
81
|
-
YW5nZT0naWYgKHRoaXMuZm9ybSkgdGhpcy5mb3JtLnN1Ym1pdCgpOyc+PG9w
|
82
|
-
dGlvbiB2YWx1ZT1ydSBzZWxlY3RlZD7RgNGD0YHRgdC60LjQuTxvcHRpb24g
|
83
|
-
dmFsdWU9dWs+0YPQutGA0LDRl9C90YHRjNC60LA8b3B0aW9uIHZhbHVlPWVu
|
84
|
-
PmVuZ2xpc2g8b3B0aW9uIHZhbHVlPWVzPmVzcGFub2w8b3B0aW9uIHZhbHVl
|
85
|
-
PWRlPmRldXRzY2g8b3B0aW9uIHZhbHVlPWZyPmZyYW7Dp2FpczxvcHRpb24g
|
86
|
-
dmFsdWU9cGw+cG9sc2tpPG9wdGlvbiB2YWx1ZT1qYT7ml6XmnKzoqp48b3B0
|
87
|
-
aW9uIHZhbHVlPWtrPtKb0LDQt9Cw0ps8L3NlbGVjdD48L2Zvcm0+Jm5ic3A7
|
88
|
-
fA0KPGEgaHJlZj0nL2xvZ2luJz7QktGF0L7QtDwvYT4NCiZuYnNwOw0KPC90
|
89
|
-
ZD48L3RyPg0KPC90YWJsZT4NCjwvdGQ+PC90cj4NCjx0cj48dGQgdmFsaWdu
|
90
|
-
PXRvcCBzdHlsZT0ncGFkZGluZzogMTZweDsnIGlkPSdib2R5X2VsZW1lbnQn
|
91
|
-
Pg0KPHA+PGltZyBzcmM9Jy9pL2lfZXJyb3IucG5nJyB3aWR0aD0zMiBoZWln
|
92
|
-
aHQ9MzIgdnNwYWNlPTEgYWxpZ249YWJzbWlkZGxlPiZuYnNwOzxiaWcgaWQ9
|
93
|
-
J21lc3NhZ2UnPtCh0YLRgNCw0L3QuNGG0LAg0L3QtSDQvdCw0LnQtNC10L3Q
|
94
|
-
sC48L2JpZz4NCjxwPg0KJm5ic3A7DQo8cD4NCjxzcGFuIGNsYXNzPXJfYnV0
|
95
|
-
dG9uPjxhIGhyZWY9Jy8nPtC90LAg0YLQuNGC0YPQuzwvYT48L3NwYW4+DQoN
|
96
|
-
CjwvdGQ+PC90cj4NCjx0cj48dGQgdmFsaWduPWJvdHRvbSBzdHlsZT0naGVp
|
97
|
-
Z2h0OiAzMnB4Oyc+DQo8dGFibGUgd2lkdGg9JzEwMCUnIGJvcmRlcj0wIGNs
|
98
|
-
YXNzPWNvcHlyaWdodD48dHI+PHRkPg0KDQo8IS0tIGhpdC51YSAtLT4NCjxz
|
99
|
-
Y3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz48IS0tDQoNCmZ1bmN0aW9u
|
100
|
-
IGxvYWRKcyhzcmMpDQp7DQoJdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVt
|
101
|
-
ZW50KCdzY3JpcHQnKTsNCglhLnNldEF0dHJpYnV0ZSgnc3JjJywgc3JjKTsN
|
102
|
-
CglhLmFzeW5jID0gJ3RydWUnOw0KCXZhciBiID0gZG9jdW1lbnQuZ2V0RWxl
|
103
|
-
bWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOw0KCWIucGFyZW50Tm9kZS5p
|
104
|
-
bnNlcnRCZWZvcmUoYSwgYik7DQp9DQoNCmlmICghZG9jdW1lbnQuY29va2ll
|
105
|
-
KSBkb2N1bWVudC5jb29raWUgPSAiYj1iIjsNCg0KbG9hZEpzKCdodHRwOi8v
|
106
|
-
Yy5oaXQudWEvaGl0P2k9MTM1MDEnICsNCgknJmc9MCZ4PTMmcz0xJyArDQoJ
|
107
|
-
JyZ0PScgKyAobmV3IERhdGUoKSkuZ2V0VGltZXpvbmVPZmZzZXQoKSArDQoJ
|
108
|
-
KGRvY3VtZW50LmNvb2tpZSA/ICcmYz0xJyA6ICcnKSArDQoJKHNlbGYgIT0g
|
109
|
-
dG9wID8gJyZmPTEnIDogJycpICsNCgkobmF2aWdhdG9yLmphdmFFbmFibGVk
|
110
|
-
KCkgPyAnJmo9MScgOiAnJykgKw0KCSh0eXBlb2Yoc2NyZWVuKSAhPSAndW5k
|
111
|
-
ZWZpbmVkJyA/ICcmdz0nICsgc2NyZWVuLndpZHRoICsgJyZoPScgKyBzY3Jl
|
112
|
-
ZW4uaGVpZ2h0ICsgJyZkPScgKyAoc2NyZWVuLmNvbG9yRGVwdGggPyBzY3Jl
|
113
|
-
ZW4uY29sb3JEZXB0aCA6IHNjcmVlbi5waXhlbERlcHRoKSA6ICcnKSArDQoJ
|
114
|
-
JyZyPScgKyBlc2NhcGUoZG9jdW1lbnQucmVmZXJyZXIpICsNCgknJnU9JyAr
|
115
|
-
IGVzY2FwZSh3aW5kb3cubG9jYXRpb24uaHJlZikgKw0KCScmJyArIE1hdGgu
|
116
|
-
cmFuZG9tKCkNCik7DQppZiAoZG9jdW1lbnQuY29va2llKSBsb2FkSnMoJ2h0
|
117
|
-
dHA6Ly9jLmhpdC51YS9wb2xsP2k9MTM1MDEmYz0xJicgKyBNYXRoLnJhbmRv
|
118
|
-
bSgpKTsNCg0KLy8tLT48L3NjcmlwdD4NCg0KPG5vc2NyaXB0Pg0KPGltZyBz
|
119
|
-
cmM9J2h0dHA6Ly9jLmhpdC51YS9oaXQ/aT0xMzUwMSZhbXA7Zz0wJmFtcDt4
|
120
|
-
PTInIGJvcmRlcj0nMCcgd2lkdGg9JzEnIGhlaWdodD0nMScvPg0KPC9ub3Nj
|
121
|
-
cmlwdD4NCjwhLS0gLyBoaXQudWEgLS0+DQoNCjwvdGQ+PHRkIGFsaWduPWNl
|
122
|
-
bnRlcj4NCg0KPG5vc2NyaXB0Pg0KPGltZyBzcmM9Imh0dHA6Ly9qdWtlLm1t
|
123
|
-
aS5iZW1vYmlsZS51YS9idWcvcGljLmdpZj9zaXRlaWQ9ZXgudWEiPg0KPC9u
|
124
|
-
b3NjcmlwdD4NCjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPg0KdmFy
|
125
|
-
IHRuc19hbHJlYWR5OyBpZiAoInVuZGVmaW5lZCI9PXR5cGVvZih0bnNfYWxy
|
126
|
-
ZWFkeSkgfHwgbnVsbD09dG5zX2FscmVhZHkgfHwgMD09dG5zX2FscmVhZHkp
|
127
|
-
IHsgdG5zX2FscmVhZHk9MTsgdmFyIGk9bmV3IEltYWdlKCk7IGkuc3JjPSJo
|
128
|
-
dHRwOi8vanVrZS5tbWkuYmVtb2JpbGUudWEvYnVnL3BpYy5naWY/c2l0ZWlk
|
129
|
-
PWV4LnVhJmo9MSYiK01hdGgucmFuZG9tKCk7IChmdW5jdGlvbigpeyB2YXIg
|
130
|
-
cD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdOyB2
|
131
|
-
YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsgcy50eXBl
|
132
|
-
PSJ0ZXh0L2phdmFzY3JpcHQiOyBzLnNyYz0iaHR0cDovL3NvdXJjZS5tbWku
|
133
|
-
YmVtb2JpbGUudWEvY20vY20uanMiOyBzLmFzeW5jID0gdHJ1ZTsgcC5hcHBl
|
134
|
-
bmRDaGlsZChzKTsgfSkoKTsgfTsNCjwvc2NyaXB0Pg0KDQo8L3RkPjx0ZCBh
|
135
|
-
bGlnbj1yaWdodD4NCjxzcGFuIGNsYXNzPXNtYWxsIHRpdGxlPSdjb3B5cmln
|
136
|
-
aHQnPiZjb3B5Ozwvc3Bhbj4mbmJzcDs8c3BhbiBjbGFzcz1zbWFsbD5leC51
|
137
|
-
YSZuYnNwO3wmbmJzcDs8YSBocmVmPScvY29udGFjdCc+0LrQvtC90YLQsNC6
|
138
|
-
0YLQvdCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y88L2E+Jm5ic3A7fCZuYnNw
|
139
|
-
OzxhIGhyZWY9Jy9jb3B5cmlnaHQnPtC00LvRjyDQv9GA0LDQstC+0L7QsdC7
|
140
|
-
0LDQtNCw0YLQtdC70LXQuTwvYT48L3NwYW4+DQo8L3RkPjwvdHI+PC90YWJs
|
141
|
-
ZT4NCg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCg0KPHNjcmlwdCB0eXBlPSd0
|
142
|
-
ZXh0L2phdmFzY3JpcHQnPg0Kc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmFy
|
143
|
-
IGUsIGlkID0gMDsgd2hpbGUoZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
|
144
|
-
KCdhZF9ibG9ja18nICsgKytpZCkpIGlmIChlLnN0eWxlLmRpc3BsYXkgPT0g
|
145
|
-
J25vbmUnKSBlLnN0eWxlLmRpc3BsYXkgPSAoZS50YWdOYW1lID09ICdUQUJM
|
146
|
-
RScgPyAndGFibGUnIDogKGUudGFnTmFtZSA9PSAnVFInID8gJ3RhYmxlLXJv
|
147
|
-
dycgOiAnYmxvY2snKSk7IH0sIDI1MDApOw0KPC9zY3JpcHQ+DQoNCjwvYm9k
|
148
|
-
eT4NCg0KPC9odG1sPg0K
|
149
|
-
http_version:
|
150
|
-
recorded_at: Fri, 16 Aug 2013 09:24:25 GMT
|
151
|
-
recorded_with: VCR 2.5.0
|