pluto-news 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pluto/news.rb +28 -11
- data/lib/pluto/news/version.rb +2 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7908922c343e9a80b979528c5561f2b946b77a74
|
4
|
+
data.tar.gz: 1c6753f57ad5d2f47ac9b1f9d2dc774619a5fe0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2278051b4c6b0729a83d2697012b61fe214f8cfecbcaffc24ca365ad6e8dba4db3a4c8cae9b22feadf23cd4b9a80115893b2d0e2f10f72b42628f39d5c927e1e
|
7
|
+
data.tar.gz: 232c79b23e21ce139bfc107495e65f2bcb960c1f926c98f8d40197ddf1885f5d8add3bea79d9afcb4939817a8de7383bb13d08e7dc9f771d1f981a0f00ffa9e3
|
data/lib/pluto/news.rb
CHANGED
@@ -54,13 +54,18 @@ require 'pluto/news/version'
|
|
54
54
|
|
55
55
|
module News
|
56
56
|
|
57
|
+
def self.site=(value) @site = value; end
|
58
|
+
def self.site() @site ||= 'news'; end ## note: defaults to news
|
59
|
+
|
60
|
+
|
61
|
+
|
57
62
|
def self.subscribe( *feeds )
|
58
63
|
site_hash = { ## note: keys are strings (NOT symbols) for now
|
59
|
-
'title' => '
|
64
|
+
'title' => 'Untitled'
|
60
65
|
}
|
61
66
|
|
62
67
|
feeds.each_with_index do |feed|
|
63
|
-
## note:
|
68
|
+
## note:
|
64
69
|
## use a "fingerprint" hash digest as key
|
65
70
|
## do NOT include scheme (e.g. https or http)
|
66
71
|
## do NOT include port
|
@@ -74,14 +79,14 @@ module News
|
|
74
79
|
## note: cut-off www. if leading e.g. www.ruby-lang.org => ruby-lang.org
|
75
80
|
host = uri.host.downcase.sub( /^www\./, '' )
|
76
81
|
# use a differt separator e.g _ or ~ and NOT $ - why? why not?
|
77
|
-
key = "#{host}$#{Digest::MD5.hexdigest( uri.request_uri )}"
|
82
|
+
key = "#{host}$#{Digest::MD5.hexdigest( uri.request_uri )}"
|
78
83
|
|
79
84
|
site_hash[ key ] = { 'feed' => feed }
|
80
85
|
end
|
81
86
|
|
82
87
|
connection ## make sure we have a database connection (and setup) up-and-running
|
83
|
-
|
84
|
-
Pluto::Model::Site.deep_create_or_update_from_hash!(
|
88
|
+
## note: always use "multi-site" setup; defaults to 'news' site key
|
89
|
+
Pluto::Model::Site.deep_create_or_update_from_hash!( site, site_hash )
|
85
90
|
end
|
86
91
|
|
87
92
|
def self.update
|
@@ -94,20 +99,32 @@ module News
|
|
94
99
|
|
95
100
|
def self.feeds
|
96
101
|
connection
|
102
|
+
## note: always use "multi-site" setup; defaults to 'news' site key
|
97
103
|
## note: add "default" scope - orders (sorts) by latest / time
|
98
|
-
Pluto::Model::
|
104
|
+
rec = Pluto::Model::Site.where(key: site).first
|
105
|
+
if rec.nil?
|
106
|
+
Pluto::Model::Feed.none ## use null (relation) pattern to avoid crash on nil - why? why not?
|
107
|
+
else
|
108
|
+
rec.feeds.order(
|
99
109
|
Arel.sql( "coalesce(feeds.updated,feeds.published,'1970-01-01') desc" )
|
100
110
|
)
|
111
|
+
end
|
101
112
|
end
|
102
113
|
def self.channels() feeds; end ## convenience alias for feeds
|
103
114
|
|
104
115
|
|
105
116
|
def self.items
|
106
117
|
connection ## make sure we have a database connection (and setup) up-and-running
|
118
|
+
## note: always use "multi-site" setup; defaults to 'news' site key
|
107
119
|
## note: add "default" scope - orders (sorts) by latest / time
|
108
|
-
Pluto::Model::
|
120
|
+
rec = Pluto::Model::Site.where(key: site).first
|
121
|
+
if rec.nil?
|
122
|
+
Pluto::Model::Item.none ## use null (relation) pattern to avoid crash on nil - why? why not?
|
123
|
+
else
|
124
|
+
rec.items.order(
|
109
125
|
Arel.sql( "coalesce(items.updated,items.published,'1970-01-01') desc" )
|
110
126
|
)
|
127
|
+
end
|
111
128
|
end
|
112
129
|
def self.latest() items; end ## note: "default" scope orders (sorts) by latest / time
|
113
130
|
|
@@ -174,7 +191,7 @@ module News
|
|
174
191
|
def self.q3( year=Date.today.year ) quarter3( year ); end
|
175
192
|
def self.q4( year=Date.today.year ) quarter4( year ); end
|
176
193
|
|
177
|
-
|
194
|
+
|
178
195
|
def self.year( year=Date.today.year )
|
179
196
|
q = year
|
180
197
|
items.
|
@@ -183,9 +200,9 @@ module News
|
|
183
200
|
)
|
184
201
|
end
|
185
202
|
|
186
|
-
|
187
|
-
|
188
|
-
|
203
|
+
|
204
|
+
|
205
|
+
|
189
206
|
def self.this_week() week; end ## convenience alias - keep - why? why not?
|
190
207
|
def self.this_month() month; end
|
191
208
|
def self.this_quarter() quarter; end
|
data/lib/pluto/news/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pluto-news
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pluto-models
|