wcc-jtj-client 0.1.0 → 0.1.2

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
  SHA256:
3
- metadata.gz: bd533e65649b2b8f21fd9637c8d41a928a248b07fd8aa9bc0639929ccfe25791
4
- data.tar.gz: 1ec8cb8c7344360cbdd4222e42d24b04db6e98a5dd2a812120ff98e011056c04
3
+ metadata.gz: 835ccc14a2a9312be469424004cf257cd1eb4874199fb768ccd1bfdb47a3aefa
4
+ data.tar.gz: 56b6f796658eb2828836c9fb281dc089476c94e2a6495eb279a8f371a10f23f0
5
5
  SHA512:
6
- metadata.gz: b371e59536f7fe43c8d64a3fb618afcde6f96236b06e752186dc23d45fb9ca516e003bf241fdce12fa3b49b08b3ef597282669c542c11ef3abdd96076d5b85fb
7
- data.tar.gz: 2b38e61322f9389d94303e5c35929f7d0fd23a98fec705fa7d925b909ffe7fa6294c8b7b51c600e211e1283e633bbfc19ffaee8eaebba9bbdf7578bb6050ed8b
6
+ metadata.gz: 5d0832ed505ddfe1d466764cd26d75cc7f3da62213589409ef04ca1ae73fc9feae9c0a12687415a9c9714f0302fa5d8f235c6cbdc06b8cc89d82f5100a0e55f4
7
+ data.tar.gz: 7a770f814a47ae183389744a60458b454d23b5ba65416f72729e45cd5d39c13ba1b1e6e7aa8ab12e73a81241d70fa8412a6317fb600254ba1ae7ebb3981abd0a
data/.rubocop.yml CHANGED
@@ -21,8 +21,15 @@ Style/ClassAndModuleChildren:
21
21
  Style/Documentation:
22
22
  Enabled: false
23
23
 
24
+ Style/GuardClause:
25
+ Enabled: false
26
+
24
27
  Style/IfUnlessModifier:
25
28
  Enabled: false
26
29
 
27
30
  Style/MultilineIfModifier:
31
+ Enabled: false
32
+
33
+ # This one won't let me EnforcedStyle: slashes, do we need to upgrade rubocop?
34
+ Style/RegexpLiteral:
28
35
  Enabled: false
@@ -20,6 +20,10 @@ module WCC::JTJ
20
20
  end
21
21
  def_delegators :body, :[], :dig, :to_h
22
22
 
23
+ def url
24
+ raw_response.env.url
25
+ end
26
+
23
27
  def next_page_url
24
28
  body.dig('links', 'next_page')
25
29
  end
@@ -26,5 +26,12 @@ module WCC::JTJ::Client::Responses
26
26
  ) do |camelcase|
27
27
  OpenStruct.new(raw[camelcase]) if raw[camelcase]
28
28
  end
29
+
30
+ def validate!
31
+ unless curriculum&.id
32
+ raise WCC::JTJ::Client::Schemas::SchemaValidationError,
33
+ "Not a CurriculumShowResponse! #{raw.url}"
34
+ end
35
+ end
29
36
  end
30
37
  end
@@ -23,5 +23,12 @@ module WCC::JTJ::Client::Responses
23
23
  ) do |camelcase|
24
24
  OpenStruct.new(raw[camelcase]) if raw[camelcase]
25
25
  end
26
+
27
+ def validate!
28
+ unless total && raw['curriculums'].is_a?(Array)
29
+ raise WCC::JTJ::Client::Schemas::SchemaValidationError,
30
+ "Not a CurriculumsListResponse! #{raw.url}"
31
+ end
32
+ end
26
33
  end
27
34
  end
@@ -23,5 +23,12 @@ module WCC::JTJ::Client::Responses
23
23
  ) do |camelcase|
24
24
  OpenStruct.new(raw[camelcase]) if raw[camelcase]
25
25
  end
26
+
27
+ def validate!
28
+ unless total && raw['entries'].is_a?(Array)
29
+ raise WCC::JTJ::Client::Schemas::SchemaValidationError,
30
+ "Not an EntriesListResponse! #{raw.url}"
31
+ end
32
+ end
26
33
  end
27
34
  end
@@ -16,5 +16,12 @@ module WCC::JTJ::Client::Responses
16
16
  ) do |camelcase|
17
17
  OpenStruct.new(raw[camelcase]) if raw[camelcase]
18
18
  end
