sinatra-validations 1.0.0
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 +7 -0
- data/README.md +41 -0
- data/lib/sinatra/validations.rb +63 -0
- metadata +75 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c5932041f8855fbbbe9b79f215035e2c9b813ba2
|
4
|
+
data.tar.gz: 5d3f34f375e466c8debcd7cdf08bae5517bfb110
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9bd9fb4381f522980c740be4013450979863ab5d40cda0d385a322961a51d59ef4fe08bbeb79b5bc34f14492674e5b5f798b2388b0d182f085b5e7babc6a9672
|
7
|
+
data.tar.gz: 958a94a3a734292fecfa12b21b29ae32ce7c8fdbc79a4301fae739975777309f04fe0857a4bbbeac1c069226d0690d5f8f8aa1d5ecfd2f836de3d904ab3e652e
|
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Sinatra validations
|
2
|
+
|
3
|
+
[](https://travis-ci.org/pedrogimenez/sinatra-validations)
|
4
|
+
|
5
|
+
I use this library to validate parameters in my Sinatra applications.
|
6
|
+
|
7
|
+
It supports defaults and type coercion.
|
8
|
+
|
9
|
+
## Install
|
10
|
+
|
11
|
+
```bash
|
12
|
+
$ gem "sinatra-validations"
|
13
|
+
```
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
require "sinatra/validations"
|
19
|
+
|
20
|
+
class Api < Sinatra::Base
|
21
|
+
helpers Sinatra::Validations
|
22
|
+
|
23
|
+
get "/users" do
|
24
|
+
validate params, :sort, type: String, default: "desc"
|
25
|
+
validate params, :limit, type: Integer, default: 30
|
26
|
+
validate params, :filter_by, type: String, default: nil
|
27
|
+
|
28
|
+
# ...
|
29
|
+
end
|
30
|
+
|
31
|
+
get "/users/:user" do
|
32
|
+
validate params, :user, type: String
|
33
|
+
|
34
|
+
# ...
|
35
|
+
end
|
36
|
+
end
|
37
|
+
```
|
38
|
+
|
39
|
+
## Documentation
|
40
|
+
|
41
|
+
Read the tests.
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require "sinatra/base"
|
2
|
+
|
3
|
+
module Sinatra
|
4
|
+
module Validations
|
5
|
+
extend self
|
6
|
+
|
7
|
+
InvalidParameter = Class.new(RuntimeError)
|
8
|
+
|
9
|
+
def validate(parameters, name, options = {})
|
10
|
+
default = options[:default]
|
11
|
+
type = options[:type]
|
12
|
+
cast = true
|
13
|
+
|
14
|
+
if options.key?(:cast)
|
15
|
+
cast = options[:cast]
|
16
|
+
end
|
17
|
+
|
18
|
+
param = parameters[name]
|
19
|
+
|
20
|
+
if !param
|
21
|
+
if options.key?(:default)
|
22
|
+
return param = parameters[name] = default
|
23
|
+
end
|
24
|
+
|
25
|
+
raise InvalidParameter.new("Missing required parameter #{name}")
|
26
|
+
end
|
27
|
+
|
28
|
+
if cast
|
29
|
+
if type == Integer
|
30
|
+
param = parameters[name] = cast_into_integer(param)
|
31
|
+
elsif type == String
|
32
|
+
param = parameters[name] = cast_into_string(param)
|
33
|
+
else
|
34
|
+
raise InvalidParameter.new("Unsupported casting for #{name}")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
if type && !param.is_a?(type)
|
39
|
+
raise InvalidParameter.new("Wrong type for #{name}. Expected #{type}, got #{param.class}")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def cast_into_integer(param)
|
46
|
+
begin
|
47
|
+
Integer(param)
|
48
|
+
rescue
|
49
|
+
raise InvalidParameter.new("Unable to convert #{name} into Integer")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def cast_into_string(param)
|
54
|
+
begin
|
55
|
+
String(param)
|
56
|
+
rescue
|
57
|
+
raise InvalidParameter.new("Unable to convert #{name} into String")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
private_class_method :cast_into_integer, :cast_into_string
|
62
|
+
end
|
63
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sinatra-validations
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pedro Gimenez
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-05-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sinatra
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Validation of params for Sinatra
|
42
|
+
email:
|
43
|
+
- me@pedro.bz
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files:
|
47
|
+
- README.md
|
48
|
+
files:
|
49
|
+
- README.md
|
50
|
+
- lib/sinatra/validations.rb
|
51
|
+
homepage: http://github.com/pedrogimenez/sinatra-validations
|
52
|
+
licenses:
|
53
|
+
- MIT
|
54
|
+
metadata: {}
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 2.1.0
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
requirements: []
|
70
|
+
rubyforge_project:
|
71
|
+
rubygems_version: 2.6.3
|
72
|
+
signing_key:
|
73
|
+
specification_version: 4
|
74
|
+
summary: Validation of params for Sinatra
|
75
|
+
test_files: []
|