wcc-media-client 0.1.0 → 0.1.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: 1c9d5ecd3de06add389d54a003a565a53f7612f0
4
- data.tar.gz: 46b835cc5764ec42b9a6015b7d76bff810dbd9f9
3
+ metadata.gz: 1ab1f8952164ed4d304c0655216b90ec90a969ba
4
+ data.tar.gz: 064456e4cb0746adf4b3f824b9d6ef14cad2dbeb
5
5
  SHA512:
6
- metadata.gz: 274b82199adba84eae9bb1159f588c31abc97d2afdca7f2975414aaf4b9752cf6d7f0308a14f4aaee459fdae94ed9b61bd23c8299ae580ebfe79566e0ce73a0d
7
- data.tar.gz: 8f8afe9e13f987edea256c6cb5fcb11d18051c4b62de7104b0172186e1213a74b9c159660ed56080d884491fe0e742fc909c24799c559c59205cb153ed86d5e9
6
+ metadata.gz: 4e83253123e385d7c2d45f7dbb714aacebea52aa8466061349489b0cab6b1dd0b8faf3425575f019ba79bb9928d799b8c0eb3d0b88ae0e77fb36582a62850656
7
+ data.tar.gz: bef64997aec54a3d860686e0f322b1cfb0b5705cf4ec783835d790d12879c006d9afd76bcb591b3dfd56c7d7e3da99d78bbbbdef7d9094c0eaec456e104c8d91
@@ -0,0 +1,18 @@
1
+ module WCC
2
+ module Media
3
+ module Cacheable
4
+ def cache_key
5
+ return @cache_key if @cache_key
6
+
7
+ key =
8
+ (headers&.fetch('Etag', nil) if respond_to?(:headers))
9
+ key ||= WCC::Media::Cacheable.hash_cache_key(raw)
10
+ @cache_key = "#{self.class.name}/#{key}"
11
+ end
12
+
13
+ def self.hash_cache_key(hash)
14
+ Digest::SHA1.hexdigest(Marshal.dump(hash))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -3,7 +3,7 @@ require_relative '../../../rest_client'
3
3
  module WCC
4
4
  module Media
5
5
  class Client < RestClient
6
- VERSION = '0.1.0'.freeze
6
+ VERSION = '0.1.1'.freeze
7
7
  end
8
8
  end
9
9
  end
@@ -46,7 +46,7 @@ module WCC
46
46
  def message(id)
47
47
  resp = get("messages/#{id}")
48
48
  resp.assert_ok!
49
- WCC::Media::Message.new(resp.body['message'])
49
+ WCC::Media::Message.new(resp.body['message'], resp.headers.freeze)
50
50
  end
51
51
 
