avski-common-utils 0.1.3 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3bbc327da369286e1182dc9db2754eda319e5a2f
4
- data.tar.gz: e1504df4af264dd37eb05cc025499e5c29bc3fb8
3
+ metadata.gz: 3de3a70af38aa6ba4e6288f1ca8513fca116f26f
4
+ data.tar.gz: '005393524b1478e5655dc6dcfd06b148cd44436a'
5
5
  SHA512:
6
- metadata.gz: 5738ddec889dbb203304507c3016cd1cece283323143a498882d14325e41035b2869c9eee59ec40b9ac9eb3db6277806a24717c729541a886f911e7c75320896
7
- data.tar.gz: 54f2d31339039f3fb81e2fcfffa620de80d3c862d984c2833601f6f78aba9ed9b2b112ad8147641ca315a993bf4b9fb1208b09238d3ff8ff57c075b11d27a970
6
+ metadata.gz: a5c7dda7be367a078bc893fb20083a8e086c4c02cb331578b257e7f1dd9ac2e3447c86e1b7eacba7393cd72eebff9adb8ee6c6bf80566610be6820fd380582a6
7
+ data.tar.gz: 2687c3f49c6f5ed996ec1c7efe0d46df1f847bc9911e16d02bd372db45ccb0463aac4df8d6554107b7f87ce4e4a076d0d18d8898e39ecb812e9ee49130a9b8bd
data/Gemfile CHANGED
@@ -1,5 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem 'json'
4
+
3
5
  # Specify your gem's dependencies in avski-common-utils.gemspec
4
6
  gemspec
5
7
 
@@ -0,0 +1,41 @@
1
+ require 'json'
2
+
3
+ module Avski
4
+ module Common
5
+ module Exceptions
6
+
7
+ # @class [UnknownFieldException]
8
+ class UnknownFieldException < StandardError
9
+ attr_reader :status, :message, :data, :code
10
+
11
+ def initialize(message, status = 400, code = 0, data = {})
12
+ @status = status
13
+ @message = message
14
+ @data = data
15
+ @code = code
16
+ end
17
+
18
+ #
19
+ # Convert Exception contents to a Json string. All attributes must
20
+ # be Json serializable.
21
+ def to_json
22
+ JSON.generate(to_hash)
23
+ end
24
+
25
+ def to_hash
26
+ {status: @status, message: @message, code: @code, data: @data}
27
+ end
28
+
29
+ def to_response
30
+ [@status, to_json]
31
+ end
32
+ end
33
+
34
+ # @class [EmptyFieldException]
35
+ class EmptyFieldException < UnknownFieldException; end
36
+
37
+ # @class [NullFieldException]
38
+ class NullFieldException < UnknownFieldException; end
39
+ end
40
+ end
41
+ end
@@ -1,10 +1,15 @@
1
1
  require 'avski/common/utils/version'
2
+ require 'avski/common/exceptions'
3
+
4
+ include Avski::Common::Exceptions
2
5
 
3
6
  module Avski
4
7
  module Common
5
8
  module Utils
9
+
6
10
  # Utility methods for Hash manipulation
7
11
  module Hash
12
+
8
13
  # Convert Hash string keys to symbol keys
9
14
  #
10
15
  # @param [Hash] hash
@@ -12,7 +17,7 @@ module Avski
12
17
  def self.symbolize_keys(hash)
13
18
  hash.inject({}){ |memo, (k, v)|
14
19
  memo[k.to_sym] = v
15
- memo[k.to_sym] = symbolize_keys v if v.class.to_s.eql? 'Hash'
20
+ memo[k.to_sym] = symbolize_keys v if v.class.eql? ::Hash
16
21
  memo
17
22
  }
18
23
  end
@@ -24,7 +29,7 @@ module Avski
24
29
  def self.symbolize_keys!(hash)
25
30
  new_hash = hash.inject({}){ |memo, (k, v)|
26
31
  memo[k.to_sym] = v
27
- memo[k.to_sym] = symbolize_keys v if v.class.to_s.eql? 'Hash'
32
+ memo[k.to_sym] = symbolize_keys v if v.class.eql? ::Hash
28
33
  memo
29
34
  }
30
35
  hash.replace new_hash
@@ -48,6 +53,29 @@ module Avski
48
53
  hash.select { |k, v| keys.include?(k) }
49
54
  end
50
55
  end
56
+
57
+ # Utility methods for Validation
58
+ module Validation
59
+
60
+ # Check if fields used in method params have their values
61
+ # empty or keys are missing
62
+ # @param [Array[Symbol]] required_fields array of symbols
63
+ # @param [Object] params
64
+ def self.check_fields(required_fields, params)
65
+ required_fields, missing, empty, null = required_fields, [], [], []
66
+ required_fields.each { |key|
67
+ missing.push(key) unless params.keys.include?(key)
68
+ empty.push(key) if params[key.to_sym].eql?('')
69
+ null.push(key) if params[key.to_sym].nil?
70
+ }
71
+
72
+ raise UnknownFieldException.new("Missing field(s) -> #{missing.join(', ')}.", 400) if missing.length > 0
73
+
74
+ raise EmptyFieldException.new("Empty field(s) -> #{empty.join(', ')}.", 400) if empty.length > 0
75
+
76
+ raise NullFieldException.new("Null field(s) -> #{null.join(', ')}.", 400) if null.length > 0
77
+ end
78
+ end
51
79
  end
52
80
  end
53
81
  end
@@ -1,7 +1,7 @@
1
1
  module Avski
2
2
  module Common
3
3
  module Utils
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.4'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avski-common-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felipe Rodrigues Michetti
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-08 00:00:00.000000000 Z
11
+ date: 2017-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -70,6 +70,7 @@ files:
70
70
  - avski-common-utils.gemspec
71
71
  - bin/console
72
72
  - bin/setup
73
+ - lib/avski/common/exceptions.rb
73
74
  - lib/avski/common/utils.rb
74
75
  - lib/avski/common/utils/version.rb
75
76
  homepage: http://www.avski.com.br