arkaan 0.8.12 → 0.8.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/arkaan.rb +1 -0
- data/lib/arkaan/utils/controller.rb +26 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 322dc038e57c83ed444731f3ce872764dcf2d2b6
|
4
|
+
data.tar.gz: 81359044b199b30db67afbfcd4182a9352daf126
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 318e55d0c138f9af923633d0487365b0e362df2df0fc37f1dfb727f432ac0a30cc32e06967c5d7b767f9eef5007d7a573ea4c9612c5f9df8e55f0e46e63179cc
|
7
|
+
data.tar.gz: 90af48c1eba840737fed44e9885b2a3fd003e3b955cfd2b15665c38971129b8255676049d0718d5fc4459db1025fcf82f00a7eade04f438a86b67df263f49cde
|
data/lib/arkaan.rb
CHANGED
@@ -3,6 +3,7 @@ module Arkaan
|
|
3
3
|
# Base controller to handle the standard error when accessing the API.
|
4
4
|
# @author Vincent Courtois <courtois.vincenet@outlook.com>
|
5
5
|
class Controller < Sinatra::Base
|
6
|
+
register Sinatra::ConfigFile
|
6
7
|
|
7
8
|
before do
|
8
9
|
add_body_to_params
|
@@ -83,6 +84,31 @@ module Arkaan
|
|
83
84
|
splitted = request.env['sinatra.route'].split(' ')
|
84
85
|
return Arkaan::Monitoring::Route.where(verb: splitted.first.downcase, path: splitted.last).first
|
85
86
|
end
|
87
|
+
|
88
|
+
# Loads the errors configuration file from the config folder.
|
89
|
+
# @param file [String] send __FILE__
|
90
|
+
def load_errors_from(file)
|
91
|
+
config_file File.join(File.dirname(file), '..', 'config', 'errors.yml')
|
92
|
+
end
|
93
|
+
|
94
|
+
# Halts the application and creates the returned body from the parameters and the errors config file.
|
95
|
+
# @param status [Integer] the HTTP status to halt the application with.
|
96
|
+
# @param field [String] the value of the :value key in the returned JSON body, corresponding to the field in error.
|
97
|
+
# @param error [String] the name of the error affecing the field.
|
98
|
+
# @param suffix [String] the eventual suffix of the URL in the doc.
|
99
|
+
def custom_error(status, field, error, suffix: '')
|
100
|
+
url = settings.errors[field][error]
|
101
|
+
halt status, {status: status, field: field, error: error, docs: "#{url}#{suffix}"}.to_json
|
102
|
+
end
|
103
|
+
|
104
|
+
# Halts the application with a Bad Request error affecting a field of a model.
|
105
|
+
# @param instance [Mongoid::Document] the document having a field in error.
|
106
|
+
# @param suffix [String] the eventual suffix of the URL in the doc.
|
107
|
+
def model_error(instance, suffix: '')
|
108
|
+
field = instance.errors.messages.keys.first
|
109
|
+
error = instance.errors.messages[field].first
|
110
|
+
custom_error(400, field, error, suffix: suffix)
|
111
|
+
end
|
86
112
|
end
|
87
113
|
end
|
88
114
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arkaan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincent Courtois
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -178,6 +178,20 @@ dependencies:
|
|
178
178
|
- - '='
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: 2.0.1
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: sinatra-contrib
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - '='
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 2.0.1
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - '='
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 2.0.1
|
181
195
|
description: This gem holds the model layer for my table-top RPG games application.
|
182
196
|
email: courtois.vincent@outlook.com
|
183
197
|
executables: []
|