wcc-media-client 0.4.13 → 0.5.0

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
- SHA1:
3
- metadata.gz: c5267da3904b4c03dcd2806653a5416dc8c2be9b
4
- data.tar.gz: a8ff4629d184ecdcfe7a946df52ab1b4ced3e92b
2
+ SHA256:
3
+ metadata.gz: 46a2dbaa7272ac0536ff246070064408e8497f48d6f6059a2f9f13e5d4d8f844
4
+ data.tar.gz: 3fb5f421fe0a334ea65f78a4264bfb778f02291ced6b593fb3b4cd14511fd058
5
5
  SHA512:
6
- metadata.gz: c5bbf278905e91d9f8937a83ebd9af3a18de8ae7a8b7078675b505d1e76403feddb648316db8f8f8f50cd593f10aec7847bd5ef4988f28b8a1e13b971f184534
7
- data.tar.gz: 1b857617295dfb1e684ae58f8a7fcd4f7f6616ad785c0b3b810fa7769e7db5e64e1eb24e1bff336fb2b906e004e0110fff437a2314b6f9f5a19b23b98c27a68e
6
+ metadata.gz: a92537cee37ad01a6135fc7dcb706dd29d384d54b91484e1d36d62ad875abfd1fef62b0fddc0063c1a2adb885be8f4dd66330dd87a82463d99e0c9e5ed4418db
7
+ data.tar.gz: 50ad7694bdf5feb85d2915aa553f9358aaf5c408d7a2369d7884bf040197a954529b2d10f75439b867d0df2ff69325ed5d0007dd92627ebad8e855e1552aad8d
data/.rubocop.yml CHANGED
@@ -1,4 +1,21 @@
1
- inherit_from: ../.rubocop.yml
1
+ require:
2
+ - rubocop-rspec
3
+
4
+ AllCops:
5
+ TargetRubyVersion: 2.3
6
+ # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
7
+ # to ignore them, so only the ones explicitly set in this file are enabled.
8
+ DisabledByDefault: false
9
+ NewCops: enable
10
+ Exclude:
11
+ - '**/templates/**/*'
12
+ - '**/vendor/**/*'
13
+ - 'spec/dummy/**/*'
14
+ Include:
15
+ - 'lib/**/*'
16
+ - 'Gemfile'
17
+ - 'wcc-scripture.gemspec'
18
+ - 'spec/**/*_spec.rb'
2
19
 
3
20
  Metrics/BlockLength:
4
21
  Exclude:
@@ -7,9 +24,24 @@ Metrics/BlockLength:
7
24
  Style/ClassAndModuleChildren:
8
25
  Enabled: false
9
26
 
27
+ Style/Documentation:
28
+ Enabled: false
29
+
10
30
  Style/MultilineBlockChain:
11
31
  Exclude:
12
32
  - 'spec/**/*'
13
33
 
14
- Rails/TimeZone:
34
+ Style/OpenStructUse:
35
+ Enabled: false
36
+
37
+ RSpec/DescribedClass:
38
+ Enabled: false
39
+
40
+ RSpec/ExampleLength:
41
+ Enabled: false
42
+
43
+ RSpec/MultipleExpectations:
44
+ Enabled: false
45
+
46
+ RSpec/NamedSubject:
15
47
  Enabled: false
data/Gemfile CHANGED
@@ -4,3 +4,28 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in wcc-media-client.gemspec
6
6
  gemspec
