rtoken 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/rtoken.rb +83 -0
  2. metadata +55 -0
data/lib/rtoken.rb ADDED
@@ -0,0 +1,83 @@
1
+ # Generates Random Tokens for general purposes.
2
+ #
3
+ # @example Generate 8 length token
4
+ # RToken.rtoken #=> Random sequence 8 chars
5
+ #
6
+ # @example Generate 10 length token
7
+ # RToken.rtoken(:size => 10) #=> Random sequence 10 chars
8
+ #
9
+ # @example Generate 16 length token with special chars
10
+ # RToken.rtoken(:size => 16, :special_chars => '!@#$%%&')
11
+ #
12
+ # @example Generate 32 length token with uppercase chars
13
+ # RToken.rtoken(:size => 32, :uppercase => true)
14
+ #
15
+ # @see RToken.rtoken
16
+ class RToken
17
+
18
+ UPPER_ALPHA_CHARS = ('A'..'Z').to_a.freeze
19
+ LOWER_ALPHA_CHARS = ('a'..'z').to_a.freeze
20
+
21
+ NUMERIC_CHARS = ('0'..'9').to_a.freeze
22
+
23
+ DEAFULT_OPTIONS = {
24
+ :size => 8,
25
+ :uppercase => false,
26
+ :lowercase => false,
27
+ :numeric => true,
28
+ :special_cars => ''
29
+ }.freeze
30
+
31
+ # Creates an instance of RToken and handle the options for later calls
32
+ # It is useful when you have many settings and don't want to repeat them
33
+ #
34
+ # @example Generates tokens with special chars
35
+ # rtkn = RToken.new(:special_chars => '+-*/')
36
+ # # All next calls keeps the same options
37
+ # rtkn.rtoken #=> Same as Rtoken.rtoken(:special_chars => '+-*/')
38
+ #
39
+ # @param [Hash] opts same as rtoken
40
+ def initialize(opts=nil)
41
+ @options = opts || {}
42
+ end
43
+
44
+ # Generates a token with previews options
45
+ #
46
+ # @see RToken.rtoken
47
+ #
48
+ # @param [Hash] opts options that will be merged to the predefined on initialize
49
+ # @return [String] token
50
+ def rtoken(opts=nil)
51
+ RToken.rtoken @options.merge(opts || {})
52
+ end
53
+
54
+ # Generates a token
55
+ #
56
+ # @param [Hash] opts The options to configure the token generator
57
+ # @param opts [Fixnum] :size The size of token string. Default 8
58
+ # @param opts :uppercase if true all chars will be replaced by uppercase. Default false
59
+ # @param opts :lowercase if true all chars will be replaced by lowercase. Has priority against :uppercase definition. Default false
60
+ # @param opts :numeric if true include numeric chars ('0'..'9') on tokens. Default true
61
+ # @param opts [String] :special_chars special chars to be include on token generation, by default include alphanumeric chars
62
+ # @return [String] token
63
+ def self.rtoken(opts=nil)
64
+ options = DEAFULT_OPTIONS.merge(opts || {})
65
+ size = options[:size] || 8
66
+ # Merge available chars
67
+ chars_array = options[:numeric] ? Array.new(NUMERIC_CHARS) : []
68
+ if options[:uppercase] || options[:lowercase]
69
+ chars_array += (options[:lowercase] ? LOWER_ALPHA_CHARS : UPPER_ALPHA_CHARS)
70
+ else
71
+ chars_array += LOWER_ALPHA_CHARS
72
+ chars_array += UPPER_ALPHA_CHARS
73
+ end
74
+ chars_array += options[:special_chars].split('') if options[:special_chars]
75
+ chars_array_size = chars_array.size
76
+ # creates token
77
+ token_chars = Array.new(size)
78
+ size.times do |i|
79
+ token_chars[i] = chars_array[rand(chars_array_size)]
80
+ end
81
+ token_chars.join
82
+ end
83
+ end
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rtoken
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Thiago Lewin
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2012-03-02 00:00:00 Z
14
+ dependencies: []
15
+
16
+ description: "RToken generates random tokens, of any length, for multiple purposes, ex: web urls, data identification, etc."
17
+ email: thiago_lewin@yahoo.com.br
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib/rtoken.rb
26
+ homepage: https://github.com/tlewin/rtoken
27
+ licenses: []
28
+
29
+ post_install_message:
30
+ rdoc_options: []
31
+
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: "0"
40
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ requirements: []
47
+
48
+ rubyforge_project:
49
+ rubygems_version: 1.8.11
50
+ signing_key:
51
+ specification_version: 3
52
+ summary: Simple Random Token Generator
53
+ test_files: []
54
+
55
+ has_rdoc: