wcc-blogs-client 0.5.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
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: []