tramway-api 0.3.0.1 → 0.4
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/app/controllers/tramway/api/v1/application_controller.rb +5 -0
- data/app/controllers/tramway/api/v1/users_controller.rb +1 -1
- data/app/serializers/tramway/api/v1/error_serializer.rb +50 -0
- data/config/initializers/active_model_serializers.rb +3 -0
- data/lib/tramway/api/version.rb +1 -1
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d64659e9b37eb052d82029e1ad7f7e3c9d892ffa299b969ae5b213818e8d961
|
4
|
+
data.tar.gz: bc1cf91766d49634ff7d9ca760c87f1217295104dfcf769c25106b3da9e9dcdc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31040cfd0eec04aa89691ddc107d5866e4fcf1c4c58110d381c882ddc0825d90806ef5fe2f87ca9b9660966953d0906f002753596cfbbf157eb54db3da7f9bd5
|
7
|
+
data.tar.gz: f31d6398c0b62b5d695c02578098029f55b6b62cf996b56e86e48a1c6d1f12d221a9b400d111b9c12f77541f85661da3ff511d4e29fcc12b85647b680dda0c28
|
@@ -2,6 +2,11 @@ module Tramway
|
|
2
2
|
module Api
|
3
3
|
module V1
|
4
4
|
class ApplicationController < ::Tramway::Api::ApplicationController
|
5
|
+
private
|
6
|
+
|
7
|
+
def render_errors_for(model)
|
8
|
+
render json: model, status: :unprocessable_entity, serializer: ::Tramway::Api::V1::ErrorSerializer
|
9
|
+
end
|
5
10
|
end
|
6
11
|
end
|
7
12
|
end
|
@@ -11,7 +11,7 @@ class Tramway::Api::V1::UsersController < ::Tramway::Api::V1::ApplicationControl
|
|
11
11
|
serialized_user = OpenStruct.new user_form.model.attributes.merge authentication_token: token
|
12
12
|
render json: serialized_user, status: :created
|
13
13
|
else
|
14
|
-
|
14
|
+
render_errors_for user_form
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Tramway::Api::V1::ErrorSerializer < ActiveModel::Serializer
|
4
|
+
# Based on https://github.com/rails-api/active_model_serializers/blob/master/lib/active_model/serializer/error_serializer.rb
|
5
|
+
# @return [Hash<field_name,Array<error_message>>]
|
6
|
+
def as_json
|
7
|
+
error_messages(object)
|
8
|
+
end
|
9
|
+
|
10
|
+
def success?
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def error_messages(object, path = []) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
17
|
+
error_messages = {}
|
18
|
+
|
19
|
+
object.errors.messages.each do |name, messages|
|
20
|
+
error_messages.merge!((path + [name]).join('/') => messages)
|
21
|
+
end
|
22
|
+
|
23
|
+
if object.model
|
24
|
+
object.model.errors.messages.each do |name, messages|
|
25
|
+
error_messages.merge!((path + [name]).join('/') => messages)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
if object.model
|
30
|
+
object.model.attributes.each do |attribute_key, attribute_value|
|
31
|
+
if attribute_value.is_a?(Reform::Form)
|
32
|
+
error_messages.merge!(error_messages(attribute_value, path + [attribute_key]))
|
33
|
+
elsif attribute_value.is_a?(Array)
|
34
|
+
attribute_value.each_with_index do |array_attribute_value, array_attribute_key|
|
35
|
+
next unless array_attribute_value.is_a?(Reform::Form)
|
36
|
+
|
37
|
+
error_messages.merge!(
|
38
|
+
error_messages(
|
39
|
+
array_attribute_value,
|
40
|
+
path + [attribute_key] + [array_attribute_key]
|
41
|
+
)
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
error_messages
|
49
|
+
end
|
50
|
+
end
|
data/lib/tramway/api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tramway-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.4'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Kalashnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: knock
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.9.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: active_model_serializers
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.10.5
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.10.5
|
41
55
|
description: Engine for api
|
42
56
|
email:
|
43
57
|
- kalashnikovisme@gmail.com
|
@@ -58,7 +72,9 @@ files:
|
|
58
72
|
- app/jobs/tramway/api/application_job.rb
|
59
73
|
- app/mailers/tramway/api/application_mailer.rb
|
60
74
|
- app/models/tramway/api/application_record.rb
|
75
|
+
- app/serializers/tramway/api/v1/error_serializer.rb
|
61
76
|
- app/views/layouts/tramway/api/application.html.erb
|
77
|
+
- config/initializers/active_model_serializers.rb
|
62
78
|
- config/routes.rb
|
63
79
|
- lib/tasks/tramway/api_tasks.rake
|
64
80
|
- lib/tramway/api.rb
|