7
+
8
+ group :development, :test do
9
+ gem 'guard', '~> 2.15'
10
+ gem 'guard-rspec', '~> 4.7'
11
+ gem 'guard-rubocop', '~> 1.3'
12
+ gem 'http', '> 1.0', '< 3.0'
13
+ gem 'httplog', '~> 1.0'
14
+ gem 'nio4r', '2.5.2'
15
+ gem 'parallel', '~> 1.19.0'
16
+ gem 'rails', '~> 5.0'
17
+ gem 'rake', '~> 12.3'
18
+ gem 'responders', '< 3.0'
19
+ gem 'rspec', '~> 3.0'
20
+ gem 'rspec_junit_formatter', '~> 0.3.0'
21
+ gem 'rspec-rails', '~> 3.7'
22
+ gem 'rubocop', '~> 1.31.0'
23
+ gem 'rubocop-rspec', '~> 2.12'
24
+ gem 'sidekiq', '< 6.0'
25
+ gem 'simplecov', '~> 0.21.2', require: false
26
+ gem 'simplecov-cobertura', '~> 1.4'
27
+ gem 'sprockets', '< 4.0'
28
+ gem 'sqlite3', '~> 1.3.6'
29
+ gem 'typhoeus', '~> 1.3'
30
+ gem 'webmock', '~> 3.0'
31
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WCC::Media::ActiveRecordShim
2
4
  def self.included(base)
3
5
  base.public_send :include, InstanceMethods
@@ -37,7 +39,7 @@ module WCC::Media::ActiveRecordShim
37
39
  end
38
40
 
39
41
  def find_by(**filters)
40
- raise ArgumentError, "You must provide at least one filter" if filters.empty?
42
+ raise ArgumentError, 'You must provide at least one filter' if filters.empty?
41
43
 
42
44
  find_all(filters).first
43
45
  end
@@ -84,8 +86,12 @@ module WCC::Media::ActiveRecordShim
84
86
  end
85
87
  end
86
88
 
87
- [:filters, :endpoint, :key].each do |att|
88
- class_eval("def #{att}(value); @#{att} = value; end", __FILE__, __LINE__)
89
+ %i[filters endpoint key].each do |att|
90
+ class_eval <<-CODE, __FILE__, __LINE__ + 1
91
+ def #{att}(value); # def filters(value)
92
+ @#{att} = value; # @filters = value
93
+ end # end
94
+ CODE
89
95
  end
90
96
  end
91
- end
97
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'cacheable'
2
4
  require_relative 'active_record_shim'
3
5
 
@@ -27,4 +29,4 @@ module WCC
27
29
  end
28
30
  end
29
31
  end
30
- end
32
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WCC
2
4
  module Media
3
5
  module Cacheable
@@ -17,11 +19,11 @@ module WCC
17
19
  (headers&.fetch('Last-Modified', nil) if respond_to?(:headers))
18
20
  @last_modified = Time.parse(last_modified) if last_modified && /\S/.match(last_modified)
19
21
  end
20
- alias_method :updated_at, :last_modified
22
+ alias updated_at last_modified
21
23
 
22
24
  def self.hash_cache_key(hash)
23
25
  Digest::SHA1.hexdigest(Marshal.dump(hash))
24
26
  end
25
27
  end
26
28
  end
27
- end
29
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WCC
2
4
  module Media
3
5
  class Client < ::WCC::API::RestClient
@@ -20,7 +22,7 @@ module WCC
20
22
 
21
23
  def next_page_query
22
24
  {
23
- offset: page_items.length + skip,
25
+ offset: page_items.length + skip
24
26
  }
25
27
  end
26
28
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'wcc/api/rest_client'
2
4
  require_relative 'message'
3
5
  require_relative 'series'
@@ -12,6 +14,7 @@ module WCC
12
14
  class Client < ::WCC::API::RestClient
13
15
  class << self
14
16
  attr_writer :default
17
+
15
18
  # The default client. Set this in an initializer to change the client used
16
19
  # by all the WCC::Media models
17
20
  def default
@@ -39,9 +42,7 @@ module WCC
39
42
  'playlists' => WCC::Media::Playlist,
40
43
  'streams' => WCC::Media::LiveStream
41
44
  }.freeze
42
- attr_reader(*RESOURCES.keys)
43
-
44
- attr_reader :options
45
+ attr_reader(*RESOURCES.keys, :options)
45
46
 
46
47
  def initialize(**options)
47
48
  options = {
@@ -58,12 +59,12 @@ module WCC
58
59
 
59
60
  Resource =
60
61
  Struct.new(:client, :model, :options) do
61
- def find(id, **params)
62
+ def find(id, **params) # rubocop:disable Metrics/AbcSize
62
63
  raise ArgumentError, "id param must be present, got: #{id}" unless id && /\S/.match(id.to_s)
63
64
 
64
65
  resp = client.get(
65
66
  "#{model.endpoint}/#{id}",
66
- default_params('target').merge(params),
67
+ default_params('target').merge(params)
67
68
  )
68
69
  resp.assert_ok!
69
70
  model.new(resp.body[model.key], resp.headers.freeze)
@@ -71,7 +72,7 @@ module WCC
71
72
 
72
73
  def list(**filters)
73
74
  query = extract_params(filters)
74
- query = query.merge!(apply_filters(filters, model.filters))
75
+ query.merge!(apply_filters(filters, model.filters))
75
76
  resp = client.get(model.endpoint, query)
76
77
  resp.assert_ok!
77
78
  resp.items.map { |s| model.new(s) }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
2
4
  require_relative 'tag_group'
3
5
 
@@ -14,6 +16,7 @@ class WCC::Media::Message < WCC::Media::Base
14
16
  series_id
15
17
  title_like
16
18
  legacy_id
19
+ hide_from_internal_search
17
20
  ].freeze
18
21
  end
19
22
 
@@ -28,12 +31,17 @@ class WCC::Media::Message < WCC::Media::Base
28
31
  campus_names
29
32
  topic
30
33
  topics
34
+ hide_from_internal_search
31
35
  ].each do |att|
32
36
  define_method att do
33
37
  raw[att]
34
38
  end
35
39
  end
36
40
 
41
+ def hide_from_internal_search
42
+ raw['flags']['hide_from_internal_search'] || false
43
+ end
44
+
37
45
  def speakers
38
46
  (raw['speakers'] || []).map { |val| WCC::Media::Speaker.new(val) }
39
47
  end
@@ -62,6 +70,7 @@ class WCC::Media::Message < WCC::Media::Base
62
70
  %w[
63
71
  meta
64
72
  embeds
73
+ flags
65
74
  assets
66
75
  images
67
76
  external_urls
@@ -78,12 +87,12 @@ class WCC::Media::Message < WCC::Media::Base
78
87
 
79
88
  def has_video? # rubocop:disable Naming/PredicateName
80
89
  assets.each_pair
81
- .any? { |k, v| /video/.match(k) && v && !v.empty? }
90
+ .any? { |k, v| /video/.match(k) && v && !v.empty? }
82
91
  end
83
92
 
84
93
  def has_audio? # rubocop:disable Naming/PredicateName
85
94
  assets.each_pair
86
- .any? { |k, v| /^audio/.match(k) && v && !v.empty? }
95
+ .any? { |k, v| /^audio/.match(k) && v && !v.empty? }
87
96
  end
88
97
 
89
98
  def to_param
@@ -100,6 +109,6 @@ class WCC::Media::Message < WCC::Media::Base
100
109
  end
101
110
  end
102
111
  # pluralize "campus" specifically
103
- alias_method :campuses, :campus
112
+ alias campuses campus
104
113
  remove_method :campus
105
114
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
2
4
  require_relative 'message'
3
5
 
@@ -24,4 +26,4 @@ class WCC::Media::Playlist < WCC::Media::Base
24
26
  def messages
25
27
  (raw['messages'] || []).map { |val| WCC::Media::Message.new(val) }
26
28
  end
27
- end
29
+ end
@@ -2,4 +2,3 @@
2
2
 
3
3
  require 'wcc/rails'
4
4
  require 'wcc/media/client'
5
- require 'wcc/media/engine'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
2
4
 
3
5
  class WCC::Media::Series < WCC::Media::Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
2
4
 
3
5
  class WCC::Media::Speaker < WCC::Media::Base
@@ -27,4 +29,4 @@ class WCC::Media::Speaker < WCC::Media::Base
27
29
  end
28
30
  alias_method "#{att}?", att
29
31
  end
30
- end
32
+ end
data/lib/wcc/media/tag.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
2
4
  require_relative 'tag_group'
3
5
 
@@ -19,7 +21,7 @@ class WCC::Media::Tag < WCC::Media::Base
19
21
  end
20
22
 
21
23
  def tag_group
22
- return unless key = raw.dig('tag_group', 'key')
24
+ return unless (key = raw.dig('tag_group', 'key'))
23
25
 
24
26
  WCC::Media::TagGroup[key.to_sym]
25
27
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  gem 'wcc-data'
2
4
  require 'wcc/data/enumerated_type'
3
5
 
@@ -18,8 +20,8 @@ class WCC::Media::TagGroup < WCC::Data::EnumeratedType
18
20
  end
19
21
 
20
22
  TAG_GROUPS = [
21
- { id: 1, name: "Channels", key: :channels },
22
- { id: 2, name: "Ministries", key: :ministries },
23
- { id: 3, name: "Meta", key: :meta },
24
- { id: 4, name: "Campus", key: :campus },
25
- ]
23
+ { id: 1, name: 'Channels', key: :channels },
24
+ { id: 2, name: 'Ministries', key: :ministries },
25
+ { id: 3, name: 'Meta', key: :meta },
26
+ { id: 4, name: 'Campus', key: :campus }
27
+ ].freeze
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WCC
2
4
  module Media
