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.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Resteze
4
- VERSION = "0.1.0"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/resteze.rb CHANGED
@@ -1,8 +1,127 @@
1
- # frozen_string_literal: true
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
- class Error < StandardError; end
7
- # Your code goes here...
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.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JD Hendrickson
8
- bindir: exe
8
+ bindir: bin
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
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.1.0
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.9
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: []