sinatra-validations 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://img.shields.io/travis/pedrogimenez/sinatra-validations/master.svg)](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: []
|