hyperfeed 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +23 -21
- data/Rakefile +16 -0
- data/hyperfeed.gemspec +6 -5
- data/lib/hyperfeed/resource_builder.rb +48 -47
- data/lib/hyperfeed/version.rb +1 -1
- data/lib/hyperfeed.rb +17 -25
- data/spec/fixtures/lst_mob.xml +8418 -0
- data/spec/hyperfeed/hyperfeed_spec.rb +82 -0
- data/spec/spec_helper.rb +17 -0
- metadata +41 -15
- data/lib/hyperfeed/discover.rb +0 -20
- data/lib/hyperfeed/middleware/adapter_middleware.rb +0 -22
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Hyperfeed do
|
4
|
+
|
5
|
+
let(:url) { "http://quatrorodas.abril.com.br/lst_mob.xml" }
|
6
|
+
#let(:url_page) { "http://quatrorodas.abril.com.br/lst_mob.xml?page=2" }
|
7
|
+
#let(:url_per_page) { "http://quatrorodas.abril.com.br/lst_mob.xml?per_page=20" }
|
8
|
+
let(:resource_id) {"f91f93b7061233a9c13c20376c450012"}
|
9
|
+
|
10
|
+
context "with response code equal 200" do
|
11
|
+
before do
|
12
|
+
register_uri(:get, url, :body => fixture("lst_mob.xml"))
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { Hyperfeed::Client.at(url).get }
|
16
|
+
its(:per_page) { should == 10 }
|
17
|
+
its(:current_page) { should == 1 }
|
18
|
+
its(:total_pages) { should == 35 }
|
19
|
+
its(:total_results) { should == 350 }
|
20
|
+
|
21
|
+
context "#result" do
|
22
|
+
def subject
|
23
|
+
super.result.first
|
24
|
+
end
|
25
|
+
|
26
|
+
its(:id) { should == "f91f93b7061233a9c13c20376c450012" }
|
27
|
+
its(:pubdate) { should == "10/05/2013" }
|
28
|
+
its(:title) { should == "BMW e maior marca do mundo, diz Forbes" }
|
29
|
+
its(:source) { should == "QUATRO RODAS" }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "with per_page param" do
|
34
|
+
before do
|
35
|
+
register_uri(:get, url, :body => fixture("lst_mob.xml"))
|
36
|
+
end
|
37
|
+
|
38
|
+
subject { Hyperfeed::Client.at(url, :per_page => 20).get }
|
39
|
+
its(:per_page) { should == 20 }
|
40
|
+
it { subject.result.size.should == 20 }
|
41
|
+
its(:current_page) { should == 1 }
|
42
|
+
its(:total_pages) { should == 18 }
|
43
|
+
its(:total_results) { should == 350 }
|
44
|
+
end
|
45
|
+
|
46
|
+
context "with page param" do
|
47
|
+
before do
|
48
|
+
register_uri(:get, url, :body => fixture("lst_mob.xml"))
|
49
|
+
end
|
50
|
+
|
51
|
+
subject { Hyperfeed::Client.at(url, :page => 2).get }
|
52
|
+
its(:per_page) { should == 10 }
|
53
|
+
its(:current_page) { should == 2 }
|
54
|
+
its(:total_pages) { should == 35 }
|
55
|
+
its(:total_results) { should == 350 }
|
56
|
+
end
|
57
|
+
|
58
|
+
context "with item" do
|
59
|
+
before do
|
60
|
+
register_uri(:get, url, :body => fixture("lst_mob.xml"))
|
61
|
+
end
|
62
|
+
|
63
|
+
subject { Hyperfeed::Client.at(url).get(resource_id) }
|
64
|
+
its(:title) { should == "BMW e maior marca do mundo, diz Forbes" }
|
65
|
+
its(:id) { should == "f91f93b7061233a9c13c20376c450012" }
|
66
|
+
its(:subtitle) { should == "Empresa e a unica montadora no top 10" }
|
67
|
+
its(:category) { should == "mercado" }
|
68
|
+
its(:author) { should == "Vitor Matsubara" }
|
69
|
+
its(:enclosure) { should be_a Array }
|
70
|
+
|
71
|
+
context "item enclosure" do
|
72
|
+
def subject
|
73
|
+
super.enclosure
|
74
|
+
end
|
75
|
+
its(:size) { should == 1 }
|
76
|
+
|
77
|
+
it { subject.first.url.should == "http://quatrorodas.abril.com.br/100513_bmw1.jpg" }
|
78
|
+
it { subject.first.type.should == "image/jpeg" }
|
79
|
+
it { subject.first.title.should == "BMW e maior marca do mundo, diz Forbes" }
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
2
|
+
ENV["RAILS_ENV"] ||= 'test'
|
3
|
+
require 'rspec'
|
4
|
+
require 'hyperfeed'
|
5
|
+
require 'fakeweb'
|
6
|
+
|
7
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
8
|
+
RSpec.configure do |config|
|
9
|
+
def fixture(name)
|
10
|
+
File.read("#{File.dirname(__FILE__)}/fixtures/#{name}")
|
11
|
+
end
|
12
|
+
|
13
|
+
def register_uri(method, uri, options = {})
|
14
|
+
options.merge!(:content_type => "application/xml") unless options[:content_type].nil?
|
15
|
+
FakeWeb.register_uri(method, uri, options)
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyperfeed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,33 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: http_monkey
|
16
|
-
requirement: &
|
16
|
+
requirement: &70150867271620 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
21
|
+
version: '0.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70150867271620
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &70150867271120 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.5'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70150867271120
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: methodize
|
38
|
+
requirement: &70150867270740 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ! '>='
|
@@ -32,10 +43,21 @@ dependencies:
|
|
32
43
|
version: '0'
|
33
44
|
type: :runtime
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *70150867270740
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec
|
49
|
+
requirement: &70150867270280 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70150867270280
|
36
58
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement: &
|
59
|
+
name: fakeweb
|
60
|
+
requirement: &70150867269780 !ruby/object:Gem::Requirement
|
39
61
|
none: false
|
40
62
|
requirements:
|
41
63
|
- - ! '>='
|
@@ -43,7 +65,7 @@ dependencies:
|
|
43
65
|
version: '0'
|
44
66
|
type: :development
|
45
67
|
prerelease: false
|
46
|
-
version_requirements: *
|
68
|
+
version_requirements: *70150867269780
|
47
69
|
description: An adapter to plug feeds content on hypermedia engines
|
48
70
|
email:
|
49
71
|
- guilherme.kato@abril.com.br
|
@@ -58,11 +80,12 @@ files:
|
|
58
80
|
- Rakefile
|
59
81
|
- hyperfeed.gemspec
|
60
82
|
- lib/hyperfeed.rb
|
61
|
-
- lib/hyperfeed/discover.rb
|
62
|
-
- lib/hyperfeed/middleware/adapter_middleware.rb
|
63
83
|
- lib/hyperfeed/resource_builder.rb
|
64
84
|
- lib/hyperfeed/version.rb
|
65
|
-
|
85
|
+
- spec/fixtures/lst_mob.xml
|
86
|
+
- spec/hyperfeed/hyperfeed_spec.rb
|
87
|
+
- spec/spec_helper.rb
|
88
|
+
homepage: https://github.com/gkato/hyperfeed
|
66
89
|
licenses: []
|
67
90
|
post_install_message:
|
68
91
|
rdoc_options: []
|
@@ -86,4 +109,7 @@ rubygems_version: 1.8.15
|
|
86
109
|
signing_key:
|
87
110
|
specification_version: 3
|
88
111
|
summary: An adapter to plug feeds content on hypermedia engines
|
89
|
-
test_files:
|
112
|
+
test_files:
|
113
|
+
- spec/fixtures/lst_mob.xml
|
114
|
+
- spec/hyperfeed/hyperfeed_spec.rb
|
115
|
+
- spec/spec_helper.rb
|
data/lib/hyperfeed/discover.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
module Hyperfeed
|
2
|
-
class Discover
|
3
|
-
|
4
|
-
include Hyperfeed::ResourceBuilder
|
5
|
-
|
6
|
-
def initialize(url, rss)
|
7
|
-
@url = url
|
8
|
-
@rss = rss
|
9
|
-
end
|
10
|
-
|
11
|
-
def hyperfeed
|
12
|
-
if @url =~ /resource_id=([0-9]+)/
|
13
|
-
hyperfeed = get_resource(@rss, @url, $1.to_i)
|
14
|
-
else
|
15
|
-
hyperfeed = retrieve_resources_list(@rss, @url, {})
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module Hyperfeed
|
2
|
-
class AdapterMiddleware
|
3
|
-
|
4
|
-
def initialize(app)
|
5
|
-
@app = app
|
6
|
-
end
|
7
|
-
|
8
|
-
def call(env)
|
9
|
-
code, headers, body = @app.call(env)
|
10
|
-
|
11
|
-
url = env.uri.to_s
|
12
|
-
rss = Nokogiri::XML(body)
|
13
|
-
|
14
|
-
discover = Hyperfeed::Discover.new(url, rss)
|
15
|
-
HttpMonkey::Client::Response.inject_with(:hyperfeed, discover.hyperfeed)
|
16
|
-
|
17
|
-
[code, headers, body]
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|