resteze 0.1.0 → 0.3.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 +4 -4
- data/.rubocop.yml +11 -1
- data/.ruby-version +1 -0
- data/Guardfile +0 -1
- data/README.md +59 -13
- data/assets/resteze.png +0 -0
- data/assets/resteze.svg +3 -0
- data/lib/resteze/api_module.rb +25 -0
- data/lib/resteze/api_resource.rb +70 -0
- data/lib/resteze/client.rb +242 -0
- data/lib/resteze/errors.rb +38 -0
- data/lib/resteze/list.rb +43 -0
- data/lib/resteze/list_object.rb +40 -0
- data/lib/resteze/middleware/raise_error.rb +17 -0
- data/lib/resteze/object.rb +73 -0
- data/lib/resteze/request.rb +14 -0
- data/lib/resteze/response.rb +52 -0
- data/lib/resteze/save.rb +35 -0
- data/lib/resteze/util.rb +54 -0
- data/lib/resteze/version.rb +1 -1
- data/lib/resteze.rb +122 -3
- metadata +20 -5
data/lib/resteze/version.rb
CHANGED
data/lib/resteze.rb
CHANGED
@@ -1,8 +1,127 @@
|
|
1
|
-
#
|
1
|
+
# Dependencies
|
2
|
+
require "action_dispatch/http/mime_type"
|
3
|
+
require "active_support/all"
|
4
|
+
require "faraday"
|
5
|
+
require "hashie"
|
6
|
+
require "logger"
|
2
7
|
|
3
8
|
require_relative "resteze/version"
|
4
9
|
|
10
|
+
# API Concerns
|
11
|
+
require "resteze/api_module"
|
12
|
+
require "resteze/request"
|
13
|
+
require "resteze/api_resource"
|
14
|
+
require "resteze/list"
|
15
|
+
require "resteze/save"
|
16
|
+
|
17
|
+
# API resource support classes
|
18
|
+
require "resteze/object"
|
19
|
+
|
20
|
+
# API Classes
|
21
|
+
require "resteze/client"
|
22
|
+
require "resteze/errors"
|
23
|
+
require "resteze/list_object"
|
24
|
+
require "resteze/response"
|
25
|
+
require "resteze/util"
|
26
|
+
|
27
|
+
# Middlewares
|
28
|
+
require "resteze/middleware/raise_error"
|
29
|
+
|
5
30
|
module Resteze
|
6
|
-
|
7
|
-
|
31
|
+
extend ActiveSupport::Concern
|
32
|
+
|
33
|
+
module ClassMethods
|
34
|
+
def configure
|
35
|
+
yield self
|
36
|
+
end
|
37
|
+
|
38
|
+
def default_service_path(_klass)
|
39
|
+
"/"
|
40
|
+
end
|
41
|
+
|
42
|
+
def default_api_version(_klass)
|
43
|
+
nil
|
44
|
+
end
|
45
|
+
|
46
|
+
def default_resource_slug(klass)
|
47
|
+
klass.name.demodulize.underscore.pluralize
|
48
|
+
end
|
49
|
+
|
50
|
+
def default_object_key(_klass)
|
51
|
+
nil
|
52
|
+
end
|
53
|
+
|
54
|
+
def default_list_key(_klass)
|
55
|
+
:data
|
56
|
+
end
|
57
|
+
|
58
|
+
def default_api_key(attribute)
|
59
|
+
attribute.to_s
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
extend ClassMethods
|
64
|
+
|
65
|
+
included do
|
66
|
+
class << self
|
67
|
+
attr_accessor :api_base,
|
68
|
+
:open_timeout,
|
69
|
+
:read_timeout,
|
70
|
+
:logger,
|
71
|
+
:proxy
|
72
|
+
end
|
73
|
+
|
74
|
+
configure do |config|
|
75
|
+
config.api_base = "http://example.com/"
|
76
|
+
config.open_timeout = 30
|
77
|
+
config.read_timeout = 60
|
78
|
+
config.logger = Logger.new($stdout)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Setup magic constants
|
82
|
+
const_set :Object, Class.new(Resteze::Object)
|
83
|
+
const_set :Client, Class.new(Resteze::Client)
|
84
|
+
const_set :Response, Class.new(Resteze::Response)
|
85
|
+
const_set :Error, Class.new(Resteze::Error)
|
86
|
+
|
87
|
+
Resteze::Error.subclasses.select { |klass| klass.name.start_with?("Resteze::") }.each do |error_class|
|
88
|
+
error_type = error_class.to_s.demodulize
|
89
|
+
const_set error_type, Class.new(error_class) unless const_defined?("#{self}::#{error_type}")
|
90
|
+
end
|
91
|
+
|
92
|
+
# Namespace other exceptions that we want to be able to catch and make sense of
|
93
|
+
# without needing lower level implementation details
|
94
|
+
const_set :NotImplementedError, Class.new(NotImplementedError)
|
95
|
+
const_set :ResourceNotFound, Class.new(Faraday::ResourceNotFound)
|
96
|
+
const_set :UnprocessableEntityError, Class.new(Faraday::UnprocessableEntityError)
|
97
|
+
const_set :ConflictError, Class.new(Faraday::ConflictError)
|
98
|
+
|
99
|
+
# Setup our Magic Constants
|
100
|
+
const_set(:ListObject, Class.new(Hashie::Array)).class_eval do
|
101
|
+
include ApiModule
|
102
|
+
prepend Resteze::ListObject
|
103
|
+
end
|
104
|
+
|
105
|
+
const_set(:ApiResource, Class.new(self::Object)).class_eval do
|
106
|
+
include Resteze::ApiResource
|
107
|
+
end
|
108
|
+
|
109
|
+
const_set(:Middleware, Module.new).module_eval do
|
110
|
+
const_set :RaiseError, Class.new(Resteze::Middleware::RaiseError)
|
111
|
+
end
|
112
|
+
|
113
|
+
const_set(:List, Module.new).module_eval do
|
114
|
+
extend ActiveSupport::Concern
|
115
|
+
include Resteze::List
|
116
|
+
end
|
117
|
+
|
118
|
+
const_set(:Save, Module.new).module_eval do
|
119
|
+
extend ActiveSupport::Concern
|
120
|
+
include Resteze::Save
|
121
|
+
end
|
122
|
+
|
123
|
+
const_set(:Util, Module.new).module_eval do
|
124
|
+
include Resteze::Util
|
125
|
+
end
|
126
|
+
end
|
8
127
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resteze
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JD Hendrickson
|
8
|
-
bindir:
|
8
|
+
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date:
|
10
|
+
date: 2025-08-12 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: actionpack
|
@@ -74,11 +74,26 @@ extra_rdoc_files: []
|
|
74
74
|
files:
|
75
75
|
- ".rubocop"
|
76
76
|
- ".rubocop.yml"
|
77
|
+
- ".ruby-version"
|
77
78
|
- Guardfile
|
78
79
|
- LICENSE.txt
|
79
80
|
- README.md
|
80
81
|
- Rakefile
|
82
|
+
- assets/resteze.png
|
83
|
+
- assets/resteze.svg
|
81
84
|
- lib/resteze.rb
|
85
|
+
- lib/resteze/api_module.rb
|
86
|
+
- lib/resteze/api_resource.rb
|
87
|
+
- lib/resteze/client.rb
|
88
|
+
- lib/resteze/errors.rb
|
89
|
+
- lib/resteze/list.rb
|
90
|
+
- lib/resteze/list_object.rb
|
91
|
+
- lib/resteze/middleware/raise_error.rb
|
92
|
+
- lib/resteze/object.rb
|
93
|
+
- lib/resteze/request.rb
|
94
|
+
- lib/resteze/response.rb
|
95
|
+
- lib/resteze/save.rb
|
96
|
+
- lib/resteze/util.rb
|
82
97
|
- lib/resteze/version.rb
|
83
98
|
- sig/resteze.rbs
|
84
99
|
licenses:
|
@@ -94,14 +109,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
109
|
requirements:
|
95
110
|
- - ">="
|
96
111
|
- !ruby/object:Gem::Version
|
97
|
-
version: 3.
|
112
|
+
version: 3.2.0
|
98
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
114
|
requirements:
|
100
115
|
- - ">="
|
101
116
|
- !ruby/object:Gem::Version
|
102
117
|
version: '0'
|
103
118
|
requirements: []
|
104
|
-
rubygems_version: 3.6.
|
119
|
+
rubygems_version: 3.6.2
|
105
120
|
specification_version: 4
|
106
121
|
summary: Resteze is a REST client library for Ruby.
|
107
122
|
test_files: []
|