respo 0.1.0 → 0.1.3

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: 360f520b96573d0881bafdad85b791b5a47b635104bb6ff1b4721ca48b3c74e6
4
- data.tar.gz: ad3aaee8fefe989bc323d5966fdf7ba7fd394bc298fba86c10f0fd1dc86a22a5
3
+ metadata.gz: 59eb9da4131f7dcd0c407605e6296e3d37a547b76d144aaf40f7260062711660
4
+ data.tar.gz: fc9ec151ea596d644d22bbec4103369f5cbf3788debcca598c7b98282c5c3218
5
5
  SHA512:
6
- metadata.gz: 4eba37671be469409b38ef5f6813741735ee01be5219855550ef0f56c24bc9dbe8616b68ebf1d21b4f4a062ce14cb1f566676311dfb196a9657085e157032190
7
- data.tar.gz: 7ec4d615f404d3fc4452cb0a1bea9f607c9113f04f92345e47ef87171194bc1d609b0653fe69dffee4f070dbee491a675aaf3c4028ee948a8f2a6c22174fe120
6
+ metadata.gz: aec34451be9151cb3230c939f63b26f7cb3fbd050c96e657d293348ec37cbbdd7468eba8172d121bfce591c4a50b0c295d61b9bad8adc6ea3d576d24f9b25702
7
+ data.tar.gz: 874f077329698902f83f9b52fe16bb3068b2aee937fa06ec708cc7d5951c0090dfab04725047a6a07e147137dcf5270a90c53916a8b0275bd4873d2ece791537
data/Gemfile CHANGED
@@ -6,8 +6,8 @@ source 'https://rubygems.org'
6
6
  gemspec
7
7
 
8
8
  gem 'activerecord'
9
+ gem 'blueprinter'
9
10
  gem 'pry'
10
11
  gem 'rake', '~> 13.0'
11
12
  gem 'rspec', '~> 3.0'
12
13
  gem 'rubocop', '~> 1.21'
13
- gem 'blueprinter'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- respo (0.1.0)
4
+ respo (0.1.1)
5
5
  blueprinter
6
6
 
7
7
  GEM
data/lib/respo/base.rb CHANGED
@@ -7,7 +7,7 @@ require_relative 'configuration'
7
7
  require_relative 'respo_error'
8
8
  require_relative 'serializers/blueprinter'
9
9
  require_relative 'response'
10
- require_relative 'success/base'
10
+ require_relative 'successes/base'
11
11
  require_relative 'errors/base'
12
12
 
13
13
  module Respo
@@ -18,6 +18,10 @@ module Respo
18
18
  success: :ok,
19
19
  error: :bad_request
20
20
  },