19
+
20
+ def validate!
21
+ unless entry&.id
22
+ raise WCC::JTJ::Client::Schemas::SchemaValidationError,
23
+ "Not an EntryShowResponse! #{raw.url}"
24
+ end
25
+ end
19
26
  end
20
27
  end
@@ -16,5 +16,12 @@ module WCC::JTJ::Client::Responses
16
16
  ) do |camelcase|
17
17
  OpenStruct.new(raw[camelcase]) if raw[camelcase]
18
18
  end
19
+
20
+ def validate!
21
+ unless memory_verse&.id
22
+ raise WCC::JTJ::Client::Schemas::SchemaValidationError,
23
+ "Not a MemoryVerseShowResponse! #{raw.url}"
24
+ end
25
+ end
19
26
  end
20
27
  end
@@ -23,5 +23,12 @@ module WCC::JTJ::Client::Responses
23
23
  ) do |camelcase|
24
24
  OpenStruct.new(raw[camelcase]) if raw[camelcase]
25
25
  end
26
+
27
+ def validate!
28
+ unless total && raw['memory_verses'].is_a?(Array)
29
+ raise WCC::JTJ::Client::Schemas::SchemaValidationError,
30
+ "Not a MemoryVersesListResponse! #{raw.url}"
31
+ end
32
+ end
26
33
  end
27
34
  end
@@ -11,9 +11,11 @@ module WCC::JTJ::Client::Schemas
11
11
  attr_reader :raw
12
12
  def_delegators :raw, :[], :dig, :to_h, :to_json
13
13
 
14
- def initialize(raw, client: WCC::JTJ::Client.default)
14
+ def initialize(raw, client: WCC::JTJ::Client.client)
15
15
  @raw = raw
16
16
  @client = client
17
17
  end
18
+
19
+ def validate!; end
18
20
  end
19
21
  end
@@ -40,6 +40,13 @@ module WCC::JTJ::Client::Schemas
40
40
  end
41
41
  end
42
42
 
43
+ def podcast
44
+ @podcast ||=
45
+ if raw['podcast']
46
+ WCC::JTJ::Client::Schemas::Podcast.new(raw['podcast'], client: @client)
47
+ end
48
+ end
49
+
43
50
  def links
44
51
  OpenStruct.new(raw['links']) if raw['links']
45
52
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../utils'
4
+
5
+ module WCC::JTJ::Client::Schemas
6
+ class Podcast < Base
7
+ define_camelcase_alias(
8
+ 'promo_text'
9
+ ) do |camelcase|
10
+ raw[camelcase]
11
+ end
12
+
13
+ def links
14
+ OpenStruct.new(raw['links']) if raw['links']
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::JTJ::Client::Schemas
4
+ class SchemaValidationError < StandardError
5
+ end
6
+ end
@@ -3,7 +3,7 @@
3
3
  module WCC
4
4
  module JTJ
5
5
  class Client
6
- VERSION = '0.1.0'
6
+ VERSION = '0.1.2'
7
7
  end
8
8
  end
9
9
  end
@@ -7,10 +7,12 @@ require_relative './client/utils'
7
7
  require_relative './client/response'
8
8
 
9
9
  require_relative './client/schemas/base'
10
+ require_relative './client/schemas/schema_validation_error'
10
11
  require_relative './client/schemas/curriculum_summary'
11
12
  require_relative './client/schemas/entry_summary'
12
13
  require_relative './client/schemas/entry'
13
14
  require_relative './client/schemas/scripture'
15
+ require_relative './client/schemas/podcast'
14
16
  require_relative './client/schemas/writer'
15
17
  require_relative './client/schemas/memory_verse_summary'
16
18
  require_relative './client/schemas/memory_verse'
@@ -25,7 +27,7 @@ require_relative './client/responses/memory_verses_list_response'
25
27
  require_relative './client/responses/memory_verse_show_response'
26
28
 
27
29
  module WCC::JTJ
28
- class Client
30
+ class Client # rubocop:disable Metrics/ClassLength
29
31
  class << self
30
32
  attr_writer :client
31
33
 
@@ -68,49 +70,79 @@ module WCC::JTJ
68
70
  def get_current
69
71
  resp = get(base_path).assert_ok!
70
72
 
71
- Responses::RootResponse.new(resp, client: self)
73
+ Responses::RootResponse.new(resp, client: self).tap(&:validate!)
72
74
  end
73
75
 
74
- def list_curriculums
75
- path = File.join(base_path, 'curriculums')
76
+ def list_curriculums(link = nil)
77
+ path =
78
+ if link && /^https?:\/\// =~ link
79
+ link
80
+ else
81
+ File.join(base_path, 'curriculums')
82
+ end
76
83
  resp = get(path).assert_ok!
