wcc-blogs-client 0.4.0 → 0.4.1

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: 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: ''