wcc-jtj-client 0.1.0 → 0.1.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
  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