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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 55db25dca22951c220756f7a472ab3f7d65c0da3
4
- data.tar.gz: d47dc5b1f2a2092dfffdfe1ec59e64eff21667fc
3
+ metadata.gz: 877882f8f0a84886bda0d722f5c2193c4590556c
4
+ data.tar.gz: eaeb84c5dee20a2cc375a020d3d664141e433d19
5
5
  SHA512:
6
- metadata.gz: 321b737f61714148d6cb645d48dacf306eddd3aac66688c88069083d9fc70c2442b95985d7f38a903a1e46a05dfe18891cb21376d4585085e467620d8e9c4a09
7
- data.tar.gz: 1010a79f4de4080c609a5e49a2152a9e66f23e6a320485d481b6962cfd9c937f8f207911d9f6f517f4429713a76030519e76ecf6b2f898f5a96d26479fcb2481
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'
@@ -20,7 +20,7 @@ module WCC::Blogs
20
20
  alias_method :to_json, :raw
21
21
 
22
22
  def next_page_url
23
- raw.dig('_links', 'previous')
23
+ raw.dig('_links', 'next')
24
24
  end
25
25
 
26
26
  def next_page?
@@ -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(WCC::Blogs.client.collection_show(key).raw, client: WCC::Blogs.client)
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
- alias cache_key digest
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
- PostReference.new(summary, client: @client)
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
@@ -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(WCC::Blogs.client.blog_show(slug).raw, client: WCC::Blogs.client)
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
- alias cache_key digest
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
- WCC::Blogs.client.blog_list.items.map do |summary|
9
- new(summary, client: WCC::Blogs.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
- alias cache_key digest
71
+ private
72
+
73
+ def cache_key_without_version
74
+ "WCC::Blogs::PostSummary/#{slug}"
75
+ end
66
76
  end
67
77
  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 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(WCC::Blogs.client.property_show(property).raw, client: WCC::Blogs.client)
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
- alias cache_key digest
47
+ private
48
+
49
+ def cache_key_without_version
50
+ "WCC::Blogs::Property/#{key}"
51
+ end
44
52
  end
45
53
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module WCC
4
4
  module Blogs
5
- VERSION = '0.5.2'
5
+ VERSION = '0.7.3'
6
6
  end
7
7
  end
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.5.2
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: 2020-05-20 00:00:00.000000000 Z
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: []