3
- VERSION = '0.4.13'.freeze
5
+ VERSION = '0.5.0'
4
6
  end
5
7
  end
@@ -24,29 +24,8 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.require_paths = ['lib']
26
26
 
27
- spec.add_runtime_dependency 'wcc-api', '~> 0.3.1'
27
+ spec.add_runtime_dependency 'wcc-api', '>= 0.3.1'
28
28
  spec.add_runtime_dependency 'wcc-auth'
29
29
  spec.add_runtime_dependency 'wcc-base', '~> 0.3.1'
30
30
  spec.add_runtime_dependency 'wcc-data', '~> 0.3.3'
31
-
32
- spec.add_development_dependency 'byebug', '~> 11.0.1'
33
- spec.add_development_dependency 'guard', '~> 2.15'
34
- spec.add_development_dependency 'guard-rspec', '~> 4.7'
35
- spec.add_development_dependency 'guard-rubocop', '~> 1.3'
36
- spec.add_development_dependency 'http', '> 1.0', '< 3.0'
37
- spec.add_development_dependency 'httplog', '~> 1.0'
38
- spec.add_development_dependency 'nio4r', '2.5.2'
39
- spec.add_development_dependency 'rails', '~> 5.0'
40
- spec.add_development_dependency 'rake', '~> 12.3'
41
- spec.add_development_dependency 'responders', '< 3.0'
42
- spec.add_development_dependency 'rspec', '~> 3.0'
43
- spec.add_development_dependency 'rspec-rails', '~> 3.7'
44
- spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3.0'
45
- spec.add_development_dependency 'rubocop', '~> 0.60.0'
46
- spec.add_development_dependency 'sidekiq', '< 6.0'
47
- spec.add_development_dependency 'sprockets', '< 4.0'
48
- spec.add_development_dependency 'sqlite3', '~> 1.3.6'
49
- spec.add_development_dependency 'toot', '~> 0.4.1'
50
- spec.add_development_dependency 'typhoeus', '~> 1.3'
51
- spec.add_development_dependency 'webmock', '~> 3.0'
52
31
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wcc-media-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.13
4
+ version: 0.5.0
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-09-14 00:00:00.000000000 Z
11
+ date: 2022-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: wcc-api
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.3.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.3.1
27
27
  - !ruby/object:Gem::Dependency
