discogs-wrapper 2.2.2 → 2.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: db8498b9648d42f56633fb27c6d14c4acb2bc7ae
4
- data.tar.gz: dc3423bfadd46bcb985095afd9f4aea47f338f06
3
+ metadata.gz: 4654ad8d85f69444831ce09b6c2960ba2e598fed
4
+ data.tar.gz: fa37e9987c31c5763df41d822c0b3c08929b29e6
5
5
  SHA512:
6
- metadata.gz: afeef272acdae1b28b4e49e2c1ca50a2be7986404f07b8faa0d3466e025d505272d2d597b87902434af37335ca232d5c1796f71cbe78aeb5312cddbf209000ac
7
- data.tar.gz: 19ff741fff62b78442a0abd8e93e4716a1310a08eac8b27cc08a6524418a9b67a13c6e94da54f4f2b2555949b568fddfddec53173d05b27a3f098d124740c1fc
6
+ metadata.gz: 9b54ec185f2dcf2415721a7b88008f5a8a1c20860e8af6e456614ccb246855618cea55ca332744266bd14ccdb96cdd4c7aa5eadf9204d4c41bb8f8c979c12215
7
+ data.tar.gz: b1d6c9e76a7f988429386fae10ae74ee7c8140555058c2c0c9c5beee4c734fbfff42dd03425cbb2493da7506e2c09bfa7f9816381ec297777f2bc273f34b3abe
@@ -733,7 +733,7 @@ class Discogs::Wrapper
733
733
 
734
734
  if data != ""
735
735
  hash = JSON.parse(data)
736
- Hashie::Mash.new(hash)
736
+ Hashie::Mash.new(sanitize_hash(hash))
737
737
  else
738
738
  Hashie::Mash.new
739
739
  end
@@ -793,13 +793,41 @@ class Discogs::Wrapper
793
793
 
794
794
  # Stringifies keys and sorts.
795
795
  def prepare_hash(h)
796
+ result = Hash[
797
+ h.map do |k, v|
798
+ [k.to_s, v]
799
+ end
800
+ ]
801
+
802
+ result.sort
803
+ end
804
+
805
+ # Replaces known conflicting keys with safe names in a nested hash structure.
806
+ def sanitize_hash(hash)
807
+ conflicts = {"count" => "total"}
796
808
  result = {}
797
809
 
798
- h.each do |k, v|
799
- result[k.to_s] = v
810
+ for k, v in hash
811
+ safe_name = conflicts[k]
812
+
813
+ if safe_name
814
+ # BC: Temporary set original key for backwards-compatibility.
815
+ warn "[DEPRECATED]: The key '#{k}' has been replaced with '#{safe_name}'. When accessing, please use the latter. This message will be removed in the next major release."
816
+ result[k] = v
817
+ # End BC
818
+
819
+ result[safe_name] = v
820
+ k = safe_name
821
+ else
822
+ result[k] = v
823
+ end
824
+
825
+ if v.is_a?(Hash)
826
+ result[k] = sanitize_hash(result[k])
827
+ end
800
828
  end
801
829
 
802
- result.sort
830
+ result
803
831
  end
804
832
 
805
833
  def raise_unknown_resource(path="")
@@ -30,6 +30,15 @@ describe Discogs::Wrapper do
30
30
  expect(@release.master_id).to eq(5427)
31
31
  end
32
32
 
33
+ it "should have a community/rating attribute" do
34
+ expect(@release.community.rating).to be_instance_of(Hashie::Mash)
35
+ end
36
+
37
+ it "should have sanitized the rating count attribute" do
38
+ expect(@release.community.rating.total).to eq(91)
39
+ expect(@release.community.rating.count).to eq(2 + 1) # Original method - count returns number of key/value pairs. Plus one to be removed after backwards-compatibility fix has been removed.
40
+ end
41
+
33
42
  it "should have one or more extra artists" do
34
43
  expect(@release.extraartists).to be_instance_of(Hashie::Array)
35
44
  expect(@release.extraartists[0].id).to eq(239)
@@ -22,7 +22,12 @@ describe Discogs::Wrapper do
22
22
  expect(@user_folder.name).to eq("Uncategorized")
23
23
  end
24
24
 
25
- it "should have a count" do
25
+ it "should have sanitized count" do
26
+ expect(@user_folder.total).to eq(20)
27
+ expect(@user_folder.count).to eq(4 + 1) # Plus one to be removed after backwards-compatibility fix has been removed.
28
+ end
29
+
30
+ it "should have a backwards-compatible count" do
26
31
  expect(@user_folder[:count]).to eq(20)
27
32
  end
28
33
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discogs-wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Buntine
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-02-04 00:00:00.000000000 Z
12
+ date: 2017-03-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pry