weneedfeed 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +11 -14
- data/README.md +42 -14
- data/lib/weneedfeed.rb +3 -0
- data/lib/weneedfeed/application.rb +4 -4
- data/lib/weneedfeed/controllers.rb +1 -0
- data/lib/weneedfeed/controllers/base.rb +16 -0
- data/lib/weneedfeed/controllers/show_feed.rb +10 -19
- data/lib/weneedfeed/controllers/show_top_page.rb +3 -8
- data/lib/weneedfeed/helpers.rb +7 -0
- data/lib/weneedfeed/helpers/parameters.rb +14 -0
- data/lib/weneedfeed/item.rb +11 -4
- data/lib/weneedfeed/page.rb +2 -2
- data/lib/weneedfeed/page_schema.rb +15 -0
- data/lib/weneedfeed/schema.rb +38 -0
- data/lib/weneedfeed/scraping.rb +2 -2
- data/lib/weneedfeed/version.rb +1 -1
- data/lib/weneedfeed/views/show_feed.rb +5 -3
- data/lib/weneedfeed/views/show_top_page.rb +6 -6
- data/templates/show_feed.xml.erb +3 -1
- data/templates/show_top_page.html.erb +2 -2
- data/weneedfeed.gemspec +1 -0
- metadata +21 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65814d68cfaf1936de388ce721e3aee49a0e4641c0ecd6ae2afb72c858fbd8f4
|
4
|
+
data.tar.gz: ed124803cfb9589dd3b8e44169454b07623a2460a7ac2412c1946d08e51d590f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 486e7af49032ebf8124d6360cd835ec5ede778c4dc6911259fcee753247166ef6c53e3468bb3c386a3e2d794b3939685795c230a4ff24e65a67e615c5b39a800
|
7
|
+
data.tar.gz: 636f09f3860a1a7a16bf425facd29988e7037ae35a9ab8a11b8a37118339c9bdf750336eb01b8c36e2bee0d8b81ed2b1a9846269096428b702c09b27b873617a
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## Unreleased
|
9
9
|
|
10
|
+
## 0.6.0 - 2020-11-15
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
|
14
|
+
- Change pages schema from Hash to Array.
|
15
|
+
- Require hanami-router 2.0.0.alpha3 or later versions.
|
16
|
+
- Ignore pubDate when item.time is not found.
|
17
|
+
- Make some item_description_selector and item_time_selector optional.
|
18
|
+
|
10
19
|
## 0.5.0 - 2020-11-14
|
11
20
|
|
12
21
|
### Added
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
weneedfeed (0.
|
4
|
+
weneedfeed (0.6.0)
|
5
5
|
faraday
|
6
|
+
hanami-router (= 2.0.0.alpha3)
|
6
7
|
hibana
|
7
8
|
nokogiri
|
8
9
|
rack-capture (>= 0.4.0)
|
@@ -14,29 +15,28 @@ GEM
|
|
14
15
|
addressable (2.7.0)
|
15
16
|
public_suffix (>= 2.0.2, < 5.0)
|
16
17
|
ast (2.4.1)
|
17
|
-
concurrent-ruby (1.1.7)
|
18
18
|
crack (0.4.4)
|
19
19
|
diff-lcs (1.4.4)
|
20
20
|
faraday (1.1.0)
|
21
21
|
multipart-post (>= 1.2, < 3)
|
22
22
|
ruby2_keywords
|
23
|
-
hanami-router (
|
24
|
-
|
25
|
-
|
23
|
+
hanami-router (2.0.0.alpha3)
|
24
|
+
mustermann (~> 1.0)
|
25
|
+
mustermann-contrib (~> 1.0)
|
26
26
|
rack (~> 2.0)
|
27
|
-
|
28
|
-
concurrent-ruby (~> 1.0)
|
29
|
-
transproc (~> 1.0)
|
27
|
+
hansi (0.2.0)
|
30
28
|
hashdiff (1.0.1)
|
31
29
|
hibana (0.1.1)
|
32
30
|
hanami-router
|
33
31
|
rack
|
34
32
|
tilt
|
35
|
-
http_router (0.11.2)
|
36
|
-
rack (>= 1.0.0)
|
37
|
-
url_mount (~> 0.2.1)
|
38
33
|
mini_portile2 (2.4.0)
|
39
34
|
multipart-post (2.1.1)
|
35
|
+
mustermann (1.1.1)
|
36
|
+
ruby2_keywords (~> 0.0.1)
|
37
|
+
mustermann-contrib (1.1.1)
|
38
|
+
hansi (~> 0.2.0)
|
39
|
+
mustermann (= 1.1.1)
|
40
40
|
nokogiri (1.10.10)
|
41
41
|
mini_portile2 (~> 2.4.0)
|
42
42
|
parallel (1.19.2)
|
@@ -80,10 +80,7 @@ GEM
|
|
80
80
|
ruby2_keywords (0.0.2)
|
81
81
|
thor (1.0.1)
|
82
82
|
tilt (2.0.10)
|
83
|
-
transproc (1.1.1)
|
84
83
|
unicode-display_width (1.7.0)
|
85
|
-
url_mount (0.2.1)
|
86
|
-
rack
|
87
84
|
webmock (3.9.3)
|
88
85
|
addressable (>= 2.3.6)
|
89
86
|
crack (>= 0.3.2)
|
data/README.md
CHANGED
@@ -33,51 +33,79 @@ You need to write a schema file named with `weneedfeed.yml` to use this gem.
|
|
33
33
|
|
34
34
|
```yaml
|
35
35
|
pages:
|
36
|
-
example1
|
37
|
-
title:
|
36
|
+
- id: example1
|
37
|
+
title: Example feed with CSS Selector
|
38
38
|
url: http://example.com/1
|
39
39
|
item_selector: li
|
40
40
|
item_description_selector: p:nth-child(3)
|
41
41
|
item_link_selector: a
|
42
42
|
item_time_selector: time
|
43
43
|
item_title_selector: p:nth-child(2)
|
44
|
-
example2
|
45
|
-
title:
|
44
|
+
- id: example2
|
45
|
+
title: Example feed with XPath
|
46
46
|
url: http://example.com/2
|
47
47
|
item_selector: //li
|
48
48
|
item_description_selector: .//p[3]
|
49
|
-
item_link_selector: .//a
|
49
|
+
item_link_selector: .//a
|
50
50
|
item_time_selector: .//time
|
51
51
|
item_title_selector: .//p[2]
|
52
52
|
```
|
53
53
|
|
54
|
+
### `id`
|
55
|
+
|
56
|
+
Feed ID.
|
57
|
+
|
58
|
+
- required
|
59
|
+
- Used for feed URL.
|
60
|
+
|
54
61
|
### `title`
|
55
62
|
|
56
|
-
Feed title
|
63
|
+
Feed title.
|
64
|
+
|
65
|
+
- required
|
66
|
+
- Used for RSS `<title>` element in `<channel>` element.
|
57
67
|
|
58
68
|
### `url`
|
59
69
|
|
60
|
-
|
70
|
+
HTML source URL.
|
71
|
+
|
72
|
+
- required
|
73
|
+
- Used to fetch HTML page for building feed.
|
61
74
|
|
62
75
|
### `item_selector`
|
63
76
|
|
64
|
-
CSS or XPath selector to search each item
|
77
|
+
CSS or XPath selector to search each item.
|
65
78
|
|
66
|
-
|
79
|
+
- required
|
80
|
+
- Equivalent unit to RSS `<item>` element.
|
67
81
|
|
68
|
-
|
82
|
+
### `item_link_selector`
|
69
83
|
|
70
|
-
|
84
|
+
CSS or XPath selector to find `<a>` element in each item.
|
71
85
|
|
72
|
-
|
86
|
+
- required
|
87
|
+
- Used for `<link>` in `<item>`.
|
73
88
|
|
74
89
|
### `item_title_selector`
|
75
90
|
|
76
|
-
CSS or XPath selector to find element with title information in each item
|
91
|
+
CSS or XPath selector to find element with title information in each item.
|
92
|
+
|
93
|
+
- required
|
94
|
+
- Used for `<title>` in `<item>`.
|
77
95
|
|
78
96
|
### `item_description_selector`
|
79
97
|
|
80
|
-
CSS or XPath selector to find element with description information in each item
|
98
|
+
CSS or XPath selector to find element with description information in each item.
|
99
|
+
|
100
|
+
- optional
|
101
|
+
- Used for `<description>` in `<item>`.
|
102
|
+
|
103
|
+
### `item_time_selector`
|
104
|
+
|
105
|
+
CSS or XPath selector to find element with datetime information in each item.
|
106
|
+
|
107
|
+
- optional
|
108
|
+
- Used for `<pubDate>` in `<item>`. Its `datetime` attribute or its inner HTML is used to calculate datetime.
|
81
109
|
|
82
110
|
## Usage
|
83
111
|
|
data/lib/weneedfeed.rb
CHANGED
@@ -7,8 +7,11 @@ module Weneedfeed
|
|
7
7
|
autoload :Capture, 'weneedfeed/capture'
|
8
8
|
autoload :Command, 'weneedfeed/command'
|
9
9
|
autoload :Controllers, 'weneedfeed/controllers'
|
10
|
+
autoload :Helpers, 'weneedfeed/helpers'
|
10
11
|
autoload :Item, 'weneedfeed/item'
|
11
12
|
autoload :Page, 'weneedfeed/page'
|
13
|
+
autoload :PageSchema, 'weneedfeed/page_schema'
|
14
|
+
autoload :Schema, 'weneedfeed/schema'
|
12
15
|
autoload :Scraping, 'weneedfeed/scraping'
|
13
16
|
autoload :Views, 'weneedfeed/views'
|
14
17
|
end
|
@@ -6,12 +6,12 @@ module Weneedfeed
|
|
6
6
|
class Application < ::Hibana::Application
|
7
7
|
route do
|
8
8
|
get '/', to: ::Weneedfeed::Controllers::ShowTopPage, as: :top_page
|
9
|
-
get '/feeds/:
|
9
|
+
get '/feeds/:page_id.xml', to: ::Weneedfeed::Controllers::ShowFeed, as: :feed
|
10
10
|
end
|
11
11
|
|
12
12
|
# @param [Hash] schema
|
13
13
|
def initialize(schema:)
|
14
|
-
@schema = schema
|
14
|
+
@schema = ::Weneedfeed::Schema.new(schema)
|
15
15
|
super()
|
16
16
|
end
|
17
17
|
|
@@ -23,8 +23,8 @@ module Weneedfeed
|
|
23
23
|
|
24
24
|
# @return [Array<String>]
|
25
25
|
def paths
|
26
|
-
['/'] + @schema
|
27
|
-
"/feeds/#{
|
26
|
+
['/'] + @schema.page_ids.map do |page_id|
|
27
|
+
"/feeds/#{page_id}.xml"
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Weneedfeed
|
4
|
+
module Controllers
|
5
|
+
class Base < ::Hibana::Controller
|
6
|
+
include ::Weneedfeed::Helpers::Parameters
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
# @return [Weneedfeed::Schema]
|
11
|
+
def schema
|
12
|
+
request.env['weneedfeed.schema']
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -2,31 +2,22 @@
|
|
2
2
|
|
3
3
|
module Weneedfeed
|
4
4
|
module Controllers
|
5
|
-
class ShowFeed < ::
|
5
|
+
class ShowFeed < ::Weneedfeed::Controllers::Base
|
6
6
|
def call
|
7
|
-
|
8
|
-
|
9
|
-
'router.params',
|
10
|
-
:page_name
|
11
|
-
)
|
12
|
-
properties = env.dig(
|
13
|
-
'weneedfeed.schema',
|
14
|
-
'pages',
|
15
|
-
page_name
|
16
|
-
)
|
17
|
-
unless properties
|
7
|
+
page_schema = schema.find_page_schema(path_parameters[:page_id])
|
8
|
+
unless page_schema
|
18
9
|
response.status = 404
|
19
10
|
return
|
20
11
|
end
|
21
12
|
|
22
13
|
scraping = ::Weneedfeed::Scraping.new(
|
23
|
-
item_description_selector:
|
24
|
-
item_link_selector:
|
25
|
-
item_time_selector:
|
26
|
-
item_title_selector:
|
27
|
-
item_selector:
|
28
|
-
title:
|
29
|
-
url:
|
14
|
+
item_description_selector: page_schema.item_description_selector,
|
15
|
+
item_link_selector: page_schema.item_link_selector,
|
16
|
+
item_time_selector: page_schema.item_time_selector,
|
17
|
+
item_title_selector: page_schema.item_title_selector,
|
18
|
+
item_selector: page_schema.item_selector,
|
19
|
+
title: page_schema.title,
|
20
|
+
url: page_schema.url,
|
30
21
|
)
|
31
22
|
page = scraping.call
|
32
23
|
|
@@ -2,18 +2,13 @@
|
|
2
2
|
|
3
3
|
module Weneedfeed
|
4
4
|
module Controllers
|
5
|
-
class ShowTopPage < ::
|
5
|
+
class ShowTopPage < ::Weneedfeed::Controllers::Base
|
6
6
|
def call
|
7
|
-
|
8
|
-
'weneedfeed.schema',
|
9
|
-
'pages'
|
10
|
-
).sort_by do |_key, value|
|
11
|
-
value['title']
|
12
|
-
end
|
7
|
+
page_schemata = schema.page_schemata.sort_by(&:title)
|
13
8
|
response.content_type = 'text/html'
|
14
9
|
response.write(
|
15
10
|
::Weneedfeed::Views::ShowTopPage.new(
|
16
|
-
|
11
|
+
page_schemata: page_schemata,
|
17
12
|
partial_template_path: ::File.expand_path(
|
18
13
|
'templates/show_top_page.html.erb',
|
19
14
|
"#{__dir__}/../../.."
|
data/lib/weneedfeed/item.rb
CHANGED
@@ -15,8 +15,8 @@ module Weneedfeed
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
# @param [String] description_selector
|
19
|
-
# @param [String] link_selector
|
18
|
+
# @param [String, nil] description_selector
|
19
|
+
# @param [String, nil] link_selector
|
20
20
|
# @param [Nokogiri::Node] node
|
21
21
|
# @param [String] time_selector
|
22
22
|
# @param [String] title_selector
|
@@ -39,6 +39,8 @@ module Weneedfeed
|
|
39
39
|
|
40
40
|
# @return [String, nil]
|
41
41
|
def description
|
42
|
+
return unless @description_selector
|
43
|
+
|
42
44
|
@node.at(@description_selector)&.inner_html
|
43
45
|
end
|
44
46
|
|
@@ -52,7 +54,12 @@ module Weneedfeed
|
|
52
54
|
|
53
55
|
# @return [Time, nil]
|
54
56
|
def time
|
55
|
-
|
57
|
+
return unless @time_selector
|
58
|
+
|
59
|
+
string = time_string
|
60
|
+
return unless string
|
61
|
+
|
62
|
+
self.class.parse_time(string)
|
56
63
|
end
|
57
64
|
|
58
65
|
# @return [String]
|
@@ -67,7 +74,7 @@ module Weneedfeed
|
|
67
74
|
@node.at(@time_selector)
|
68
75
|
end
|
69
76
|
|
70
|
-
# @return [String]
|
77
|
+
# @return [String, nil]
|
71
78
|
def time_string
|
72
79
|
node = time_node
|
73
80
|
return unless node
|
data/lib/weneedfeed/page.rb
CHANGED
@@ -8,9 +8,9 @@ module Weneedfeed
|
|
8
8
|
# @return [String]
|
9
9
|
attr_reader :url
|
10
10
|
|
11
|
-
# @param [String] item_description_selector
|
11
|
+
# @param [String, nil] item_description_selector
|
12
12
|
# @param [String] item_link_selector
|
13
|
-
# @param [String] item_time_selector
|
13
|
+
# @param [String, nil] item_time_selector
|
14
14
|
# @param [String] item_title_selector
|
15
15
|
# @param [String] item_selector
|
16
16
|
# @param [Nokogiri::Node] node
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Weneedfeed
|
4
|
+
PageSchema = Struct.new(
|
5
|
+
:id,
|
6
|
+
:item_description_selector,
|
7
|
+
:item_link_selector,
|
8
|
+
:item_time_selector,
|
9
|
+
:item_title_selector,
|
10
|
+
:item_selector,
|
11
|
+
:title,
|
12
|
+
:url,
|
13
|
+
keyword_init: true,
|
14
|
+
)
|
15
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Weneedfeed
|
4
|
+
class Schema
|
5
|
+
# @param [Hash] raw
|
6
|
+
def initialize(raw)
|
7
|
+
@raw = raw
|
8
|
+
end
|
9
|
+
|
10
|
+
# @param [String, nl] page_schema_id
|
11
|
+
# @return [Weneedfeed::PageSchema]
|
12
|
+
def find_page_schema(page_schema_id)
|
13
|
+
page_schemata.find do |page_schema|
|
14
|
+
page_schema.id == page_schema_id
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [Array<String>]
|
19
|
+
def page_ids
|
20
|
+
page_schemata.map(&:id)
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [Array<Weneedfeed::PageSchema>]
|
24
|
+
def page_schemata
|
25
|
+
@raw['pages'].map do |hash|
|
26
|
+
::Weneedfeed::PageSchema.new(
|
27
|
+
id: hash['id'],
|
28
|
+
item_link_selector: hash['item_link_selector'],
|
29
|
+
item_time_selector: hash['item_time_selector'],
|
30
|
+
item_title_selector: hash['item_title_selector'],
|
31
|
+
item_selector: hash['item_selector'],
|
32
|
+
title: hash['title'],
|
33
|
+
url: hash['url'],
|
34
|
+
)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/weneedfeed/scraping.rb
CHANGED
@@ -5,9 +5,9 @@ require 'nokogiri'
|
|
5
5
|
|
6
6
|
module Weneedfeed
|
7
7
|
class Scraping
|
8
|
-
# @param [String] item_description_selector
|
8
|
+
# @param [String, nil] item_description_selector
|
9
9
|
# @param [String] item_link_selector
|
10
|
-
# @param [String] item_time_selector
|
10
|
+
# @param [String, nil] item_time_selector
|
11
11
|
# @param [String] item_title_selector
|
12
12
|
# @param [String] item_selector
|
13
13
|
# @param [String] title
|
data/lib/weneedfeed/version.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
module Weneedfeed
|
4
4
|
module Views
|
5
5
|
class ShowFeed < ::Hibana::View
|
6
|
+
include ::Weneedfeed::Helpers::Parameters
|
7
|
+
|
6
8
|
# @param [Weneedfeed::Page] page
|
7
9
|
def initialize(page:, **argv)
|
8
10
|
super(**argv)
|
@@ -13,7 +15,7 @@ module Weneedfeed
|
|
13
15
|
|
14
16
|
# @return [String]
|
15
17
|
def top_page_path
|
16
|
-
request.path.delete_suffix(router.path(:feed,
|
18
|
+
request.path.delete_suffix(router.path(:feed, page_id: page_id))
|
17
19
|
end
|
18
20
|
|
19
21
|
# @return [Enumerable<Weneedfeed::Item>]
|
@@ -24,8 +26,8 @@ module Weneedfeed
|
|
24
26
|
end
|
25
27
|
|
26
28
|
# @return [String]
|
27
|
-
def
|
28
|
-
|
29
|
+
def page_id
|
30
|
+
path_parameters[:page_id]
|
29
31
|
end
|
30
32
|
|
31
33
|
# @return [Hanami::Router]
|
@@ -3,10 +3,10 @@
|
|
3
3
|
module Weneedfeed
|
4
4
|
module Views
|
5
5
|
class ShowTopPage < ::Hibana::View
|
6
|
-
# @param [Array<
|
7
|
-
def initialize(
|
6
|
+
# @param [Array<Hash>] page_schemata
|
7
|
+
def initialize(page_schemata:, **argv)
|
8
8
|
super(**argv)
|
9
|
-
@
|
9
|
+
@page_schemata = page_schemata
|
10
10
|
end
|
11
11
|
|
12
12
|
private
|
@@ -16,10 +16,10 @@ module Weneedfeed
|
|
16
16
|
request.path.delete_suffix(router.path(:top_page))
|
17
17
|
end
|
18
18
|
|
19
|
-
# @param [String]
|
19
|
+
# @param [String] page_id
|
20
20
|
# @return [String]
|
21
|
-
def feed_path(
|
22
|
-
"#{base_path}#{router.path(:feed,
|
21
|
+
def feed_path(page_id:)
|
22
|
+
"#{base_path}#{router.path(:feed, page_id: page_id)}"
|
23
23
|
end
|
24
24
|
|
25
25
|
# @return [Hanami::Router]
|
data/templates/show_feed.xml.erb
CHANGED
@@ -12,7 +12,9 @@
|
|
12
12
|
<item>
|
13
13
|
<title><![CDATA[<%= item.title %>]]></title>
|
14
14
|
<link><%= item.link %></link>
|
15
|
-
|
15
|
+
<% if item.time %>
|
16
|
+
<pubDate><%= item.time.rfc822 %></pubDate>
|
17
|
+
<% end %>
|
16
18
|
<description><![CDATA[<%= item.description %>]]></description>
|
17
19
|
<content:encoded><![CDATA[<%= item.description %>]]></content:encoded>
|
18
20
|
<guid isPermaLink="true"><%= item.link %></guid>
|
@@ -7,9 +7,9 @@
|
|
7
7
|
</head>
|
8
8
|
<body>
|
9
9
|
<ul>
|
10
|
-
<% @
|
10
|
+
<% @page_schemata.each do |page_schema| %>
|
11
11
|
<li>
|
12
|
-
<a href="<%= feed_path(
|
12
|
+
<a href="<%= feed_path(page_id: page_schema.id) %>"><%= page_schema.title %></a>
|
13
13
|
</li>
|
14
14
|
<% end %>
|
15
15
|
</ul>
|
data/weneedfeed.gemspec
CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.require_paths = ['lib']
|
27
27
|
|
28
28
|
spec.add_runtime_dependency 'faraday'
|
29
|
+
spec.add_runtime_dependency 'hanami-router', '2.0.0.alpha3'
|
29
30
|
spec.add_runtime_dependency 'hibana'
|
30
31
|
spec.add_runtime_dependency 'nokogiri'
|
31
32
|
spec.add_runtime_dependency 'rack-capture', '>= 0.4.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weneedfeed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: hanami-router
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.0.alpha3
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.0.0.alpha3
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: hibana
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,10 +120,15 @@ files:
|
|
106
120
|
- lib/weneedfeed/capture.rb
|
107
121
|
- lib/weneedfeed/command.rb
|
108
122
|
- lib/weneedfeed/controllers.rb
|
123
|
+
- lib/weneedfeed/controllers/base.rb
|
109
124
|
- lib/weneedfeed/controllers/show_feed.rb
|
110
125
|
- lib/weneedfeed/controllers/show_top_page.rb
|
126
|
+
- lib/weneedfeed/helpers.rb
|
127
|
+
- lib/weneedfeed/helpers/parameters.rb
|
111
128
|
- lib/weneedfeed/item.rb
|
112
129
|
- lib/weneedfeed/page.rb
|
130
|
+
- lib/weneedfeed/page_schema.rb
|
131
|
+
- lib/weneedfeed/schema.rb
|
113
132
|
- lib/weneedfeed/scraping.rb
|
114
133
|
- lib/weneedfeed/version.rb
|
115
134
|
- lib/weneedfeed/views.rb
|