@@ -66,292 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.3.3
69
- - !ruby/object:Gem::Dependency
70
- name: byebug
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 11.0.1
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 11.0.1
83
- - !ruby/object:Gem::Dependency
84
- name: guard
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '2.15'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '2.15'
97
- - !ruby/object:Gem::Dependency
98
- name: guard-rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '4.7'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '4.7'
111
- - !ruby/object:Gem::Dependency
112
- name: guard-rubocop
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '1.3'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '1.3'
125
- - !ruby/object:Gem::Dependency
126
- name: http
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">"
130
- - !ruby/object:Gem::Version
131
- version: '1.0'
132
- - - "<"
133
- - !ruby/object:Gem::Version
134
- version: '3.0'
135
- type: :development
136
- prerelease: false
137
- version_requirements: !ruby/object:Gem::Requirement
138
- requirements:
139
- - - ">"
140
- - !ruby/object:Gem::Version
141
- version: '1.0'
142
- - - "<"
143
- - !ruby/object:Gem::Version
144
- version: '3.0'
145
- - !ruby/object:Gem::Dependency
146
- name: httplog
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '1.0'
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '1.0'
159
- - !ruby/object:Gem::Dependency
160
- name: nio4r
161
- requirement: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - '='
164
- - !ruby/object:Gem::Version
165
- version: 2.5.2
166
- type: :development
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - '='
171
- - !ruby/object:Gem::Version
172
- version: 2.5.2
173
- - !ruby/object:Gem::Dependency
174
- name: rails
175
- requirement: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: '5.0'
180
- type: :development
181
- prerelease: false
182
- version_requirements: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - "~>"
185
- - !ruby/object:Gem::Version
186
- version: '5.0'
187
- - !ruby/object:Gem::Dependency
188
- name: rake
189
- requirement: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - "~>"
192
- - !ruby/object:Gem::Version
193
- version: '12.3'
194
- type: :development
195
- prerelease: false
196
- version_requirements: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - "~>"
199
- - !ruby/object:Gem::Version
200
- version: '12.3'
201
- - !ruby/object:Gem::Dependency
202
- name: responders
203
- requirement: !ruby/object:Gem::Requirement
204
- requirements:
205
- - - "<"
206
- - !ruby/object:Gem::Version
207
- version: '3.0'
208
- type: :development
209
- prerelease: false
210
- version_requirements: !ruby/object:Gem::Requirement
211
- requirements:
212
- - - "<"
213
- - !ruby/object:Gem::Version
214
- version: '3.0'
215
- - !ruby/object:Gem::Dependency
216
- name: rspec
217
- requirement: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - "~>"
220
- - !ruby/object:Gem::Version
221
- version: '3.0'
222
- type: :development
223
- prerelease: false
224
- version_requirements: !ruby/object:Gem::Requirement
225
- requirements:
226
- - - "~>"
227
- - !ruby/object:Gem::Version
228
- version: '3.0'
229
- - !ruby/object:Gem::Dependency
230
- name: rspec-rails
231
- requirement: !ruby/object:Gem::Requirement
232
- requirements:
233
- - - "~>"
234
- - !ruby/object:Gem::Version
235
- version: '3.7'
236
- type: :development
237
- prerelease: false
238
- version_requirements: !ruby/object:Gem::Requirement
239
- requirements:
240
- - - "~>"
241
- - !ruby/object:Gem::Version
242
- version: '3.7'
243
- - !ruby/object:Gem::Dependency
244
- name: rspec_junit_formatter
245
- requirement: !ruby/object:Gem::Requirement
246
- requirements:
247
- - - "~>"
248
- - !ruby/object:Gem::Version
249
- version: 0.3.0
250
- type: :development
251
- prerelease: false
252
- version_requirements: !ruby/object:Gem::Requirement
253
- requirements:
254
- - - "~>"
255
- - !ruby/object:Gem::Version
256
- version: 0.3.0
257
- - !ruby/object:Gem::Dependency
258
- name: rubocop
259
- requirement: !ruby/object:Gem::Requirement
260
- requirements:
261
- - - "~>"
262
- - !ruby/object:Gem::Version
263
- version: 0.60.0
264
- type: :development
265
- prerelease: false
266
- version_requirements: !ruby/object:Gem::Requirement
267
- requirements:
268
- - - "~>"
269
- - !ruby/object:Gem::Version
270
- version: 0.60.0
271
- - !ruby/object:Gem::Dependency
272
- name: sidekiq
273
- requirement: !ruby/object:Gem::Requirement
274
- requirements:
275
- - - "<"
276
- - !ruby/object:Gem::Version
277
- version: '6.0'
278
- type: :development
279
- prerelease: false
280
- version_requirements: !ruby/object:Gem::Requirement
281
- requirements:
282
- - - "<"
283
- - !ruby/object:Gem::Version
284
- version: '6.0'
285
- - !ruby/object:Gem::Dependency
286
- name: sprockets
287
- requirement: !ruby/object:Gem::Requirement
288
- requirements:
289
- - - "<"
290
- - !ruby/object:Gem::Version
291
- version: '4.0'
292
- type: :development
293
- prerelease: false
294
- version_requirements: !ruby/object:Gem::Requirement
295
- requirements:
296
- - - "<"
297
- - !ruby/object:Gem::Version
298
- version: '4.0'
299
- - !ruby/object:Gem::Dependency
300
- name: sqlite3
301
- requirement: !ruby/object:Gem::Requirement
302
- requirements:
303
- - - "~>"
304
- - !ruby/object:Gem::Version
305
- version: 1.3.6
306
- type: :development
307
- prerelease: false
308
- version_requirements: !ruby/object:Gem::Requirement
309
- requirements:
310
- - - "~>"
311
- - !ruby/object:Gem::Version
312
- version: 1.3.6
313
- - !ruby/object:Gem::Dependency
314
- name: toot
315
- requirement: !ruby/object:Gem::Requirement
316
- requirements:
317
- - - "~>"
318
- - !ruby/object:Gem::Version
319
- version: 0.4.1
320
- type: :development
321
- prerelease: false
322
- version_requirements: !ruby/object:Gem::Requirement
323
- requirements:
324
- - - "~>"
325
- - !ruby/object:Gem::Version
326
- version: 0.4.1
327
- - !ruby/object:Gem::Dependency
328
- name: typhoeus
329
- requirement: !ruby/object:Gem::Requirement
330
- requirements:
331
- - - "~>"
332
- - !ruby/object:Gem::Version
333
- version: '1.3'
334
- type: :development
335
- prerelease: false
336
- version_requirements: !ruby/object:Gem::Requirement
337
- requirements:
338
- - - "~>"
339
- - !ruby/object:Gem::Version
340
- version: '1.3'
341
- - !ruby/object:Gem::Dependency
342
- name: webmock
343
- requirement: !ruby/object:Gem::Requirement
344
- requirements:
345
- - - "~>"
346
- - !ruby/object:Gem::Version
347
- version: '3.0'
348
- type: :development
349
- prerelease: false
350
- version_requirements: !ruby/object:Gem::Requirement
351
- requirements:
352
- - - "~>"
353
- - !ruby/object:Gem::Version
354
- version: '3.0'
355
69
  description: REST Client for accessing the WCC Media library
