shaman 0.2.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 56009bb4e917c41ca2a67181cc50062f72f1c2c5
4
- data.tar.gz: 14e71533ad06decd4e7e46076e1b655036ede0c6
3
+ metadata.gz: b5147f164fcca5ef1169390c21ad6d57eddbe155
4
+ data.tar.gz: 45a2f1b2939950fb18325a2c33117c41e8540965
5
5
  SHA512:
6
- metadata.gz: 9050035da7eec06ad533d94506d44d0b90331781ab50ba1f232692a3eeca5855f8e3d16d2b18bb5f9e4ca13b40ac929ef50435131363ced00996114d2bd003ca
7
- data.tar.gz: cf3c0fcdd9da396c9195498d2945d463fade3a32c436904bc846af956beb2cdd88947ae70dc542709453287a157689d6c8fa81d1127b66ee808b025791396ae5
6
+ metadata.gz: b4c0f573a2c29875ce4d00c5a96ad6483c8a3c1a51a4627d5c8eb7c7ad90ab54462814d146dd7347c2f7d91a7dd2cc38bbbc904b80b624d5a968648b450b81e6
7
+ data.tar.gz: 63acb1ada0e6d1d4de81aebb1d5411091c4f3cc1827b4a3a61d080b1ad9301e89bb7d7ebcbdc5eb9a06fa0d9450340dd317d60ac3ed7ef7d2e3fbf5a2c1f9185
@@ -1,3 +1,3 @@
1
1
  class Shaman
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/shaman.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'shaman/version'
2
2
  require 'digest'
3
3
  require 'oj'
4
+ require 'rack'
4
5
  require 'active_support/core_ext/hash/conversions'
5
6
 
6
7
  class Shaman
@@ -30,20 +31,21 @@ class Shaman
30
31
  def parsed_json
31
32
  @parsed_json ||= Oj.load(body)
32
33
  rescue Oj::ParseError
33
- body
34
+ false
34
35
  end
35
36
 
36
37
  def parsed_xml
37
38
  @parsed_xml ||= Hash.from_xml(body)
38
39
  rescue REXML::ParseException
39
- body
40
+ false
41
+ end
42
+
43
+ def parsed_form
44
+ Rack::Utils.parse_nested_query(body)
40
45
  end
41
46
 
42
47
  def prepped_body
43
- return body if valid_hash?
44
- return parsed_json if valid_json?
45
- return parsed_xml if valid_xml?
46
- body
48
+ parsed_json or parsed_xml or parsed_form
47
49
  end
48
50
 
49
51
  def sorted_hash(obj)
data/shaman.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "oj"
22
+ spec.add_dependency "rack"
22
23
  spec.add_dependency "activesupport"
23
24
 
24
25
  spec.add_development_dependency "bundler", "~> 1.6"
@@ -1,4 +1,3 @@
1
- require 'oj'
2
1
  require 'shaman'
3
2
 
4
3
  describe Shaman do
@@ -42,8 +41,8 @@ describe Shaman do
42
41
  end
43
42
  context "when request is not valid JSON"
44
43
  let(:body) { %q[{foo] }
45
- it "creates a sha of the body" do
46
- expect(subject).to eq('594b979db0ddeee4bed8d10e9a2d21b1')
44
+ it "creates a sha of the form encoded parsed body" do
45
+ expect(subject).to eq('c22147b34317edaa3ab976ae1bff8712')
47
46
  end
48
47
 
49
48
  context "with nested valid JSON" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shaman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Cooper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-25 00:00:00.000000000 Z
11
+ date: 2014-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rack
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: activesupport
29
43
  requirement: !ruby/object:Gem::Requirement