wcc-blogs-client 0.5.2 → 0.7.3
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.
- checksums.yaml +4 -4
- data/lib/wcc/blogs.rb +1 -0
- data/lib/wcc/blogs/client/response.rb +1 -1
- data/lib/wcc/blogs/collection.rb +18 -4
- data/lib/wcc/blogs/collection_summary.rb +1 -26
- data/lib/wcc/blogs/concerns/caching.rb +24 -0
- data/lib/wcc/blogs/linked_blog_post_summary.rb +38 -0
- data/lib/wcc/blogs/post.rb +23 -11
- data/lib/wcc/blogs/post_summary.rb +16 -6
- data/lib/wcc/blogs/property.rb +12 -4
- data/lib/wcc/blogs/version.rb +1 -1
- metadata +9 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 877882f8f0a84886bda0d722f5c2193c4590556c
|
4
|
+
data.tar.gz: eaeb84c5dee20a2cc375a020d3d664141e433d19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1cc0ed72da511f3726da0b564f32d9e613c38a9196aeae1d9bce18bd8684de44b58d89d85ac8d908cb0a4ed709e81aa4723914aa6a9ff8847377257fa918d8bc
|
7
|
+
data.tar.gz: b4a19b7f2b0b0fafd90a80d0b822041c2ed0083d104899bcd99e1934eeff04c851512a98616aeb93dda7250ec5b4977e13b8c65acd71be781b39ff5f09d13b4e
|
data/lib/wcc/blogs.rb
CHANGED
@@ -10,6 +10,7 @@ require 'wcc/blogs/errors'
|
|
10
10
|
require 'wcc/blogs/metadata'
|
11
11
|
require 'wcc/blogs/post'
|
12
12
|
require 'wcc/blogs/post_summary'
|
13
|
+
require 'wcc/blogs/linked_blog_post_summary'
|
13
14
|
require 'wcc/blogs/property'
|
14
15
|
require 'wcc/blogs/collection'
|
15
16
|
require 'wcc/blogs/collection_summary'
|
data/lib/wcc/blogs/collection.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative './concerns/caching'
|
4
|
+
|
3
5
|
module WCC::Blogs
|
4
6
|
class Collection
|
5
7
|
extend WCC::Blogs::Utils
|
8
|
+
include WCC::Blogs::Concerns::Caching
|
6
9
|
|
7
|
-
def self.find(key = nil)
|
8
|
-
new(
|
10
|
+
def self.find(key = nil, client: WCC::Blogs.client)
|
11
|
+
new(client.collection_show(key).raw, client: client)
|
9
12
|
end
|
10
13
|
|
11
14
|
attr_reader :raw
|
@@ -22,11 +25,18 @@ module WCC::Blogs
|
|
22
25
|
define_camelcase_alias(
|
23
26
|
'key',
|
24
27
|
'title',
|
25
|
-
'digest'
|
28
|
+
'digest',
|
29
|
+
'updated_at'
|
26
30
|
) do |camelcase|
|
27
31
|
raw[camelcase]
|
28
32
|
end
|
29
33
|
|
34
|
+
define_camelcase_alias(
|
35
|
+
'hero_image'
|
36
|
+
) do |camelcase|
|
37
|
+
OpenStruct.new(raw[camelcase]) if raw[camelcase]
|
38
|
+
end
|
39
|
+
|
30
40
|
def posts
|
31
41
|
@posts ||=
|
32
42
|
(raw['posts'] || []).map do |summary|
|
@@ -38,6 +48,10 @@ module WCC::Blogs
|
|
38
48
|
OpenStruct.new(raw['_links'] || {})
|
39
49
|
end
|
40
50
|
|
41
|
-
|
51
|
+
private
|
52
|
+
|
53
|
+
def cache_key_without_version
|
54
|
+
"WCC::Blogs::Collection/#{key}"
|
55
|
+
end
|
42
56
|
end
|
43
57
|
end
|
@@ -21,33 +21,8 @@ module WCC::Blogs
|
|
21
21
|
def posts
|
22
22
|
@posts ||=
|
23
23
|
(raw['posts'] || []).map do |summary|
|
24
|
-
|
24
|
+
WCC::Blogs::LinkedBlogPostSummary.new(summary, client: @client)
|
25
25
|
end
|
26
26
|
end
|
27
|
-
|
28
|
-
class PostReference
|
29
|
-
extend WCC::Blogs::Utils
|
30
|
-
|
31
|
-
attr_reader :raw
|
32
|
-
|
33
|
-
def initialize(raw, client: WCC::Blogs.client)
|
34
|
-
@raw = raw
|
35
|
-
@client = client
|
36
|
-
end
|
37
|
-
|
38
|
-
def full_post
|
39
|
-
Post.new(@client.get(_links.self).raw)
|
40
|
-
end
|
41
|
-
|
42
|
-
define_camelcase_alias(
|
43
|
-
'slug'
|
44
|
-
) do |camelcase|
|
45
|
-
raw[camelcase]
|
46
|
-
end
|
47
|
-
|
48
|
-
def _links
|
49
|
-
OpenStruct.new(raw['_links'] || {})
|
50
|
-
end
|
51
|
-
end
|
52
27
|
end
|
53
28
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WCC::Blogs::Concerns
|
4
|
+
module Caching
|
5
|
+
def cache_key
|
6
|
+
unless defined?(ActiveRecord::Base) &&
|
7
|
+
ActiveRecord::Base.respond_to?(:cache_versioning) &&
|
8
|
+
ActiveRecord::Base.cache_versioning == true
|
9
|
+
return cache_key_with_version
|
10
|
+
end
|
11
|
+
|
12
|
+
cache_key_without_version
|
13
|
+
end
|
14
|
+
|
15
|
+
# https://guides.rubyonrails.org/caching_with_rails.html#low-level-caching
|
16
|
+
def cache_key_with_version
|
17
|
+
[cache_key_without_version, cache_version].join('/')
|
18
|
+
end
|
19
|
+
|
20
|
+
def cache_version
|
21
|
+
updated_at&.to_i
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WCC::Blogs
|
4
|
+
class LinkedBlogPostSummary
|
5
|
+
extend WCC::Blogs::Utils
|
6
|
+
|
7
|
+
attr_reader :raw
|
8
|
+
|
9
|
+
def initialize(raw, client: WCC::Blogs.client)
|
10
|
+
@raw = raw
|
11
|
+
@client = client
|
12
|
+
end
|
13
|
+
|
14
|
+
def full_post
|
15
|
+
Post.new(@client.get(_links.self).raw, client: @client)
|
16
|
+
end
|
17
|
+
|
18
|
+
define_camelcase_alias(
|
19
|
+
'title',
|
20
|
+
'subtitle',
|
21
|
+
'slug'
|
22
|
+
) do |camelcase|
|
23
|
+
raw[camelcase]
|
24
|
+
end
|
25
|
+
|
26
|
+
define_camelcase_alias(
|
27
|
+
'date'
|
28
|
+
) do |camelcase|
|
29
|
+
value = raw[camelcase]
|
30
|
+
|
31
|
+
Time.parse(value) if value&.length
|
32
|
+
end
|
33
|
+
|
34
|
+
def _links
|
35
|
+
OpenStruct.new(raw['_links'] || {})
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/wcc/blogs/post.rb
CHANGED
@@ -1,16 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative './concerns/caching'
|
4
|
+
|
3
5
|
module WCC::Blogs
|
4
6
|
class Post
|
5
7
|
extend WCC::Blogs::Utils
|
8
|
+
include WCC::Blogs::Concerns::Caching
|
6
9
|
require 'time'
|
7
10
|
|
8
|
-
def self.find(slug)
|
9
|
-
new(
|
11
|
+
def self.find(slug, client: WCC::Blogs.client)
|
12
|
+
new(client.blog_show(slug).raw, client: client)
|
10
13
|
end
|
11
14
|
|
12
|
-
def self.find_all
|
13
|
-
PostSummary.find_all.map(&:full_post)
|
15
|
+
def self.find_all(client: WCC::Blogs.client)
|
16
|
+
PostSummary.find_all(client: client).map(&:full_post)
|
14
17
|
end
|
15
18
|
|
16
19
|
attr_reader :raw
|
@@ -26,6 +29,7 @@ module WCC::Blogs
|
|
26
29
|
|
27
30
|
def html
|
28
31
|
@html ||= @client.get(_links.fragment)
|
32
|
+
.assert_ok!
|
29
33
|
.body
|
30
34
|
.force_encoding('UTF-8')
|
31
35
|
end
|
@@ -38,11 +42,6 @@ module WCC::Blogs
|
|
38
42
|
true
|
39
43
|
end
|
40
44
|
|
41
|
-
def time_to_read
|
42
|
-
# TODO
|
43
|
-
nil
|
44
|
-
end
|
45
|
-
|
46
45
|
def to_param
|
47
46
|
slug.sub(%r{^/}, '')
|
48
47
|
end
|
@@ -56,11 +55,15 @@ module WCC::Blogs
|
|
56
55
|
'host',
|
57
56
|
'path',
|
58
57
|
'digest',
|
59
|
-
'fragment_path'
|
58
|
+
'fragment_path',
|
59
|
+
'read_time',
|
60
|
+
'word_count'
|
60
61
|
) do |camelcase|
|
61
62
|
raw[camelcase]
|
62
63
|
end
|
63
64
|
|
65
|
+
alias time_to_read read_time
|
66
|
+
|
64
67
|
define_camelcase_alias(
|
65
68
|
'date',
|
66
69
|
'updated_at'
|
@@ -97,6 +100,15 @@ module WCC::Blogs
|
|
97
100
|
CollectionSummary.new(raw['collection'], client: @client) if raw['collection']
|
98
101
|
end
|
99
102
|
|
100
|
-
|
103
|
+
define_camelcase_alias('related_posts') do |camelcase|
|
104
|
+
related = raw[camelcase] || []
|
105
|
+
related.map { |val| WCC::Blogs::LinkedBlogPostSummary.new(val, client: @client) }
|
106
|
+
end
|
107
|
+
|
108
|
+
private
|
109
|
+
|
110
|
+
def cache_key_without_version
|
111
|
+
"WCC::Blogs::Post/#{slug}"
|
112
|
+
end
|
101
113
|
end
|
102
114
|
end
|
@@ -1,12 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative './concerns/caching'
|
4
|
+
|
3
5
|
module WCC::Blogs
|
4
6
|
class PostSummary
|
5
7
|
extend WCC::Blogs::Utils
|
8
|
+
include WCC::Blogs::Concerns::Caching
|
6
9
|
|
7
|
-
def self.find_all
|
8
|
-
|
9
|
-
new(summary, client:
|
10
|
+
def self.find_all(client: WCC::Blogs.client)
|
11
|
+
client.blog_list.items.map do |summary|
|
12
|
+
new(summary, client: client)
|
10
13
|
end
|
11
14
|
end
|
12
15
|
|
@@ -18,7 +21,7 @@ module WCC::Blogs
|
|
18
21
|
end
|
19
22
|
|
20
23
|
def full_post
|
21
|
-
Post.new(@client.get(_links.self).raw)
|
24
|
+
Post.new(@client.get(_links.self).raw, client: @client)
|
22
25
|
end
|
23
26
|
|
24
27
|
define_camelcase_alias(
|
@@ -26,7 +29,9 @@ module WCC::Blogs
|
|
26
29
|
'title',
|
27
30
|
'subtitle',
|
28
31
|
'slug',
|
29
|
-
'digest'
|
32
|
+
'digest',
|
33
|
+
'read_time',
|
34
|
+
'word_count'
|
30
35
|
) do |camelcase|
|
31
36
|
raw[camelcase]
|
32
37
|
end
|
@@ -42,6 +47,7 @@ module WCC::Blogs
|
|
42
47
|
|
43
48
|
define_camelcase_alias(
|
44
49
|
'author',
|
50
|
+
'hero_image',
|
45
51
|
'thumbnail_image',
|
46
52
|
'flags'
|
47
53
|
) do |camelcase|
|
@@ -62,6 +68,10 @@ module WCC::Blogs
|
|
62
68
|
values.map { |val| OpenStruct.new(val) if val }
|
63
69
|
end
|
64
70
|
|
65
|
-
|
71
|
+
private
|
72
|
+
|
73
|
+
def cache_key_without_version
|
74
|
+
"WCC::Blogs::PostSummary/#{slug}"
|
75
|
+
end
|
66
76
|
end
|
67
77
|
end
|
data/lib/wcc/blogs/property.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative './concerns/caching'
|
4
|
+
|
3
5
|
module WCC::Blogs
|
4
6
|
class Property
|
5
7
|
extend WCC::Blogs::Utils
|
8
|
+
include WCC::Blogs::Concerns::Caching
|
6
9
|
require 'time'
|
7
10
|
|
8
|
-
def self.find(property = nil)
|
9
|
-
new(
|
11
|
+
def self.find(property = nil, client: WCC::Blogs.client)
|
12
|
+
new(client.property_show(property).raw, client: client)
|
10
13
|
end
|
11
14
|
|
12
15
|
attr_reader :raw
|
@@ -22,7 +25,8 @@ module WCC::Blogs
|
|
22
25
|
|
23
26
|
define_camelcase_alias(
|
24
27
|
'key',
|
25
|
-
'digest'
|
28
|
+
'digest',
|
29
|
+
'updated_at'
|
26
30
|
) do |camelcase|
|
27
31
|
raw[camelcase]
|
28
32
|
end
|
@@ -40,6 +44,10 @@ module WCC::Blogs
|
|
40
44
|
targets.map { |val| OpenStruct.new(val) if val }
|
41
45
|
end
|
42
46
|
|
43
|
-
|
47
|
+
private
|
48
|
+
|
49
|
+
def cache_key_without_version
|
50
|
+
"WCC::Blogs::Property/#{key}"
|
51
|
+
end
|
44
52
|
end
|
45
53
|
end
|
data/lib/wcc/blogs/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wcc-blogs-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Watermark Dev
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -197,7 +197,9 @@ files:
|
|
197
197
|
- lib/wcc/blogs/client/response.rb
|
198
198
|
- lib/wcc/blogs/collection.rb
|
199
199
|
- lib/wcc/blogs/collection_summary.rb
|
200
|
+
- lib/wcc/blogs/concerns/caching.rb
|
200
201
|
- lib/wcc/blogs/errors.rb
|
202
|
+
- lib/wcc/blogs/linked_blog_post_summary.rb
|
201
203
|
- lib/wcc/blogs/metadata.rb
|
202
204
|
- lib/wcc/blogs/post.rb
|
203
205
|
- lib/wcc/blogs/post_summary.rb
|
@@ -209,7 +211,7 @@ homepage: https://github.com/watermarkchurch/papyrus/wcc-blogs-client
|
|
209
211
|
licenses:
|
210
212
|
- MIT
|
211
213
|
metadata: {}
|
212
|
-
post_install_message:
|
214
|
+
post_install_message:
|
213
215
|
rdoc_options: []
|
214
216
|
require_paths:
|
215
217
|
- lib
|
@@ -224,9 +226,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
224
226
|
- !ruby/object:Gem::Version
|
225
227
|
version: '0'
|
226
228
|
requirements: []
|
227
|
-
rubyforge_project:
|
228
|
-
rubygems_version: 2.5.2
|
229
|
-
signing_key:
|
229
|
+
rubyforge_project:
|
230
|
+
rubygems_version: 2.5.2.3
|
231
|
+
signing_key:
|
230
232
|
specification_version: 4
|
231
233
|
summary: ''
|
232
234
|
test_files: []
|