356
70
  email:
357
71
  - dev@watermark.org
@@ -364,13 +78,11 @@ files:
364
78
  - Gemfile
365
79
  - Guardfile
366
80
  - README.md
367
- - config/routes.rb
368
81
  - lib/wcc/media/active_record_shim.rb
369
82
  - lib/wcc/media/base.rb
370
83
  - lib/wcc/media/cacheable.rb
371
84
  - lib/wcc/media/client.rb
372
85
  - lib/wcc/media/client/response.rb
373
- - lib/wcc/media/engine.rb
374
86
  - lib/wcc/media/live_stream.rb
375
87
  - lib/wcc/media/message.rb
376
88
  - lib/wcc/media/playlist.rb
@@ -386,7 +98,7 @@ homepage: https://github.com/watermarkchurch/media/wcc-media-client
386
98
  licenses:
387
99
  - MIT
388
100
  metadata: {}
389
- post_install_message:
101
+ post_install_message:
390
102
  rdoc_options: []
391
103
  require_paths:
392
104
  - lib
@@ -401,9 +113,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
401
113
  - !ruby/object:Gem::Version
402
114
  version: '0'
403
115
  requirements: []
404
- rubyforge_project:
405
- rubygems_version: 2.5.2
406
- signing_key:
116
+ rubygems_version: 3.1.6
117
+ signing_key:
407
118
  specification_version: 4