52
52
  SERIES_FILTERS = %w[
@@ -72,7 +72,7 @@ module WCC
72
72
  def series(id)
73
73
  resp = get("series/#{id}")
74
74
  resp.assert_ok!
75
- WCC::Media::Series.new(resp.body['series'])
75
+ WCC::Media::Series.new(resp.body['series'], resp.headers.freeze)
76
76
  end
77
77
 
78
78
  SPEAKERS_FILTERS = %w[
@@ -92,7 +92,7 @@ module WCC
92
92
  def speaker(id)
93
93
  resp = get("speakers/#{id}")
94
94
  resp.assert_ok!
95
- WCC::Media::Speaker.new(resp.body['speaker'])
95
+ WCC::Media::Speaker.new(resp.body['speaker'], resp.headers.freeze)
96
96
  end
97
97
 
98
98
  TAGS_FILTERS = %w[
@@ -110,7 +110,7 @@ module WCC
110
110
  def tag(id)
111
111
  resp = get("tags/#{id}")
112
112
  resp.assert_ok!
113
- WCC::Media::Tag.new(resp.body['tag'])
113
+ WCC::Media::Tag.new(resp.body['tag'], resp.headers.freeze)
114
114
  end
115
115
 
116
116
  private
@@ -1,60 +1,68 @@
1
+ require_relative 'cacheable'
2
+
1
3
  module WCC
2
4
  module Media
3
- Message =
4
- Struct.new(:raw) do
5
- def id
6
- raw['id']&.to_s
7
- end
5
+ class Message
6
+ include WCC::Media::Cacheable
8
7
 
9
- def legacy_id
10
- raw['legacy_id']&.to_s
11
- end
8
+ attr_reader :raw, :headers
12
9
 
13
- %w[
14
- date
15
- title
16
- description
17
- series_position
18
- ].each do |att|
19
- define_method att do
20
- raw[att]
21
- end
22
- end
10
+ def initialize(raw, headers = {})
11
+ @raw = raw
12
+ @headers = headers
13
+ end
23
14
 
24
- def speakers
25
- (raw['speakers'] || []).map { |val| Speaker.new(val) }
26
- end
15
+ def id
16
+ raw['id']&.to_s
17
+ end
27
18
 
28
- def tags
29
- (raw['tags'] || []).map { |val| Tag.new(val) }
30
- end
19
+ def legacy_id
20
+ raw['legacy_id']&.to_s
21
+ end
31
22
 
32
- %w[
33
- scripture_references
34
- downloads
35
- ].each do |att|
36
- define_method att do
37
- (raw[att] || []).map { |val| OpenStruct.new(val) }
38
- end
23
+ %w[
24
+ date
25
+ title
26
+ description
27
+ series_position
28
+ ].each do |att|
29
+ define_method att do
30
+ raw[att]
39
31
  end
32
+ end
40
33
 
41
- def series
42
- Series.new(raw['series']) if raw['series']
43
- end
34
+ def speakers
35
+ (raw['speakers'] || []).map { |val| Speaker.new(val) }
36
+ end
37
+
38
+ def tags
39
+ (raw['tags'] || []).map { |val| Tag.new(val) }
40
+ end
44
41
 
45
- %w[
46
- embeds
47
- assets
48
- images
49
- external_urls
50
- transcript
51
- ].each do |att|
52
- define_method att do
53
- OpenStruct.new(raw[att]) if raw[att]
54
- end
42
+ %w[
43
+ scripture_references
44
+ downloads
45
+ ].each do |att|
46
+ define_method att do
47
+ (raw[att] || []).map { |val| OpenStruct.new(val) }
55
48
  end
49
+ end
50
+
51
+ def series
52
+ Series.new(raw['series']) if raw['series']
53
+ end
56
54
 
57
- undef raw=
55
+ %w[
56
+ embeds
57
+ assets
58
+ images
59
+ external_urls
60
+ transcript
61
+ ].each do |att|
62
+ define_method att do
63
+ OpenStruct.new(raw[att]) if raw[att]
64
+ end
58
65
  end
66
+ end
59
67
  end
60
68
  end
@@ -1,36 +1,42 @@
1
1
  module WCC
2
2
  module Media
3
- Series =
4
- Struct.new(:raw) do
5
- def id
6
- raw['id']&.to_s
7
- end
3
+ class Series
4
+ include WCC::Media::Cacheable
8
5
 
9
- def legacy_id
10
- raw['legacy_id']&.to_s
11
- end
6
+ attr_reader :raw, :headers
12
7
 
13
- %w[
14
- title
15
- subtitle
16
- summary
17
- date_range
18
- messages_count
19
- ].each do |att|
20
- define_method att do
21
- raw[att]
22
- end
23
- end
8
+ def initialize(raw, headers = {})
9
+ @raw = raw
10
+ @headers = headers
11
+ end
12
+
13
+ def id
14
+ raw['id']&.to_s
15
+ end
16
+
17
+ def legacy_id
18
+ raw['legacy_id']&.to_s
19
+ end
24
20
 
25
- %w[
26
- images
27
- ].each do |att|
28
- define_method att do
29
- OpenStruct.new(raw[att]) if raw[att]
30
- end
21
+ %w[
22
+ title
23
+ subtitle
24
+ summary
25
+ date_range
26
+ messages_count
27
+ ].each do |att|
28
+ define_method att do
29
+ raw[att]
31
30
  end
31
+ end
32
32
 
33
- undef raw=
33
+ %w[
34
+ images
35
+ ].each do |att|
36
+ define_method att do
37
+ OpenStruct.new(raw[att]) if raw[att]
38
+ end
34
39
  end
40
+ end
35
41
  end
36
42
  end
@@ -1,25 +1,31 @@
1
1
  module WCC
2
2
  module Media
3
- Speaker =
4
- Struct.new(:raw) do
5
- def id
6
- raw['id']&.to_s
7
- end
3
+ class Speaker
4
+ include WCC::Media::Cacheable
8
5
 
9
- def legacy_id
10
- raw['legacy_id']&.to_s
11
- end
6
+ attr_reader :raw, :headers
12
7
 
13
- %w[
14
- featured
15
- name
16
- ].each do |att|
17
- define_method att do
18
- raw[att]
19
- end
20
- end
8
+ def initialize(raw, headers = {})
9
+ @raw = raw
10
+ @headers = headers
11
+ end
21
12
 
22
- undef raw=
13
+ def id
14
+ raw['id']&.to_s
15
+ end
16
+
17
+ def legacy_id
18
+ raw['legacy_id']&.to_s
19
+ end
20
+
21
+ %w[
22
+ featured
23
+ name
24
+ ].each do |att|
25
+ define_method att do
26
+ raw[att]
27
+ end
23
28
  end
29
+ end
24
30
  end
25
31
  end
data/lib/wcc/media/tag.rb CHANGED
@@ -1,24 +1,30 @@
1
1
  module WCC
2
2
  module Media
3
- Tag =
4
- Struct.new(:raw) do
5
- def id
6
- raw['id']&.to_s
7
- end
3
+ class Tag
4
+ include WCC::Media::Cacheable
8
5
 
9
- def legacy_id
10
- raw['legacy_id']&.to_s
11
- end
6
+ attr_reader :raw, :headers
12
7
 
13
- %w[
14
- name
15
- ].each do |att|
16
- define_method att do
17
- raw[att]
18
- end
19
- end
8
+ def initialize(raw, headers = {})
9
+ @raw = raw
10
+ @headers = headers
11
+ end
20
12
 
21
- undef raw=
13
+ def id
14
+ raw['id']&.to_s
15
+ end
16
+
17
+ def legacy_id
18
+ raw['legacy_id']&.to_s
19
+ end
20
+
21
+ %w[
22
+ name
23
+ ].each do |att|
24
+ define_method att do
25
+ raw[att]
26
+ end
22
27
  end
28
+ end
23
29
  end
24
30
  end
@@ -27,9 +27,9 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency 'byebug'
28
28
  spec.add_development_dependency 'http', '> 1.0', '< 3.0'
29
29
  spec.add_development_dependency 'httplog', '~> 1.0'
30
+ spec.add_development_dependency 'rake', '~> 12.3'
30
31
  spec.add_development_dependency 'rspec', '~> 3.0'
31
32
  spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3.0'
32
33
  spec.add_development_dependency 'typhoeus', '~> 1.3'
33
34
  spec.add_development_dependency 'webmock', '~> 3.0'
34
- spec.add_development_dependency 'rake', '~> 12.3'
35
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wcc-media-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.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: 2018-11-05 00:00:00.000000000 Z
11
+ date: 2018-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -58,6 +58,20 @@ dependencies:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '1.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rake
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '12.3'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '12.3'
61
75
  - !ruby/object:Gem::Dependency
62
76
  name: rspec
63
77
  requirement: !ruby/object:Gem::Requirement
@@ -114,20 +128,6 @@ dependencies:
114
128
  - - "~>"
115
129
  - !ruby/object:Gem::Version
116
130
  version: '3.0'
117
- - !ruby/object:Gem::Dependency
118
- name: rake
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '12.3'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '12.3'
131
131
  description: REST Client for accessing the WCC Media library
132
132
  email:
133
133
  - dev@watermark.org
@@ -144,6 +144,7 @@ files:
144
144
  - lib/rest_client/http_adapter.rb
145
145
  - lib/rest_client/response.rb
146
146
  - lib/rest_client/typhoeus_adapter.rb
147
+ - lib/wcc/media/cacheable.rb
147
148
  - lib/wcc/media/client.rb
148
149
  - lib/wcc/media/client/response.rb
149
150
  - lib/wcc/media/client/version.rb