77
84
 
78
- Responses::CurriculumsListResponse.new(resp, client: self)
85
+ Responses::CurriculumsListResponse.new(resp, client: self).tap(&:validate!)
79
86
  end
80
87
 
81
- def get_curriculum(id)
82
- path = File.join(base_path, 'curriculums', id.to_s)
88
+ def get_curriculum(id_or_link)
89
+ path =
90
+ if /^https?:\/\// =~ id_or_link.to_s
91
+ id_or_link
92
+ else
93
+ File.join(base_path, 'curriculums', id_or_link.to_s)
94
+ end
83
95
  resp = get(path).assert_ok!
84
96
 
85
- Responses::CurriculumShowResponse.new(resp, client: self)
97
+ Responses::CurriculumShowResponse.new(resp, client: self).tap(&:validate!)
86
98
  end
87
99
 
88
- def list_entries(**query)
89
- path = File.join(base_path, 'entries')
100
+ def list_entries(link = nil, **query)
101
+ path =
102
+ if link && /^https?:\/\// =~ link
103
+ link
104
+ else
105
+ File.join(base_path, 'entries')
106
+ end
90
107
  resp = get(path, query).assert_ok!
91
108
 
92
- Responses::EntriesListResponse.new(resp, client: self)
109
+ Responses::EntriesListResponse.new(resp, client: self).tap(&:validate!)
93
110
  end
94
111
 
95
- def get_entry(id)
96
- path = File.join(base_path, 'entries', id.to_s)
112
+ def get_entry(id_or_link)
113
+ path =
114
+ if /^https?:\/\// =~ id_or_link.to_s
115
+ id_or_link
116
+ else
117
+ File.join(base_path, 'entries', id_or_link.to_s)
118
+ end
97
119
  resp = get(path).assert_ok!
98
120
 
99
- Responses::EntryShowResponse.new(resp, client: self)
121
+ Responses::EntryShowResponse.new(resp, client: self).tap(&:validate!)
100
122
  end
101
123
 
102
- def list_memory_verses(**query)
103
- path = File.join(base_path, 'memory_verses')
124
+ def list_memory_verses(link = nil, **query)
125
+ path =
126
+ if link && /^https?:\/\// =~ link
127
+ link
128
+ else
129
+ File.join(base_path, 'memory_verses')
130
+ end
104
131
  resp = get(path, query).assert_ok!
105
132
 
106
- Responses::MemoryVersesListResponse.new(resp, client: self)
133
+ Responses::MemoryVersesListResponse.new(resp, client: self).tap(&:validate!)
107
134
  end
108
135
 
109
- def get_memory_verse(id)
110
- path = File.join(base_path, 'memory_verses', id.to_s)
136
+ def get_memory_verse(id_or_link)
137
+ path =
138
+ if /^https?:\/\// =~ id_or_link.to_s
139
+ id_or_link
140
+ else
141
+ File.join(base_path, 'memory_verses', id_or_link.to_s)
142
+ end
111
143
  resp = get(path).assert_ok!
112
144
 
113
- Responses::MemoryVerseShowResponse.new(resp, client: self)
145
+ Responses::MemoryVerseShowResponse.new(resp, client: self).tap(&:validate!)
114
146
  end
115
147
  # rubocop:enable Naming/AccessorMethodName
116
148
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wcc-jtj-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Watermark Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-03 00:00:00.000000000 Z
11
+ date: 2022-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -52,6 +52,8 @@ files:
52
52
  - lib/wcc/jtj/client/schemas/entry_summary.rb
53
53
  - lib/wcc/jtj/client/schemas/memory_verse.rb
54
54
  - lib/wcc/jtj/client/schemas/memory_verse_summary.rb
55
+ - lib/wcc/jtj/client/schemas/podcast.rb
56
+ - lib/wcc/jtj/client/schemas/schema_validation_error.rb
55
57
  - lib/wcc/jtj/client/schemas/scripture.rb
56
58
  - lib/wcc/jtj/client/schemas/writer.rb
57
59
  - lib/wcc/jtj/client/utils.rb
@@ -76,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
78
  - !ruby/object:Gem::Version
77
79
  version: '0'
78
80
  requirements: []
79
- rubygems_version: 3.1.6
81
+ rubygems_version: 3.3.22
80
82
  signing_key:
81
83
  specification_version: 4
82
84
  summary: Internal Watermark.org gem, not licensed for external use.