408
119
  summary: ''
409
120
  test_files: []
data/config/routes.rb DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- WCC::Media::Engine.routes.draw do
4
- match "/callbacks", to: Toot::HandlerService, via: :post
5
- end
6
- ActiveSupport::Notifications.instrument 'routes_loaded.engine.media.wcc'
@@ -1,104 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_job'
4
- require 'toot'
5
- require 'wcc/auth'
6
- require 'wcc/data'
7
-
8
- class WCC::Media::Engine < ::Rails::Engine
9
- isolate_namespace WCC::Media
10
-
11
- class << self
12
- def subscribe(channel, handler = nil, &block)
13
- handler ||= Proc.new(&block)
14
- with_toot_config do |c|
15
- c.subscribe :media, channel, handler
16
- end
17
- end
18
-
19
- def initialized
20
- # Don't register subscriptions unless
21
- # 1. we mounted the engine and
22
- # 2. something subscribed.
23
- ::Toot.config.callback_url &&
24
- ::Toot.config.subscriptions.any? { |s| s.source.name == :media }
25
- end
26
-
27
- def register_subscriptions
28
- return unless initialized
29
-
30
- raise StandardError, "WCC::Auth must be configured" unless WCC::Auth.config.app_name.present? && WCC::Auth.config.app_url.present?
31
-
32
- RegistersSubscriptionsJob.perform_later
33
- end
34
-
35
- # Ensures toot is configured properly with the Media channel. Note this is
36
- # not done until an actual subscription is requested.
37
- def with_toot_config(&block)
38
- return ::Toot.config(&block) if @configured
39
-
40
- ::Toot.config do |c|
41
- media_api_url = WCC::Media::Client.default.api_url
42
-
43
- c.source :media,
44
- channel_prefix: "org.watermark.media.",
45
- subscription_url: URI.join(media_api_url, '/toot/subscriptions')
46
-
47
- # Note - use the [] method to override only if not set in client already
48
- c[:http_connection] ||=
49
- Faraday::Connection.new do |conn|
50
- conn.use :client_app_token
51
- conn.adapter :net_http
52
- end
53
-
54
- yield c
55
- end
56
- @configured = true
57
- end
58
- end
59
-
60
- initializer 'configure WCC::Media Toots' do
61
- ActiveSupport::Notifications.subscribe 'routes_loaded.engine.media.wcc' do
62
- ::Toot.config.callback_url ||=
63
- begin
64
- Rails.application.routes.url_helpers.wcc_media_url + '/callbacks'
65
- rescue ArgumentError => ex
66
- raise unless ex.message =~ /^Missing host to link to/
67
- end
68
-
69
- if ::Toot.config.callback_url.nil?
70
- Rails.logger.error "Toot.config.callback_url not set! Media webhooks will not be subscribed."
71
- else
72
- WCC::Media::Engine.register_subscriptions
73
- end
74
- end
75
- end
76
-
77
- config.generators do |g|
78
- g.test_framework :rspec, fixture: false
79
- end
80
-
81
- class RegistersSubscriptionsJob < ::ActiveJob::Base
82
- self.queue_adapter = :async
83
-
84
- def perform
85
- Toot::RegistersSubscriptions.call
86
- rescue WCC::Data::Mapper::ServiceUnavailable => e
87
- _handle_error(e)
88
- rescue Faraday::ConnectionFailed => e
89
- _handle_error(e)
90
- rescue Faraday::TimeoutError => e
91
- _handle_error(e)
92
- rescue Toot::RegisterSubscriptionFailure => e
93
- raise unless e.status == 503
94
-
95
- _handle_error(e)
96
- end
97
-
98
- private
99
-
100
- def _handle_error(err)
101
- logger.error "Server is down (will not retry): #{err.class} #{err}"
102
- end
103
- end
104
- end