wcc-jtj-client 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bd533e65649b2b8f21fd9637c8d41a928a248b07fd8aa9bc0639929ccfe25791
4
+ data.tar.gz: 1ec8cb8c7344360cbdd4222e42d24b04db6e98a5dd2a812120ff98e011056c04
5
+ SHA512:
6
+ metadata.gz: b371e59536f7fe43c8d64a3fb618afcde6f96236b06e752186dc23d45fb9ca516e003bf241fdce12fa3b49b08b3ef597282669c542c11ef3abdd96076d5b85fb
7
+ data.tar.gz: 2b38e61322f9389d94303e5c35929f7d0fd23a98fec705fa7d925b909ffe7fa6294c8b7b51c600e211e1283e633bbfc19ffaee8eaebba9bbdf7578bb6050ed8b
data/.rubocop.yml ADDED
@@ -0,0 +1,28 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.3
3
+ Exclude:
4
+ - '**/templates/**/*'
5
+ - '**/vendor/**/*'
6
+ Include:
7
+ - 'lib/**/*'
8
+ - 'Gemfile'
9
+ - 'wcc-jtj-client.gemspec'
10
+
11
+ Metrics/LineLength:
12
+ Max: 120
13
+
14
+ Naming/FileName:
15
+ Exclude:
16
+ - 'lib/wcc-jtj-client.rb' # Allow "require 'wcc-jtj-client'"
17
+
18
+ Style/ClassAndModuleChildren:
19
+ Enabled: false
20
+
21
+ Style/Documentation:
22
+ Enabled: false
23
+
24
+ Style/IfUnlessModifier:
25
+ Enabled: false
26
+
27
+ Style/MultilineIfModifier:
28
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in wcc-events-client.gemspec
6
+ gemspec
7
+
8
+ group :development, :test do
9
+ gem 'capybara', '>= 2.15'
10
+ gem 'guard', '~> 2.15'
11
+ gem 'guard-rspec', '~> 4.7'
12
+ gem 'guard-rubocop', '~> 1.3'
13
+ gem 'rake', '~> 12.3'
14
+ gem 'rspec', '~> 3.0'
15
+ gem 'rspec_junit_formatter', '~> 0.4.1'
16
+ gem 'rubocop', '~> 0.59.2', require: false
17
+ gem 'rubocop-performance', require: false
18
+ gem 'simplecov', '~> 0.21.2', require: false
19
+ gem 'simplecov-cobertura', '~> 1.4'
20
+ gem 'webmock', '~> 3.1'
21
+ end
data/README.md ADDED
@@ -0,0 +1 @@
1
+ Internal Watermark.org gem, not licensed for external use.
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ begin
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+ task default: :spec
8
+ rescue LoadError
9
+ # no rspec available
10
+ end
@@ -0,0 +1,105 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+
5
+ module WCC::JTJ
6
+ class Client
7
+ Response = Struct.new(:client, :request, :raw_response) do # rubocop:disable Metrics/BlockLength
8
+ extend Forwardable
9
+
10
+ def_delegators :raw_response, :status, :headers
11
+ alias_method :code, :status
12
+
13
+ def raw
14
+ @raw ||= raw_response.body.to_s
15
+ end
16
+ alias_method :to_json, :raw
17
+
18
+ def body
19
+ @body ||= JSON.parse(raw)
20
+ end
21
+ def_delegators :body, :[], :dig, :to_h
22
+
23
+ def next_page_url
24
+ body.dig('links', 'next_page')
25
+ end
26
+
27
+ def next_page?
28
+ !next_page_url.nil?
29
+ end
30
+
31
+ def next_page
32
+ return unless next_page_url
33
+ return @next_page if @next_page
34
+
35
+ np = client.get(next_page_url, request[:query])
36
+ @next_page = np.assert_ok!
37
+ end
38
+
39
+ def assert_ok!
40
+ return self if status >= 200 && status < 300
41
+
42
+ raise ApiError[status], self
43
+ end
44
+
45
+ def each_page(&block)
46
+ ret = PaginatingEnumerable.new(self)
47
+
48
+ if block_given?
49
+ ret.map(&block)
50
+ else
51
+ ret.lazy
52
+ end
53
+ end
54
+
55
+ def count
56
+ total
57
+ end
58
+ end
59
+
60
+ class PaginatingEnumerable
61
+ include Enumerable
62
+
63
+ def initialize(initial_page)
64
+ raise ArgumentError, 'Must provide initial page' unless initial_page
65
+
66
+ @initial_page = initial_page
67
+ end
68
+
69
+ def each
70
+ page = @initial_page
71
+ puts 'yield page'
72
+ yield page
73
+
74
+ while page.next_page?
75
+ page = page.next_page
76
+ yield page
77
+ end
78
+ end
79
+ end
80
+
81
+ class ApiError < StandardError
82
+ attr_reader :response
83
+
84
+ def self.[](code)
85
+ case code
86
+ when 404
87
+ NotFoundError
88
+ else
89
+ ApiError
90
+ end
91
+ end
92
+
93
+ def initialize(response, message = nil)
94
+ @response = response
95
+ super(message || "An unexpected error occurred: #{response.status}")
96
+ end
97
+ end
98
+
99
+ class NotFoundError < ApiError
100
+ def initialize(response)
101
+ super(response, 'Resource does not exist')
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::JTJ::Client::Responses
4
+ # The abstract base class of all responses
5
+ class Base < WCC::JTJ::Client::Schemas::Base
6
+ end
7
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::JTJ::Client::Responses
4
+ class CurriculumShowResponse < Base
5
+ def curriculum
6
+ @curriculum ||=
7
+ if raw['curriculum']
8
+ WCC::JTJ::Client::Schemas::CurriculumSummary.new(
9
+ raw['curriculum'], client: @client
10
+ )
11
+ end
12
+ end
13
+
14
+ def current_week
15
+ @current_week ||=
16
+ raw['current_week']&.map do |entry|
17
+ WCC::JTJ::Client::Schemas::Entry.new(
18
+ entry, client: @client
19
+ )
20
+ end
21
+ end
22
+ alias currentWeek current_week
23
+
24
+ define_camelcase_alias(
25
+ 'links'
26
+ ) do |camelcase|
27
+ OpenStruct.new(raw[camelcase]) if raw[camelcase]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::JTJ::Client::Responses
4
+ class CurriculumsListResponse < Base
5
+ def total
6
+ raw['total']
7
+ end
8
+ alias count total
9
+
10
+ def curriculums
11
+ raw.each_page
12
+ .flat_map { |page| page['curriculums'] }
13
+ .map do |raw_curriculum|
14
+ WCC::JTJ::Client::Schemas::CurriculumSummary.new(
15
+ raw_curriculum, client: @client
16
+ )
17
+ end
18
+ end
19
+
20
+ define_camelcase_alias(
21
+ 'params',
22
+ 'links'
23
+ ) do |camelcase|
24
+ OpenStruct.new(raw[camelcase]) if raw[camelcase]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::JTJ::Client::Responses
4
+ class EntriesListResponse < Base
5
+ def total
6
+ raw['total']
7
+ end
8
+ alias count total
9
+
10
+ def entries
11
+ raw.each_page
12
+ .flat_map { |page| page['entries'] }
13
+ .map do |raw_entry|
14
+ WCC::JTJ::Client::Schemas::EntrySummary.new(
15
+ raw_entry, client: @client
16
+ )
17
+ end
18
+ end
19
+
20
+ define_camelcase_alias(
21
+ 'params',
22
+ 'links'
23
+ ) do |camelcase|
24
+ OpenStruct.new(raw[camelcase]) if raw[camelcase]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::JTJ::Client::Responses
4
+ class EntryShowResponse < Base
5
+ def entry
6
+ @entry ||=
7
+ if raw['entry']
8
+ WCC::JTJ::Client::Schemas::Entry.new(
9
+ raw['entry'], client: @client
10
+ )
11
+ end
12
+ end
13
+
14
+ define_camelcase_alias(
15
+ 'links'
16
+ ) do |camelcase|
17
+ OpenStruct.new(raw[camelcase]) if raw[camelcase]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::JTJ::Client::Responses
4
+ class MemoryVerseShowResponse < Base
5
+ def memory_verse
6
+ @memory_verse ||=
7
+ if raw['memory_verse']
8
+ WCC::JTJ::Client::Schemas::MemoryVerse.new(
9
+ raw['memory_verse'], client: @client
10
+ )
11
+ end
12
+ end
13
+
14
+ define_camelcase_alias(
15
+ 'links'
16
+ ) do |camelcase|
17
+ OpenStruct.new(raw[camelcase]) if raw[camelcase]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::JTJ::Client::Responses
4
+ class MemoryVersesListResponse < Base
5
+ def total
6
+ raw['total']
7
+ end
8
+ alias count total
9
+
10
+ def memory_verses
11
+ raw.each_page
12
+ .flat_map { |page| page['memory_verses'] }
13
+ .map do |raw_verse|
14
+ WCC::JTJ::Client::Schemas::MemoryVerseSummary.new(
15
+ raw_verse, client: @client
16
+ )
17
+ end
18
+ end
19
+
20
+ define_camelcase_alias(
21
+ 'params',
22
+ 'links'
23
+ ) do |camelcase|
24
+ OpenStruct.new(raw[camelcase]) if raw[camelcase]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::JTJ::Client::Responses
4
+ class RootResponse < Base
5
+ def curriculum
6
+ @curriculum ||=
7
+ if raw['curriculum']
8
+ WCC::JTJ::Client::Schemas::CurriculumSummary.new(raw['curriculum'], client: @client)
9
+ end
10
+ end
11
+
12
+ def latest_entry
13
+ @latest_entry ||=
14
+ if raw['latest_entry']
15
+ WCC::JTJ::Client::Schemas::Entry.new(raw['latest_entry'], client: @client)
16
+ end
17
+ end
18
+ alias latestEntry latest_entry
19
+
20
+ def current_week
21
+ @current_week ||=
22
+ raw['current_week']&.map do |summary|
23
+ WCC::JTJ::Client::Schemas::EntrySummary.new(
24
+ summary, client: @client
25
+ )
26
+ end
27
+ end
28
+ alias currentWeek current_week
29
+
30
+ define_camelcase_alias(
31
+ 'settings',
32
+ 'links'
33
+ ) do |camelcase|
34
+ OpenStruct.new(raw[camelcase]) if raw[camelcase]
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../utils'
4
+
5
+ module WCC::JTJ::Client::Schemas
6
+ # The abstract base class of all schemas
7
+ class Base
8
+ extend Forwardable
9
+ extend WCC::JTJ::Client::Utils
10
+
11
+ attr_reader :raw
12
+ def_delegators :raw, :[], :dig, :to_h, :to_json
13
+
14
+ def initialize(raw, client: WCC::JTJ::Client.default)
15
+ @raw = raw
16
+ @client = client
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../utils'
4
+
5
+ module WCC::JTJ::Client::Schemas
6
+ class CurriculumSummary < Base
7
+ define_camelcase_alias(
8
+ 'id',
9
+ 'title',
10
+ 'start_date',
11
+ 'end_date',
12
+ 'days_of_week'
13
+ ) do |camelcase|
14
+ raw[camelcase]
15
+ end
16
+
17
+ def links
18
+ OpenStruct.new(raw['links']) if raw['links']
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../utils'
4
+
5
+ module WCC::JTJ::Client::Schemas
6
+ class Entry < Base
7
+ define_camelcase_alias(
8
+ 'id',
9
+ 'date',
10
+ 'title',
11
+ 'central_truth',
12
+ 'reflection',
13
+ 'discussion_questions',
14
+ 'tags'
15
+ ) do |camelcase|
16
+ raw[camelcase]
17
+ end
18
+
19
+ def scriptures
20
+ @scriptures ||=
21
+ raw['scriptures']&.map do |scripture|
22
+ WCC::JTJ::Client::Schemas::Scripture.new(
23
+ scripture, client: @client
24
+ )
25
+ end
26
+ end
27
+
28
+ def key_verse
29
+ @key_verse ||=
30
+ if raw['key_verse']
31
+ WCC::JTJ::Client::Schemas::Scripture.new(raw['key_verse'], client: @client)
32
+ end
33
+ end
34
+ alias keyVerse key_verse
35
+
36
+ def writer
37
+ @writer ||=
38
+ if raw['writer']
39
+ WCC::JTJ::Client::Schemas::Writer.new(raw['writer'], client: @client)
40
+ end
41
+ end
42
+
43
+ def links
44
+ OpenStruct.new(raw['links']) if raw['links']
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../utils'
4
+
5
+ module WCC::JTJ::Client::Schemas
6
+ class EntrySummary < Base
7
+ define_camelcase_alias(
8
+ 'id',
9
+ 'date',
10
+ 'scripture',
11
+ 'title',
12
+ 'tags'
13
+ ) do |camelcase|
14
+ raw[camelcase]
15
+ end
16
+
17
+ def links
18
+ OpenStruct.new(raw['links']) if raw['links']
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../utils'
4
+
5
+ module WCC::JTJ::Client::Schemas
6
+ class MemoryVerse < Base
7
+ define_camelcase_alias(
8
+ 'id',
9
+ 'curriculum_id',
10
+ 'reference',
11
+ 'version',
12
+ 'html',
13
+ 'start_date',
14
+ 'end_date'
15
+ ) do |camelcase|
16
+ raw[camelcase]
17
+ end
18
+
19
+ def links
20
+ OpenStruct.new(raw['links']) if raw['links']
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../utils'
4
+
5
+ module WCC::JTJ::Client::Schemas
6
+ class MemoryVerseSummary < Base
7
+ define_camelcase_alias(
8
+ 'id',
9
+ 'curriculum_id',
10
+ 'reference',
11
+ 'start_date',
12
+ 'end_date'
13
+ ) do |camelcase|
14
+ raw[camelcase]
15
+ end
16
+
17
+ def links
18
+ OpenStruct.new(raw['links']) if raw['links']
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../utils'
4
+
5
+ module WCC::JTJ::Client::Schemas
6
+ class Scripture < Base
7
+ define_camelcase_alias(
8
+ 'reference',
9
+ 'version',
10
+ 'html'
11
+ ) do |camelcase|
12
+ raw[camelcase]
13
+ end
14
+
15
+ def links
16
+ OpenStruct.new(raw['links']) if raw['links']
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../utils'
4
+
5
+ module WCC::JTJ::Client::Schemas
6
+ class Writer < Base
7
+ define_camelcase_alias(
8
+ 'id',
9
+ 'name',
10
+ 'bio'
11
+ ) do |camelcase|
12
+ raw[camelcase]
13
+ end
14
+
15
+ def links
16
+ OpenStruct.new(raw['links']) if raw['links']
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC::JTJ::Client::Utils
4
+ module_function
5
+
6
+ def camelcase(term)
7
+ term
8
+ .to_s
9
+ .gsub(%r{(?:_|(/))([a-z\d]*)}) { "#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}" }
10
+ .gsub(%r{/}, '::')
11
+ end
12
+
13
+ def define_camelcase_alias(*underscore_method_names, &block)
14
+ underscore_method_names.each do |method|
15
+ attribute = camelcase(method)
16
+
17
+ define_method(method) { instance_exec(attribute, &block) }
18
+ alias_method attribute, method if attribute != method
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WCC
4
+ module JTJ
5
+ class Client
6
+ VERSION = '0.1.0'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,134 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+
5
+ require_relative './client/version'
6
+ require_relative './client/utils'
7
+ require_relative './client/response'
8
+
9
+ require_relative './client/schemas/base'
10
+ require_relative './client/schemas/curriculum_summary'
11
+ require_relative './client/schemas/entry_summary'
12
+ require_relative './client/schemas/entry'
13
+ require_relative './client/schemas/scripture'
14
+ require_relative './client/schemas/writer'
15
+ require_relative './client/schemas/memory_verse_summary'
16
+ require_relative './client/schemas/memory_verse'
17
+
18
+ require_relative './client/responses/base'
19
+ require_relative './client/responses/root_response'
20
+ require_relative './client/responses/curriculums_list_response'
21
+ require_relative './client/responses/curriculum_show_response'
22
+ require_relative './client/responses/entries_list_response'
23
+ require_relative './client/responses/entry_show_response'
24
+ require_relative './client/responses/memory_verses_list_response'
25
+ require_relative './client/responses/memory_verse_show_response'
26
+
27
+ module WCC::JTJ
28
+ class Client
29
+ class << self
30
+ attr_writer :client
31
+
32
+ def client
33
+ @client || raise(StandardError, 'Not configured')
34
+ end
35
+ end
36
+
37
+ attr_reader :base_url, :default_property, :base_path
38
+
39
+ def options
40
+ {
41
+ base_url: @base_url,
42
+ base_path: @base_path,
43
+ connection: @connection,
44
+ query_defaults: @query_defaults
45
+ }
46
+ end
47
+
48
+ def initialize(**options)
49
+ base_url = URI.parse(options[:base_url] || 'https://jtj.watermark.org')
50
+ @base_path = base_url.path == '' ? '/api' : base_url.path
51
+ @base_url = base_url.to_s
52
+ @connection = options[:connection] || Faraday.new
53
+ @query_defaults = options[:query_defaults] || {}
54
+ end
55
+
56
+ # performs an HTTP GET request to the specified path within the configured
57
+ # space and environment. Query parameters are merged with the defaults and
58
+ # appended to the request.
59
+ def get(path, query = {})
60
+ url = URI.join(@base_url, path)
61
+
62
+ Response.new(self,
63
+ { url: url, query: query },
64
+ get_http(url, query))
65
+ end
66
+
67
+ # rubocop:disable Naming/AccessorMethodName
68
+ def get_current
69
+ resp = get(base_path).assert_ok!
70
+
71
+ Responses::RootResponse.new(resp, client: self)
72
+ end
73
+
74
+ def list_curriculums
75
+ path = File.join(base_path, 'curriculums')
76
+ resp = get(path).assert_ok!
77
+
78
+ Responses::CurriculumsListResponse.new(resp, client: self)
79
+ end
80
+
81
+ def get_curriculum(id)
82
+ path = File.join(base_path, 'curriculums', id.to_s)
83
+ resp = get(path).assert_ok!
84
+
85
+ Responses::CurriculumShowResponse.new(resp, client: self)
86
+ end
87
+
88
+ def list_entries(**query)
89
+ path = File.join(base_path, 'entries')
90
+ resp = get(path, query).assert_ok!
91
+
92
+ Responses::EntriesListResponse.new(resp, client: self)
93
+ end
94
+
95
+ def get_entry(id)
96
+ path = File.join(base_path, 'entries', id.to_s)
97
+ resp = get(path).assert_ok!
98
+
99
+ Responses::EntryShowResponse.new(resp, client: self)
100
+ end
101
+
102
+ def list_memory_verses(**query)
103
+ path = File.join(base_path, 'memory_verses')
104
+ resp = get(path, query).assert_ok!
105
+
106
+ Responses::MemoryVersesListResponse.new(resp, client: self)
107
+ end
108
+
109
+ def get_memory_verse(id)
110
+ path = File.join(base_path, 'memory_verses', id.to_s)
111
+ resp = get(path).assert_ok!
112
+
113
+ Responses::MemoryVerseShowResponse.new(resp, client: self)
114
+ end
115
+ # rubocop:enable Naming/AccessorMethodName
116
+
117
+ private
118
+
119
+ def get_http(url, query, headers = {})
120
+ q = @query_defaults.merge(query || {})
121
+
122
+ loop do
123
+ resp = @connection.get(url, q, headers)
124
+
125
+ if [301, 302, 307].include?(resp.status)
126
+ url = URI.join(@base_url, resp.headers['Location'])
127
+ next
128
+ end
129
+
130
+ return resp
131
+ end
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './wcc/jtj/client'
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'wcc/jtj/client/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'wcc-jtj-client'
9
+ spec.version = WCC::JTJ::Client::VERSION
10
+ spec.authors = ['Watermark Dev']
11
+ spec.email = ['dev@watermark.org']
12
+
13
+ spec.summary = File.readlines(File.expand_path('README.md', __dir__)).join
14
+ spec.description = ''
15
+ spec.license = 'Not licensed for external use'
16
+
17
+ spec.required_ruby_version = '>= 2.3'
18
+
19
+ spec.files =
20
+ `git ls-files -z`.split("\x0").reject do |f|
21
+ f.match(%r{^(test|spec|features)/})
22
+ end
23
+
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.add_runtime_dependency 'faraday'
27
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wcc-jtj-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Watermark Dev
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-11-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: ''
28
+ email:
29
+ - dev@watermark.org
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rubocop.yml"
35
+ - Gemfile
36
+ - README.md
37
+ - Rakefile
38
+ - lib/wcc-jtj-client.rb
39
+ - lib/wcc/jtj/client.rb
40
+ - lib/wcc/jtj/client/response.rb
41
+ - lib/wcc/jtj/client/responses/base.rb
42
+ - lib/wcc/jtj/client/responses/curriculum_show_response.rb
43
+ - lib/wcc/jtj/client/responses/curriculums_list_response.rb
44
+ - lib/wcc/jtj/client/responses/entries_list_response.rb
45
+ - lib/wcc/jtj/client/responses/entry_show_response.rb
46
+ - lib/wcc/jtj/client/responses/memory_verse_show_response.rb
47
+ - lib/wcc/jtj/client/responses/memory_verses_list_response.rb
48
+ - lib/wcc/jtj/client/responses/root_response.rb
49
+ - lib/wcc/jtj/client/schemas/base.rb
50
+ - lib/wcc/jtj/client/schemas/curriculum_summary.rb
51
+ - lib/wcc/jtj/client/schemas/entry.rb
52
+ - lib/wcc/jtj/client/schemas/entry_summary.rb
53
+ - lib/wcc/jtj/client/schemas/memory_verse.rb
54
+ - lib/wcc/jtj/client/schemas/memory_verse_summary.rb
55
+ - lib/wcc/jtj/client/schemas/scripture.rb
56
+ - lib/wcc/jtj/client/schemas/writer.rb
57
+ - lib/wcc/jtj/client/utils.rb
58
+ - lib/wcc/jtj/client/version.rb
59
+ - wcc-jtj-client.gemspec
60
+ homepage:
61
+ licenses:
62
+ - Not licensed for external use
63
+ metadata: {}
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '2.3'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubygems_version: 3.1.6
80
+ signing_key:
81
+ specification_version: 4
82
+ summary: Internal Watermark.org gem, not licensed for external use.
83
+ test_files: []