respo 0.1.0 → 0.1.1

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: 81917378520ebf8e99b9c2a6d8fc62c0313061fcb19b5012f717583d9c3dacce
4
+ data.tar.gz: 322b6dd6752ace7b975c10d015a6978de7c551fca78a154cc610aeab091e7a92
5
5
  SHA512:
6
- metadata.gz: 4eba37671be469409b38ef5f6813741735ee01be5219855550ef0f56c24bc9dbe8616b68ebf1d21b4f4a062ce14cb1f566676311dfb196a9657085e157032190
7
- data.tar.gz: 7ec4d615f404d3fc4452cb0a1bea9f607c9113f04f92345e47ef87171194bc1d609b0653fe69dffee4f070dbee491a675aaf3c4028ee948a8f2a6c22174fe120
6
+ metadata.gz: 23c3e46aa8da329a8f0e2d0953a5bfd3b22d76a4295373a79421815263c3af5a02d96c3b973f7bca3acb682dbf2e1a7a1bc8a58debb4e397743dca011ed1b3ef
7
+ data.tar.gz: 16678820b65275079e94021b0737f6fd03382f9bf15fce28ea468f8c90ff482c9788a969fed92406b701f1aa68f50b2c6ccf873099836949b95656e00a251ec7
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/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,27 @@ module Respo
6
6
  str.split('_').collect(&:capitalize).join
7
7
  end
8
8
 
9
- def self.model_name(record)
9
+ def model_name(record)
10
10
  record.class.name.split('::').last
11
11
  end
12
+
13
+ def action_name(action_class)
14
+ action_class.class.name.split('::').last.downcase.to_sym
15
+ end
16
+
17
+ # NOTE: only for successes and errors
18
+ def self.singularize(str)
19
+ {
20
+ errors: 'error',
21
+ successes: 'success'
22
+ }[str.to_sym] || str
23
+ end
24
+
25
+ def self.pluralize(str)
26
+ {
27
+ error: 'errors',
28
+ success: 'successes'
29
+ }[str.to_sym] || str
30
+ end
12
31
  end
13
32
  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,14 +3,14 @@
3
3
  module Respo
4
4
  module Serializers
5
5
  module Blueprinter
6
- include Helpers
6
+ include Respo::Helpers
7
7
 
8
8
  def self.render(record, **args)
9
9
  serializer_constant(record).render(record, **args)
10
10
  end
11
11
 
12
- def serializer_constant(record)
13
- Object.const_get("#{model_name(record)}Blueprinter")
12
+ def self.serializer_constant(record)
13
+ Object.const_get("#{Respo::Helpers.model_name(record)}Blueprinter")
14
14
  end
15
15
  end
16
16
  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.1'
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,7 +1,7 @@
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.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miko Dagatan
@@ -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}")