ralexa 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +6 -5
- data/lib/ralexa/abstract_service.rb +41 -0
- data/lib/ralexa/client.rb +0 -2
- data/lib/ralexa/lazy_collection.rb +35 -0
- data/lib/ralexa/paginating_collection.rb +36 -0
- data/lib/ralexa/paginator.rb +57 -0
- data/lib/ralexa/session.rb +0 -3
- data/lib/ralexa/top_sites.rb +40 -32
- data/lib/ralexa/uri_signer.rb +0 -2
- data/lib/ralexa/version.rb +1 -1
- data/lib/ralexa.rb +4 -1
- data/spec/canonicalized_query_string_spec.rb +0 -2
- data/spec/client_spec.rb +0 -2
- data/spec/fixtures/global-page1.xml +1613 -0
- data/spec/fixtures/global-page2.xml +813 -0
- data/spec/fixtures/global-top10.xml +173 -0
- data/spec/paginator_spec.rb +55 -0
- data/spec/ralexa_spec.rb +0 -2
- data/spec/session_spec.rb +0 -2
- data/spec/spec_helper.rb +2 -0
- data/spec/top_sites_spec.rb +57 -32
- data/spec/uri_signer_spec.rb +0 -1
- metadata +21 -12
- data/lib/ralexa/abstract_xml_service.rb +0 -27
- data/spec/fixtures/global.xml +0 -45
@@ -0,0 +1,173 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<aws:TopSitesResponse xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:Response xmlns:aws="http://ats.amazonaws.com/doc/2005-11-21"><aws:OperationRequest><aws:RequestId>59620de1-abbc-4966-7f20-b17a55767c15</aws:RequestId></aws:OperationRequest><aws:TopSitesResult><aws:Alexa>
|
3
|
+
|
4
|
+
<aws:TopSites>
|
5
|
+
<aws:Country>
|
6
|
+
<aws:CountryName>GLOBAL</aws:CountryName>
|
7
|
+
<aws:CountryCode>*</aws:CountryCode>
|
8
|
+
<aws:TotalSites>365603</aws:TotalSites>
|
9
|
+
<aws:Sites>
|
10
|
+
<aws:Site>
|
11
|
+
<aws:DataUrl>google.com</aws:DataUrl>
|
12
|
+
<aws:Country>
|
13
|
+
<aws:Rank>1</aws:Rank>
|
14
|
+
<aws:Reach>
|
15
|
+
<aws:PerMillion>501800</aws:PerMillion>
|
16
|
+
</aws:Reach>
|
17
|
+
<aws:PageViews>
|
18
|
+
<aws:PerMillion>54926</aws:PerMillion>
|
19
|
+
<aws:PerUser>11.63</aws:PerUser>
|
20
|
+
</aws:PageViews>
|
21
|
+
</aws:Country>
|
22
|
+
<aws:Global>
|
23
|
+
<aws:Rank>1</aws:Rank>
|
24
|
+
</aws:Global>
|
25
|
+
</aws:Site>
|
26
|
+
<aws:Site>
|
27
|
+
<aws:DataUrl>facebook.com</aws:DataUrl>
|
28
|
+
<aws:Country>
|
29
|
+
<aws:Rank>2</aws:Rank>
|
30
|
+
<aws:Reach>
|
31
|
+
<aws:PerMillion>440400</aws:PerMillion>
|
32
|
+
</aws:Reach>
|
33
|
+
<aws:PageViews>
|
34
|
+
<aws:PerMillion>51798</aws:PerMillion>
|
35
|
+
<aws:PerUser>12.5</aws:PerUser>
|
36
|
+
</aws:PageViews>
|
37
|
+
</aws:Country>
|
38
|
+
<aws:Global>
|
39
|
+
<aws:Rank>2</aws:Rank>
|
40
|
+
</aws:Global>
|
41
|
+
</aws:Site>
|
42
|
+
<aws:Site>
|
43
|
+
<aws:DataUrl>youtube.com</aws:DataUrl>
|
44
|
+
<aws:Country>
|
45
|
+
<aws:Rank>3</aws:Rank>
|
46
|
+
<aws:Reach>
|
47
|
+
<aws:PerMillion>323700</aws:PerMillion>
|
48
|
+
</aws:Reach>
|
49
|
+
<aws:PageViews>
|
50
|
+
<aws:PerMillion>38756</aws:PerMillion>
|
51
|
+
<aws:PerUser>12.73</aws:PerUser>
|
52
|
+
</aws:PageViews>
|
53
|
+
</aws:Country>
|
54
|
+
<aws:Global>
|
55
|
+
<aws:Rank>3</aws:Rank>
|
56
|
+
</aws:Global>
|
57
|
+
</aws:Site>
|
58
|
+
<aws:Site>
|
59
|
+
<aws:DataUrl>yahoo.com</aws:DataUrl>
|
60
|
+
<aws:Country>
|
61
|
+
<aws:Rank>4</aws:Rank>
|
62
|
+
<aws:Reach>
|
63
|
+
<aws:PerMillion>222300</aws:PerMillion>
|
64
|
+
</aws:Reach>
|
65
|
+
<aws:PageViews>
|
66
|
+
<aws:PerMillion>13620</aws:PerMillion>
|
67
|
+
<aws:PerUser>6.51</aws:PerUser>
|
68
|
+
</aws:PageViews>
|
69
|
+
</aws:Country>
|
70
|
+
<aws:Global>
|
71
|
+
<aws:Rank>4</aws:Rank>
|
72
|
+
</aws:Global>
|
73
|
+
</aws:Site>
|
74
|
+
<aws:Site>
|
75
|
+
<aws:DataUrl>baidu.com</aws:DataUrl>
|
76
|
+
<aws:Country>
|
77
|
+
<aws:Rank>5</aws:Rank>
|
78
|
+
<aws:Reach>
|
79
|
+
<aws:PerMillion>110500</aws:PerMillion>
|
80
|
+
</aws:Reach>
|
81
|
+
<aws:PageViews>
|
82
|
+
<aws:PerMillion>19142</aws:PerMillion>
|
83
|
+
<aws:PerUser>18.41</aws:PerUser>
|
84
|
+
</aws:PageViews>
|
85
|
+
</aws:Country>
|
86
|
+
<aws:Global>
|
87
|
+
<aws:Rank>5</aws:Rank>
|
88
|
+
</aws:Global>
|
89
|
+
</aws:Site>
|
90
|
+
<aws:Site>
|
91
|
+
<aws:DataUrl>wikipedia.org</aws:DataUrl>
|
92
|
+
<aws:Country>
|
93
|
+
<aws:Rank>6</aws:Rank>
|
94
|
+
<aws:Reach>
|
95
|
+
<aws:PerMillion>141700</aws:PerMillion>
|
96
|
+
</aws:Reach>
|
97
|
+
<aws:PageViews>
|
98
|
+
<aws:PerMillion>5191</aws:PerMillion>
|
99
|
+
<aws:PerUser>3.89</aws:PerUser>
|
100
|
+
</aws:PageViews>
|
101
|
+
</aws:Country>
|
102
|
+
<aws:Global>
|
103
|
+
<aws:Rank>6</aws:Rank>
|
104
|
+
</aws:Global>
|
105
|
+
</aws:Site>
|
106
|
+
<aws:Site>
|
107
|
+
<aws:DataUrl>live.com</aws:DataUrl>
|
108
|
+
<aws:Country>
|
109
|
+
<aws:Rank>7</aws:Rank>
|
110
|
+
<aws:Reach>
|
111
|
+
<aws:PerMillion>106270</aws:PerMillion>
|
112
|
+
</aws:Reach>
|
113
|
+
<aws:PageViews>
|
114
|
+
<aws:PerMillion>6526</aws:PerMillion>
|
115
|
+
<aws:PerUser>6.53</aws:PerUser>
|
116
|
+
</aws:PageViews>
|
117
|
+
</aws:Country>
|
118
|
+
<aws:Global>
|
119
|
+
<aws:Rank>7</aws:Rank>
|
120
|
+
</aws:Global>
|
121
|
+
</aws:Site>
|
122
|
+
<aws:Site>
|
123
|
+
<aws:DataUrl>blogspot.com</aws:DataUrl>
|
124
|
+
<aws:Country>
|
125
|
+
<aws:Rank>8</aws:Rank>
|
126
|
+
<aws:Reach>
|
127
|
+
<aws:PerMillion>102250</aws:PerMillion>
|
128
|
+
</aws:Reach>
|
129
|
+
<aws:PageViews>
|
130
|
+
<aws:PerMillion>3324</aws:PerMillion>
|
131
|
+
<aws:PerUser>3.45</aws:PerUser>
|
132
|
+
</aws:PageViews>
|
133
|
+
</aws:Country>
|
134
|
+
<aws:Global>
|
135
|
+
<aws:Rank>8</aws:Rank>
|
136
|
+
</aws:Global>
|
137
|
+
</aws:Site>
|
138
|
+
<aws:Site>
|
139
|
+
<aws:DataUrl>qq.com</aws:DataUrl>
|
140
|
+
<aws:Country>
|
141
|
+
<aws:Rank>9</aws:Rank>
|
142
|
+
<aws:Reach>
|
143
|
+
<aws:PerMillion>73830</aws:PerMillion>
|
144
|
+
</aws:Reach>
|
145
|
+
<aws:PageViews>
|
146
|
+
<aws:PerMillion>6274</aws:PerMillion>
|
147
|
+
<aws:PerUser>9.03</aws:PerUser>
|
148
|
+
</aws:PageViews>
|
149
|
+
</aws:Country>
|
150
|
+
<aws:Global>
|
151
|
+
<aws:Rank>9</aws:Rank>
|
152
|
+
</aws:Global>
|
153
|
+
</aws:Site>
|
154
|
+
<aws:Site>
|
155
|
+
<aws:DataUrl>twitter.com</aws:DataUrl>
|
156
|
+
<aws:Country>
|
157
|
+
<aws:Rank>10</aws:Rank>
|
158
|
+
<aws:Reach>
|
159
|
+
<aws:PerMillion>82710</aws:PerMillion>
|
160
|
+
</aws:Reach>
|
161
|
+
<aws:PageViews>
|
162
|
+
<aws:PerMillion>3687</aws:PerMillion>
|
163
|
+
<aws:PerUser>4.74</aws:PerUser>
|
164
|
+
</aws:PageViews>
|
165
|
+
</aws:Country>
|
166
|
+
<aws:Global>
|
167
|
+
<aws:Rank>10</aws:Rank>
|
168
|
+
</aws:Global>
|
169
|
+
</aws:Site>
|
170
|
+
</aws:Sites>
|
171
|
+
</aws:Country>
|
172
|
+
</aws:TopSites>
|
173
|
+
</aws:Alexa></aws:TopSitesResult><aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:StatusCode>Success</aws:StatusCode></aws:ResponseStatus></aws:Response></aws:TopSitesResponse>
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require_relative "spec_helper"
|
2
|
+
|
3
|
+
module Ralexa
|
4
|
+
describe Paginator do
|
5
|
+
|
6
|
+
describe "at 10 per page" do
|
7
|
+
|
8
|
+
def paginate(items)
|
9
|
+
Paginator.new(10, items).pages
|
10
|
+
end
|
11
|
+
|
12
|
+
it "paginates 0 items to 0 pages" do
|
13
|
+
paginate(0).size.must_equal 0
|
14
|
+
end
|
15
|
+
|
16
|
+
it "paginates 1 item to 1 page" do
|
17
|
+
pages = paginate(1)
|
18
|
+
pages.size.must_equal 1
|
19
|
+
pages.first.tap do |p|
|
20
|
+
p.number.must_equal 1
|
21
|
+
p.start.must_equal 1
|
22
|
+
p.finish.must_equal 1
|
23
|
+
p.count.must_equal 1
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it "paginates 10 items to 1 page" do
|
28
|
+
pages = paginate(10)
|
29
|
+
pages.size.must_equal 1
|
30
|
+
pages.first.count.must_equal 10
|
31
|
+
end
|
32
|
+
|
33
|
+
it "paginages 25 items to 3 pages" do
|
34
|
+
pages = paginate(25)
|
35
|
+
pages.size.must_equal 3
|
36
|
+
|
37
|
+
pages.first.tap do |p|
|
38
|
+
p.number.must_equal 1
|
39
|
+
p.start.must_equal 1
|
40
|
+
p.finish.must_equal 10
|
41
|
+
p.count.must_equal 10
|
42
|
+
end
|
43
|
+
|
44
|
+
pages.last.tap do |p|
|
45
|
+
p.number.must_equal 3
|
46
|
+
p.start.must_equal 21
|
47
|
+
p.finish.must_equal 25
|
48
|
+
p.count.must_equal 5
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
data/spec/ralexa_spec.rb
CHANGED
data/spec/session_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
data/spec/top_sites_spec.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
require_relative "spec_helper"
|
2
2
|
|
3
|
-
require "ralexa/top_sites"
|
4
|
-
|
5
3
|
module Ralexa
|
6
4
|
describe TopSites do
|
7
5
|
|
@@ -9,31 +7,75 @@ module Ralexa
|
|
9
7
|
let(:client) { MiniTest::Mock.new }
|
10
8
|
|
11
9
|
describe "#global" do
|
12
|
-
|
13
|
-
|
10
|
+
def expected_params(start, count)
|
11
|
+
{
|
14
12
|
"Action" => "TopSites",
|
15
13
|
"ResponseGroup" => "Country",
|
14
|
+
"Start" => start,
|
15
|
+
"Count" => count,
|
16
16
|
}
|
17
|
-
client.expect :get, fixture("global.xml"),
|
18
|
-
["ats.amazonaws.com", "/", expect_parameters]
|
19
17
|
end
|
20
|
-
|
21
|
-
|
18
|
+
describe "requesting ten sites" do
|
19
|
+
before do
|
20
|
+
client.expect :get, fixture("global-top10.xml"),
|
21
|
+
["ats.amazonaws.com", "/", expected_params(1, 10)]
|
22
|
+
end
|
23
|
+
it "fetches, parses and returns top ten sites" do
|
24
|
+
sites = top_sites.global(10).to_a
|
25
|
+
sites.size.must_equal 10
|
26
|
+
[ sites.first.rank, sites.last.rank ].must_equal [ 1, 10 ]
|
27
|
+
|
28
|
+
g = sites.first
|
29
|
+
g.url.must_equal "google.com"
|
30
|
+
g.rank.must_equal 1
|
31
|
+
g.reach.must_equal 501_800_000_000
|
32
|
+
g.page_views.must_equal 54_926_000_000
|
33
|
+
g.page_views_per_user.must_equal 11.63
|
34
|
+
end
|
35
|
+
end
|
36
|
+
describe "requesting 150 sites" do
|
37
|
+
before do
|
38
|
+
client.expect :get, fixture("global-page1.xml"),
|
39
|
+
["ats.amazonaws.com", "/", expected_params(1, 100)]
|
40
|
+
client.expect :get, fixture("global-page2.xml"),
|
41
|
+
["ats.amazonaws.com", "/", expected_params(101, 50)]
|
42
|
+
end
|
43
|
+
it "fetches, parses and returns top ten sites" do
|
44
|
+
sites = top_sites.global(150).to_a
|
45
|
+
sites.size.must_equal 150
|
46
|
+
[ sites.first.rank, sites.last.rank ].must_equal [ 1, 150 ]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
it "raises error if Count (or Start) are specified" do
|
50
|
+
->{
|
51
|
+
top_sites.global(10, "Count" => 2)
|
52
|
+
}.must_raise PaginatingCollection::Error
|
22
53
|
end
|
23
54
|
end
|
24
55
|
|
25
56
|
describe "#country" do
|
26
|
-
|
27
|
-
|
57
|
+
def expected_params(start, count)
|
58
|
+
{
|
28
59
|
"Action" => "TopSites",
|
29
60
|
"ResponseGroup" => "Country",
|
30
61
|
"CountryCode" => "AU",
|
62
|
+
"Start" => start,
|
63
|
+
"Count" => count,
|
31
64
|
}
|
32
|
-
|
33
|
-
|
65
|
+
end
|
66
|
+
before do
|
67
|
+
client.expect :get, fixture("global-top10.xml"),
|
68
|
+
["ats.amazonaws.com", "/", expected_params(1, 10)]
|
34
69
|
end
|
35
70
|
it "fetches, parses and returns top sites for specified country" do
|
36
|
-
|
71
|
+
sites = top_sites.country("AU", 10).to_a
|
72
|
+
sites.size.must_equal 10
|
73
|
+
sites.last.url.must_equal "twitter.com"
|
74
|
+
end
|
75
|
+
it "raises error if Start (or Count) are specified" do
|
76
|
+
->{
|
77
|
+
top_sites.country("AU", 10, start: 2)
|
78
|
+
}.must_raise PaginatingCollection::Error
|
37
79
|
end
|
38
80
|
end
|
39
81
|
|
@@ -49,8 +91,8 @@ module Ralexa
|
|
49
91
|
|
50
92
|
it "fetches, parses and returns countries" do
|
51
93
|
countries = top_sites.list_countries
|
52
|
-
countries.size.must_equal 2
|
53
|
-
a, u = countries
|
94
|
+
countries.to_a.size.must_equal 2
|
95
|
+
a, u = countries.to_a
|
54
96
|
|
55
97
|
u.name.must_equal "United States"
|
56
98
|
u.code.must_equal "US"
|
@@ -66,22 +108,5 @@ module Ralexa
|
|
66
108
|
end
|
67
109
|
end
|
68
110
|
|
69
|
-
def top_sites_match_fixture(sites)
|
70
|
-
sites.size.must_equal 2
|
71
|
-
w, b = sites
|
72
|
-
|
73
|
-
w.url.must_equal "wikipedia.org"
|
74
|
-
w.rank.must_equal 6
|
75
|
-
w.reach.must_equal 143_000_000_000
|
76
|
-
w.page_views.must_equal 5_219_000_000
|
77
|
-
w.page_views_per_user.must_equal 3.88
|
78
|
-
|
79
|
-
b.url.must_equal "bbc.co.uk"
|
80
|
-
b.rank.must_equal 52
|
81
|
-
b.reach.must_equal 20_540_000_000
|
82
|
-
b.page_views.must_equal 898_500_000
|
83
|
-
b.page_views_per_user.must_equal 4.65
|
84
|
-
end
|
85
|
-
|
86
111
|
end
|
87
112
|
end
|
data/spec/uri_signer_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ralexa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-03-26 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
16
|
-
requirement: &
|
16
|
+
requirement: &70339587667200 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70339587667200
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &70339587666780 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70339587666780
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &70339587666360 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70339587666360
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &70339587665940 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70339587665940
|
58
58
|
description: Ruby client for Amazon Alexa APIs.
|
59
59
|
email:
|
60
60
|
- paul@annesley.cc
|
@@ -68,9 +68,12 @@ files:
|
|
68
68
|
- README.md
|
69
69
|
- Rakefile
|
70
70
|
- lib/ralexa.rb
|
71
|
-
- lib/ralexa/
|
71
|
+
- lib/ralexa/abstract_service.rb
|
72
72
|
- lib/ralexa/canonicalized_query_string.rb
|
73
73
|
- lib/ralexa/client.rb
|
74
|
+
- lib/ralexa/lazy_collection.rb
|
75
|
+
- lib/ralexa/paginating_collection.rb
|
76
|
+
- lib/ralexa/paginator.rb
|
74
77
|
- lib/ralexa/session.rb
|
75
78
|
- lib/ralexa/top_sites.rb
|
76
79
|
- lib/ralexa/uri_signer.rb
|
@@ -78,8 +81,11 @@ files:
|
|
78
81
|
- ralexa.gemspec
|
79
82
|
- spec/canonicalized_query_string_spec.rb
|
80
83
|
- spec/client_spec.rb
|
81
|
-
- spec/fixtures/global.xml
|
84
|
+
- spec/fixtures/global-page1.xml
|
85
|
+
- spec/fixtures/global-page2.xml
|
86
|
+
- spec/fixtures/global-top10.xml
|
82
87
|
- spec/fixtures/list_countries.xml
|
88
|
+
- spec/paginator_spec.rb
|
83
89
|
- spec/ralexa_spec.rb
|
84
90
|
- spec/session_spec.rb
|
85
91
|
- spec/spec_helper.rb
|
@@ -112,8 +118,11 @@ summary: Ruby client for Amazon Alexa APIs such as TopSites.
|
|
112
118
|
test_files:
|
113
119
|
- spec/canonicalized_query_string_spec.rb
|
114
120
|
- spec/client_spec.rb
|
115
|
-
- spec/fixtures/global.xml
|
121
|
+
- spec/fixtures/global-page1.xml
|
122
|
+
- spec/fixtures/global-page2.xml
|
123
|
+
- spec/fixtures/global-top10.xml
|
116
124
|
- spec/fixtures/list_countries.xml
|
125
|
+
- spec/paginator_spec.rb
|
117
126
|
- spec/ralexa_spec.rb
|
118
127
|
- spec/session_spec.rb
|
119
128
|
- spec/spec_helper.rb
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require "nokogiri"
|
2
|
-
|
3
|
-
module Ralexa
|
4
|
-
class AbstractXmlService
|
5
|
-
|
6
|
-
def initialize(client)
|
7
|
-
@client = client
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
# Returns the response as an XML document stripped of namespaces.
|
13
|
-
def dispatch(*params)
|
14
|
-
Nokogiri::XML.parse(
|
15
|
-
@client.get(host, path, merged_params(*params))
|
16
|
-
).remove_namespaces!
|
17
|
-
end
|
18
|
-
|
19
|
-
# A hash of the provided params hashes merged into the default_params.
|
20
|
-
def merged_params(*params)
|
21
|
-
params.reduce(default_params) do |merged_params, params|
|
22
|
-
merged_params.merge(params)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
data/spec/fixtures/global.xml
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
<?xml version="1.0"?>
|
2
|
-
<aws:TopSitesResponse xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:Response xmlns:aws="http://ats.amazonaws.com/doc/2005-11-21"><aws:OperationRequest><aws:RequestId>8a6c3a3f-a3c8-48d8-4775-3914d8f36e88</aws:RequestId></aws:OperationRequest><aws:TopSitesResult><aws:Alexa>
|
3
|
-
|
4
|
-
<aws:TopSites>
|
5
|
-
<aws:Country>
|
6
|
-
<aws:CountryName>GLOBAL</aws:CountryName>
|
7
|
-
<aws:CountryCode>*</aws:CountryCode>
|
8
|
-
<aws:TotalSites>366720</aws:TotalSites>
|
9
|
-
<aws:Sites>
|
10
|
-
<aws:Site>
|
11
|
-
<aws:DataUrl>wikipedia.org</aws:DataUrl>
|
12
|
-
<aws:Country>
|
13
|
-
<aws:Rank>6</aws:Rank>
|
14
|
-
<aws:Reach>
|
15
|
-
<aws:PerMillion>143000</aws:PerMillion>
|
16
|
-
</aws:Reach>
|
17
|
-
<aws:PageViews>
|
18
|
-
<aws:PerMillion>5219</aws:PerMillion>
|
19
|
-
<aws:PerUser>3.88</aws:PerUser>
|
20
|
-
</aws:PageViews>
|
21
|
-
</aws:Country>
|
22
|
-
<aws:Global>
|
23
|
-
<aws:Rank>6</aws:Rank>
|
24
|
-
</aws:Global>
|
25
|
-
</aws:Site>
|
26
|
-
<aws:Site>
|
27
|
-
<aws:DataUrl>bbc.co.uk</aws:DataUrl>
|
28
|
-
<aws:Country>
|
29
|
-
<aws:Rank>52</aws:Rank>
|
30
|
-
<aws:Reach>
|
31
|
-
<aws:PerMillion>20540</aws:PerMillion>
|
32
|
-
</aws:Reach>
|
33
|
-
<aws:PageViews>
|
34
|
-
<aws:PerMillion>898.5</aws:PerMillion>
|
35
|
-
<aws:PerUser>4.65</aws:PerUser>
|
36
|
-
</aws:PageViews>
|
37
|
-
</aws:Country>
|
38
|
-
<aws:Global>
|
39
|
-
<aws:Rank>52</aws:Rank>
|
40
|
-
</aws:Global>
|
41
|
-
</aws:Site>
|
42
|
-
</aws:Sites>
|
43
|
-
</aws:Country>
|
44
|
-
</aws:TopSites>
|
45
|
-
</aws:Alexa></aws:TopSitesResult><aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:StatusCode>Success</aws:StatusCode></aws:ResponseStatus></aws:Response></aws:TopSitesResponse>
|