hyperfeed 0.0.1 → 0.0.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.
- 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
|
-
|