21
+ show: {
22
+ success: :ok,
23
+ error: :bad_request
24
+ },
21
25
  new: {
22
26
  success: :ok,
23
27
  error: :bad_request
@@ -3,12 +3,14 @@
3
3
  module Respo
4
4
  module Errors
5
5
  class Base < Response
6
+ include Helpers
7
+
6
8
  def call
7
9
  { json: { errors: @record.errors.full_messages }, status: status_code }
8
10
  end
9
11
 
10
12
  def status_code
11
- :unprocessable_entity
13
+ Respo::Constants::STATUSES.dig(action_name(self), :error).to_sym
12
14
  end
13
15
  end
14
16
  end
@@ -3,9 +3,6 @@
3
3
  module Respo
4
4
  module Errors
5
5
  class Show < Respo::Errors::Base
6
- def status_code
7
- :not_found
8
- end
9
6
  end
10
7
  end
11
8
  end
data/lib/respo/helpers.rb CHANGED
@@ -6,8 +6,23 @@ module Respo
6
6
  str.split('_').collect(&:capitalize).join
7
7
  end
8
8
 
9
- def self.model_name(record)
10
- record.class.name.split('::').last
9
+ def action_name(action_class)
10
+ action_class.class.name.split('::').last.downcase.to_sym
11
+ end
12
+
13
+ # NOTE: only for successes and errors
14
+ def self.singularize(str)
15
+ {
16
+ errors: 'error',
17
+ successes: 'success'
18
+ }[str.to_sym] || str
19
+ end
20
+
21
+ def self.pluralize(str)
22
+ {
23
+ error: 'errors',
24
+ success: 'successes'
25
+ }[str.to_sym] || str
11
26
  end
12
27
  end
13
28
  end
@@ -28,7 +28,7 @@ module Respo
28
28
 
29
29
  def serializer
30
30
  name = camelize(Respo.configuration.serializer.to_s)
31
- @serializer ||= Object.const_get("Serializers::#{name}")
31
+ @serializer ||= Object.const_get("Respo::Serializers::#{name}")
32
32
  end
33
33
  end
34
34
  end
@@ -3,15 +3,18 @@
3
3
  module Respo
4
4
  module Serializers
5
5
  module Blueprinter
6
- include Helpers
7
-
8
6
  def self.render(record, **args)
9
7
  serializer_constant(record).render(record, **args)
10
8
  end
11
9
 
12
- def serializer_constant(record)
10
+ def self.serializer_constant(record)
13
11
  Object.const_get("#{model_name(record)}Blueprinter")
14
12
  end
13
+
14
+ def self.model_name(record)
15
+ model_name = record.class.name
16
+ record.is_a?(Array) ? record[0].class.name : model_name
17
+ end
15
18
  end
16
19
  end
17
20
  end
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
-
5
3
  module Respo
6
- module Success
4
+ module Successes
7
5
  class Base < Response
8
6
  def initialize(record, view: nil, root: nil)
9
7
  super(record, view: view, root: root)
@@ -20,11 +18,7 @@ module Respo
20
18
  end
21
19
 
22
20
  def status_code
23
- :ok
24
- end
25
-
26
- def action_name
27
- this.class.name.split('::').last
21
+ Respo::Constants::STATUSES.dig(action_name(self), :success).to_sym
28
22
  end
29
23
  end
30
24
  end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Respo
4
- module Success
5
- class Destroy < Respo::Success::Base
4
+ module Successes
5
+ class Destroy < Respo::Successes::Base
6
6
  def data
7
7
  "Deleted #{record_name} #{record}"
8
8
  end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Respo
4
- module Success
5
- class Index < Respo::Success::Base
4
+ module Successes
5
+ class Index < Respo::Successes::Base
6
6
  end
7
7
  end
8
8
  end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Respo
4
- module Success
5
- class Show < Respo::Success::Base
4
+ module Successes
5
+ class Show < Respo::Successes::Base
6
6
  end
7
7
  end
8
8
  end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Respo
4
- module Success
5
- class Update < Respo::Success::Base
4
+ module Successes
5
+ class Update < Respo::Successes::Base
6
6
  end
7
7
  end
8
8
  end
data/lib/respo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Respo
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.3'
5
5
  end
data/lib/respo.rb CHANGED
@@ -1,8 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'initializer'
4
3
  require_relative 'respo/base'
5
4
 
6
5
  module Respo
7
- class Error < StandardError; end
6
+ include Helpers
7
+
8
+ def self.method_missing(method, *args)
9
+ action, status = method.to_s.split('_')
10
+
11
+ return 'No Method' unless %w[success error].include?(status)
12
+
13
+ klass_name = "Respo::#{Helpers.pluralize(status).capitalize}::#{action.capitalize}"
14
+ klass = Object.const_get(klass_name)
15
+ klass.call(args)
16
+ end
8
17
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: respo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miko Dagatan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-11 00:00:00.000000000 Z
11
+ date: 2022-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -111,7 +111,6 @@ files:
111
111
  - LICENSE.txt
112
112
  - README.md
113
113
  - Rakefile
114
- - lib/initializer.rb
115
114
  - lib/respo.rb
116
115
  - lib/respo/base.rb
117
116
  - lib/respo/configuration.rb
@@ -124,11 +123,11 @@ files:
124
123
  - lib/respo/respo_error.rb
125
124
  - lib/respo/response.rb
126
125
  - lib/respo/serializers/blueprinter.rb
127
- - lib/respo/success/base.rb
128
- - lib/respo/success/destroy.rb
129
- - lib/respo/success/index.rb
130
- - lib/respo/success/show.rb
131
- - lib/respo/success/update.rb
126
+ - lib/respo/successes/base.rb
127
+ - lib/respo/successes/destroy.rb
128
+ - lib/respo/successes/index.rb
129
+ - lib/respo/successes/show.rb
130
+ - lib/respo/successes/update.rb
132
131
  - lib/respo/version.rb
133
132
  - sig/respo.rbs
134
133
  homepage: https://rubygems.org/gems/respo
data/lib/initializer.rb DELETED
@@ -1,4 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'i18n'
4
- I18n.load_path += Dir.glob("#{File.dirname(__FILE__)}/lib/locales/*.{rb,yml}")