respo 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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}")