hanami-utils 0.9.0 → 0.9.1

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: 93e8362df57ad7209539ecd8383ee1f1b60ea68e
4
- data.tar.gz: 854db004fcc6912bef61404d58feda11e6589d2e
3
+ metadata.gz: 147943727aa2419fd62308b8e482f1386f9790f8
4
+ data.tar.gz: 9a2db890e7da1a930a3adb14cffac52ff9affa33
5
5
  SHA512:
6
- metadata.gz: f30cb4ccc8c96a99808534957ec785f8036cd1baf9362bca8e9f8f15cfad044406c5bb34820b6c6b64faf4cc20e3cbd6ef36e08193754adf2c6980ef9a6f5862
7
- data.tar.gz: 734d3c0994e2ccba6e9176c497c17c8093693da2b434dbd2476383128a57f83819c7f63382ba39a22057cbd6b72361dd6ec9e51a4989d0c5d070d3c2837f7b1c
6
+ metadata.gz: 423676170211e4a123007b863e15393de3ca0e603113160a12d8e39143b08cd49a6d68a0089a20f100a83108a280ed466e1008cae601e0a2d99312e33b2487fa
7
+ data.tar.gz: 1c81a606b3bfbee8d3426f36db95662563861c693d5075928a2c12eae1f736dba65bafdf27b441f8963d4ef3f195d157dd615a4a27aae750dccaf830b079d0d9
data/CHANGELOG.md CHANGED
@@ -1,6 +1,17 @@
1
1
  # Hanami::Utils
2
2
  Ruby core extentions and class utilities for Hanami
3
3
 
4
+ ## v0.9.1 - 2016-11-18
5
+ ### Added
6
+ - [Luca Guidi] Introduced `Utils::Json.parse` and `.generate`
7
+
8
+ ### Fixed
9
+ - [Luca Guidi] Ensure `Utils::Json` parsing to not eval untrusted input
10
+
11
+ ### Changed
12
+ - [Luca Guidi] Deprecated `Utils::Json.load` in favor of `.parse`
13
+ - [Luca Guidi] Deprecated `Utils::Json.dump` in favor of `.generate`
14
+
4
15
  ## v0.9.0 - 2016-11-15
5
16
  ### Added
6
17
  – [Luca Guidi] Introduced `Utils.require!` to recursively require Ruby files with an order that is consistent across platforms
@@ -4,6 +4,8 @@ rescue LoadError
4
4
  require 'json'
5
5
  end
6
6
 
7
+ require 'hanami/utils/deprecation'
8
+
7
9
  module Hanami
8
10
  module Utils
9
11
  # JSON wrapper
@@ -13,9 +15,41 @@ module Hanami
13
15
  #
14
16
  # @since 0.8.0
15
17
  module Json
18
+ # MultiJson adapter
19
+ #
20
+ # @since 0.9.1
21
+ # @api private
22
+ class MultiJsonAdapter
23
+ # @since 0.9.1
24
+ # @api private
25
+ def parse(payload)
26
+ MultiJson.load(payload)
27
+ end
28
+
29
+ # FIXME: remove this alias, when Hanami::Utils::Json.load will be removed
30
+ #
31
+ # @since 0.9.1
32
+ # @api private
33
+ alias load parse
34
+
35
+ # FIXME: remove this method, when Hanami::Utils::Json.dump will be removed
36
+ #
37
+ # @since 0.9.1
38
+ # @api private
39
+ def dump(object)
40
+ generate(object)
41
+ end
42
+
43
+ # @since 0.9.1
44
+ # @api private
45
+ def generate(object)
46
+ MultiJson.dump(object)
47
+ end
48
+ end
49
+
16
50
  # rubocop:disable Style/ClassVars
17
51
  if defined?(MultiJson)
18
- @@engine = MultiJson
52
+ @@engine = MultiJsonAdapter.new
19
53
  ParserError = MultiJson::ParseError
20
54
  else
21
55
  @@engine = ::JSON
@@ -32,10 +66,26 @@ module Hanami
32
66
  # @raise [Hanami::Utils::Json::ParserError] if the paylod is invalid
33
67
  #
34
68
  # @since 0.8.0
69
+ #
70
+ # @deprecated Use {.parse} instead
35
71
  def self.load(payload)
72
+ Hanami::Utils::Deprecation.new("`Hanami::Utils::Json.load' is deprecated, please use `Hanami::Utils::Json.parse'")
36
73
  @@engine.load(payload)
37
74
  end
38
75
 
76
+ # Parse the given JSON paylod
77
+ #
78
+ # @param payload [String] a JSON payload
79
+ #
80
+ # @return [Object] the result of the loading process
81
+ #
82
+ # @raise [Hanami::Utils::Json::ParserError] if the paylod is invalid
83
+ #
84
+ # @since 0.9.1
85
+ def self.parse(payload)
86
+ @@engine.parse(payload)
87
+ end
88
+
39
89
  # Dump the given object into a JSON payload
40
90
  #
41
91
  # @param object [Object] any object
@@ -43,9 +93,23 @@ module Hanami
43
93
  # @return [String] the result of the dumping process
44
94
  #
45
95
  # @since 0.8.0
96
+ #
97
+ # @deprecated Use {.generate} instead
46
98
  def self.dump(object)
99
+ Hanami::Utils::Deprecation.new("`Hanami::Utils::Json.dump' is deprecated, please use `Hanami::Utils::Json.generate'")
47
100
  @@engine.dump(object)
48
101
  end
102
+
103
+ # Generate a JSON document from the given object
104
+ #
105
+ # @param object [Object] any object
106
+ #
107
+ # @return [String] the result of the dumping process
108
+ #
109
+ # @since 0.9.1
110
+ def self.generate(object)
111
+ @@engine.generate(object)
112
+ end
49
113
  end
50
114
  end
51
115
  end
@@ -3,6 +3,6 @@ module Hanami
3
3
  # Defines the version
4
4
  #
5
5
  # @since 0.1.0
6
- VERSION = '0.9.0'.freeze
6
+ VERSION = '0.9.1'.freeze
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-11-15 00:00:00.000000000 Z
13
+ date: 2016-11-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  version: '0'
97
97
  requirements: []
98
98
  rubyforge_project:
99
- rubygems_version: 2.6.4
99
+ rubygems_version: 2.6.8
100
100
  signing_key:
101
101
  specification_version: 4
102
102
  summary: Ruby core extentions and Hanami utilities