wcc-blogs-client 0.4.0 → 0.4.1

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: d0ee40f5dbfa5ed338bfcfc4ef0a28cf1fac1554
4
- data.tar.gz: cd4b83add94f175077a9a31062caf2a7a9a0dd64
3
+ metadata.gz: 6ea9c98dc8b5e8886d97ab7adf328cf694485a77
4
+ data.tar.gz: 0d5fbf107cf251a77b4040985911343a6d438d03
5
5
  SHA512:
6
- metadata.gz: 1b3cb2d385fe25b0c312e2e742d2245f7f4e6eb1a58bc7a4b140b210bb612cab8fcb396c16afbbedfb36555f9c6ed5e73387854b5c477b8b7af3c28f99d2b9b1
7
- data.tar.gz: 2efbf1c351083e6460b1e09db3a383f8e6c6c48ac9ad25720e6a3982823545e11d5080ab77d3772da86e2150e91b29ef3ba91e7dcb2ec302d0d1339b0edcd3d7
6
+ metadata.gz: 7fe9014018bde8b41d86788370ffce146293d3c1957f801bef609873829179f9e8f06e73362b230c48f4df4218a453eb1889f1d4ddbdec558b57e9c311569b1f
7
+ data.tar.gz: 5835d4e614e6cd2b7bd76cba97d252c70d7b4c4b37722fcda0b46260e155fe1e01e8cb8c9eba7aae0e46c29b8e7935efe1a04ae373aea87e29f9d97391fe6f2b
@@ -6,11 +6,13 @@ require_relative 'client/response'
6
6
 
7
7
  module WCC::Blogs
8
8
  class Client
9
- attr_reader :base_url, :publishing_target
9
+ attr_reader :base_url, :publishing_target, :base_path
10
10
 
11
11
  def initialize(publishing_target:, **options)
12
12
  @publishing_target = publishing_target
13
- @base_url = options[:base_url] || 'https://di0v2frwtdqnv.cloudfront.net'
13
+ base_url = URI.parse(options[:base_url] || 'https://di0v2frwtdqnv.cloudfront.net')
14
+ @base_path = base_url.path == '' ? '/api/v1' : base_url.path
15
+ @base_url = base_url.to_s
14
16
  @connection = options[:connection] || default_connection
15
17
  @query_defaults = options[:query_defaults] || {}
16
18
  end
@@ -26,14 +28,26 @@ module WCC::Blogs
26
28
  get_http(url, query))
27
29
  end
28
30
 
29
- def blog_post(slug, digest: nil) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
30
- path = '/blog/' + slug.sub(%r{^/}, '')
31
- path += '/' + digest if digest
32
- path += '.json'
31
+ def property_show(property = nil)
32
+ property ||= publishing_target
33
+ path = base_path + '/property/' + property
34
+ get(path).assert_ok!
35
+ end
36
+
37
+ def blog_list(property: nil, year: nil)
38
+ property ||= publishing_target
39
+ path = base_path + '/property/' + property + '/blog'
40
+ path += '/' + year if year
41
+ get(path).assert_ok!
42
+ end
43
+
44
+ def blog_show(slug, digest: nil) # rubocop:disable Metrics/AbcSize
45
+ path = base_path + '/blog/' + slug.sub(%r{^/}, '')
46
+ path += '/' + digest + '.json' if digest
33
47
 
34
48
  get(path).tap do |resp|
35
49
  resp.assert_ok!
36
- next if resp.raw['publishingTargets'].any? { |t| t['key'] == publishing_target }
50
+ next if resp.raw['publishedProperties'].any? { |t| t['key'] == publishing_target }
37
51
 
38
52
  raise WCC::Blogs::NotFoundException,
39
53
  "Blog post '#{slug}' is not published to #{publishing_target}"
@@ -42,11 +56,6 @@ module WCC::Blogs
42
56
  raise WCC::Blogs::NotFoundException, e.message
43
57
  end
44
58
 
45
- def list
46
- path = '/targets/' + publishing_target + '.json'
47
- get(path).assert_ok!
48
- end
49
-
50
59
  private
51
60
 
52
61
  def get_http(url, query, headers = {})
@@ -12,13 +12,15 @@ module WCC::Blogs
12
12
 
13
13
  define_camelcase_alias(
14
14
  'id',
15
- 'canonical_link',
15
+ 'canonical_url',
16
16
  'meta_description',
17
17
  'meta_flag'
18
18
  ) do |camelcase|
19
19
  raw[camelcase]
20
20
  end
21
21
 
22
+ alias canonical_link canonical_url
23
+
22
24
  define_camelcase_alias('meta_keywords') do |camelcase|
23
25
  next unless keywords = raw[camelcase]
24
26
 
@@ -6,7 +6,7 @@ module WCC::Blogs
6
6
  require 'time'
7
7
 
8
8
  def self.find(slug)
9
- new(WCC::Blogs.client.blog_post(slug).raw, client: WCC::Blogs.client)
9
+ new(WCC::Blogs.client.blog_show(slug).raw, client: WCC::Blogs.client)
10
10
  end
11
11
 
12
12
  def self.find_all
@@ -27,7 +27,7 @@ module WCC::Blogs
27
27
  end
28
28
 
29
29
  def html
30
- @html ||= @client.get(URI.join(host, fragment_path).to_s)
30
+ @html ||= @client.get(_links.fragment)
31
31
  .body
32
32
  .force_encoding('UTF-8')
33
33
  end
@@ -53,6 +53,7 @@ module WCC::Blogs
53
53
  'id',
54
54
  'title',
55
55
  'subtitle',
56
+ 'summary',
56
57
  'slug',
57
58
  'host',
58
59
  'path',
@@ -79,7 +80,15 @@ module WCC::Blogs
79
80
  OpenStruct.new(raw[camelcase]) if raw[camelcase]
80
81
  end
81
82
 
82
- define_camelcase_alias('publishing_targets') do |camelcase|
83
+ def _links
84
+ OpenStruct.new(raw['_links'] || {})
85
+ end
86
+
87
+ define_camelcase_alias(
88
+ 'published_properties',
89
+ 'categories',
90
+ 'tags'
91
+ ) do |camelcase|
83
92
  targets = raw[camelcase] || []
84
93
 
85
94
  targets.map { |val| OpenStruct.new(val) if val }
@@ -3,7 +3,7 @@ module WCC::Blogs
3
3
  extend WCC::Blogs::Utils
4
4
 
5
5
  def self.find_all
6
- WCC::Blogs.client.list.items.map do |summary|
6
+ WCC::Blogs.client.blog_list.items.map do |summary|
7
7
  new(summary, client: WCC::Blogs.client)
8
8
  end
9
9
  end
@@ -16,7 +16,7 @@ module WCC::Blogs
16
16
  end
17
17
 
18
18
  def full_post
19
- Post.new(@client.blog_post(slug, digest: digest).raw)
19
+ Post.new(@client.get(_links.self).raw)
20
20
  end
21
21
 
22
22
  define_camelcase_alias(
@@ -24,9 +24,8 @@ module WCC::Blogs
24
24
  'title',
25
25
  'subtitle',
26
26
  'slug',
27
- 'path',
28
- 'digest',
29
- 'fragment_path'
27
+ 'author',
28
+ 'digest'
30
29
  ) do |camelcase|
31
30
  raw[camelcase]
32
31
  end
@@ -46,10 +45,18 @@ module WCC::Blogs
46
45
  OpenStruct.new(raw[camelcase]) if raw[camelcase]
47
46
  end
48
47
 
49
- define_camelcase_alias('publishing_targets') do |camelcase|
50
- targets = raw[camelcase] || []
48
+ def _links
49
+ OpenStruct.new(raw['_links'] || {})
50
+ end
51
+
52
+ define_camelcase_alias(
53
+ 'published_properties',
54
+ 'categories',
55
+ 'tags'
56
+ ) do |camelcase|
57
+ values = raw[camelcase] || []
51
58
 
52
- targets.map { |val| OpenStruct.new(val) if val }
59
+ values.map { |val| OpenStruct.new(val) if val }
53
60
  end
54
61
 
55
62
  alias cache_key digest
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::Blogs
4
+ class Property
5
+ extend WCC::Blogs::Utils
6
+ require 'time'
7
+
8
+ def self.find(property = nil)
9
+ new(WCC::Blogs.client.property_show(property).raw, client: WCC::Blogs.client)
10
+ end
11
+
12
+ attr_reader :raw
13
+
14
+ def initialize(raw, client: WCC::Blogs.client)
15
+ @raw = raw
16
+ @client = client
17
+ end
18
+
19
+ def to_param
20
+ key
21
+ end
22
+
23
+ define_camelcase_alias(
24
+ 'key',
25
+ 'digest'
26
+ ) do |camelcase|
27
+ raw[camelcase]
28
+ end
29
+
30
+ def _links
31
+ OpenStruct.new(raw['_links'] || {})
32
+ end
33
+
34
+ define_camelcase_alias(
35
+ 'accepted_tags',
36
+ 'categories'
37
+ ) do |camelcase|
38
+ targets = raw[camelcase] || []
39
+
40
+ targets.map { |val| OpenStruct.new(val) if val }
41
+ end
42
+
43
+ alias cache_key digest
44
+ end
45
+ end
@@ -2,6 +2,8 @@
2
2
 
3
3
  module WCC::Blogs
4
4
  module Utils
5
+ module_function
6
+
5
7
  def camelcase(term)
6
8
  term
7
9
  .to_s
@@ -2,6 +2,6 @@
2
2
 
3
3
  module WCC
4
4
  module Blogs
5
- VERSION = '0.4.0'.freeze
5
+ VERSION = '0.4.1'.freeze
6
6
  end
7
7
  end
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/property'
13
14
 
14
15
  module WCC::Blogs
15
16
  class << self
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.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Watermark Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-12 00:00:00.000000000 Z
11
+ date: 2019-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -199,6 +199,7 @@ files:
199
199
  - lib/wcc/blogs/metadata.rb
200
200
  - lib/wcc/blogs/post.rb
201
201
  - lib/wcc/blogs/post_summary.rb
202
+ - lib/wcc/blogs/property.rb
202
203
  - lib/wcc/blogs/utils.rb
203
204
  - lib/wcc/blogs/version.rb
204
205
  - wcc-blogs-client.gemspec
@@ -222,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
223
  version: '0'
223
224
  requirements: []
224
225
  rubyforge_project:
225
- rubygems_version: 2.6.11
226
+ rubygems_version: 2.5.2
226
227
  signing_key:
227
228
  specification_version: 4
228
229
  summary: ''