wcc-jtj-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
  SHA256:
3
- metadata.gz: bd533e65649b2b8f21fd9637c8d41a928a248b07fd8aa9bc0639929ccfe25791
4
- data.tar.gz: 1ec8cb8c7344360cbdd4222e42d24b04db6e98a5dd2a812120ff98e011056c04
3
+ metadata.gz: 1bad5a870ee2626cf3ca961591d8d9ccc9d33ad6cf8ec85ac5b93347b376013a
4
+ data.tar.gz: 1ba7d0c5ad2fc58d904bfcc3b6fb388fd2796d5cf0dfaa2db99aa19b43fd999a
5
5
  SHA512:
6
- metadata.gz: b371e59536f7fe43c8d64a3fb618afcde6f96236b06e752186dc23d45fb9ca516e003bf241fdce12fa3b49b08b3ef597282669c542c11ef3abdd96076d5b85fb
7
- data.tar.gz: 2b38e61322f9389d94303e5c35929f7d0fd23a98fec705fa7d925b909ffe7fa6294c8b7b51c600e211e1283e633bbfc19ffaee8eaebba9bbdf7578bb6050ed8b
6
+ metadata.gz: '05091af67a5b43c4704ba50e28675b7509ab46d5f10cb1bd176d91fc6a979cd69f51a67595448e938f6c06a9ef641e047cae454cf943c72f549c232e355842e9'
7
+ data.tar.gz: ade4a32a1fedcced55f05cb99ba23b8dd6fcc930324ea987d75f6e485587e6785566700b30760c23becb68e48f90f855a068d39115b970ba7535243da201eeda
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
@@ -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.1'
7
7
  end
8
8
  end
9
9
  end
@@ -7,6 +7,7 @@ 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'
@@ -25,7 +26,7 @@ require_relative './client/responses/memory_verses_list_response'
25
26
  require_relative './client/responses/memory_verse_show_response'
26
27
 
27
28
  module WCC::JTJ
28
- class Client
29
+ class Client # rubocop:disable Metrics/ClassLength
29
30
  class << self
30
31
  attr_writer :client
31
32
 
@@ -68,49 +69,79 @@ module WCC::JTJ
68
69
  def get_current
69
70
  resp = get(base_path).assert_ok!
70
71
 
71
- Responses::RootResponse.new(resp, client: self)
72
+ Responses::RootResponse.new(resp, client: self).tap(&:validate!)
72
73
  end
73
74
 
74
- def list_curriculums
75
- path = File.join(base_path, 'curriculums')
75
+ def list_curriculums(link = nil)
76
+ path =
77
+ if link && /^https?:\/\// =~ link
78
+ link
79
+ else
80
+ File.join(base_path, 'curriculums')
81
+ end
76
82
  resp = get(path).assert_ok!
77
83
 
78
- Responses::CurriculumsListResponse.new(resp, client: self)
84
+ Responses::CurriculumsListResponse.new(resp, client: self).tap(&:validate!)
79
85
  end
80
86
 
81
- def get_curriculum(id)
82
- path = File.join(base_path, 'curriculums', id.to_s)
87
+ def get_curriculum(id_or_link)
88
+ path =
89
+ if /^https?:\/\// =~ id_or_link.to_s
90
+ id_or_link
91
+ else
92
+ File.join(base_path, 'curriculums', id_or_link.to_s)
93
+ end
83
94
  resp = get(path).assert_ok!
84
95
 
85
- Responses::CurriculumShowResponse.new(resp, client: self)
96
+ Responses::CurriculumShowResponse.new(resp, client: self).tap(&:validate!)
86
97
  end
87
98
 
88
- def list_entries(**query)
89
- path = File.join(base_path, 'entries')
99
+ def list_entries(link = nil, **query)
100
+ path =
101
+ if link && /^https?:\/\// =~ link
102
+ link
103
+ else
104
+ File.join(base_path, 'entries')
105
+ end
90
106
  resp = get(path, query).assert_ok!
91
107
 
92
- Responses::EntriesListResponse.new(resp, client: self)
108
+ Responses::EntriesListResponse.new(resp, client: self).tap(&:validate!)
93
109
  end
94
110
 
95
- def get_entry(id)
96
- path = File.join(base_path, 'entries', id.to_s)
111
+ def get_entry(id_or_link)
112
+ path =
113
+ if /^https?:\/\// =~ id_or_link.to_s
114
+ id_or_link
115
+ else
116
+ File.join(base_path, 'entries', id_or_link.to_s)
117
+ end
97
118
  resp = get(path).assert_ok!
98
119
 
99
- Responses::EntryShowResponse.new(resp, client: self)
120
+ Responses::EntryShowResponse.new(resp, client: self).tap(&:validate!)
100
121
  end
101
122
 
102
- def list_memory_verses(**query)
103
- path = File.join(base_path, 'memory_verses')
123
+ def list_memory_verses(link = nil, **query)
124
+ path =
125
+ if link && /^https?:\/\// =~ link
126
+ link
127
+ else
128
+ File.join(base_path, 'memory_verses')
129
+ end
104
130
  resp = get(path, query).assert_ok!
105
131
 
106
- Responses::MemoryVersesListResponse.new(resp, client: self)
132
+ Responses::MemoryVersesListResponse.new(resp, client: self).tap(&:validate!)
107
133
  end
108
134
 
109
- def get_memory_verse(id)
110
- path = File.join(base_path, 'memory_verses', id.to_s)
135
+ def get_memory_verse(id_or_link)
136
+ path =
137
+ if /^https?:\/\// =~ id_or_link.to_s
138
+ id_or_link
139
+ else
140
+ File.join(base_path, 'memory_verses', id_or_link.to_s)
141
+ end
111
142
  resp = get(path).assert_ok!
112
143
 
113
- Responses::MemoryVerseShowResponse.new(resp, client: self)
144
+ Responses::MemoryVerseShowResponse.new(resp, client: self).tap(&:validate!)
114
145
  end
115
146
  # rubocop:enable Naming/AccessorMethodName
116
147
 
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.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: 2022-11-03 00:00:00.000000000 Z
11
+ date: 2022-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -52,6 +52,7 @@ 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/schema_validation_error.rb
55
56
  - lib/wcc/jtj/client/schemas/scripture.rb
56
57
  - lib/wcc/jtj/client/schemas/writer.rb
57
58
  - lib/wcc/jtj/client/utils.rb