salesforce_record 1.0.0 → 1.1.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: 6ad16d2a059b16aff6a15262ab0552d83d3d12f9
4
- data.tar.gz: 48123ec4187661eae7f4cd93c20bebbd9e5c4ead
3
+ metadata.gz: a953ac9865b62a867d452be1cd9753b12aef5d2f
4
+ data.tar.gz: 1c4766debc25075c6dc6eff5d968c3e736e87ec5
5
5
  SHA512:
6
- metadata.gz: feea79ba0c8a43da14fa76a52c2cfc253357be6ab6d480f5b3373cea59fa7f99a4f24979e244687a693e1435cbdad23a31cbadf087929f53a182e2015f29677b
7
- data.tar.gz: 577b8ab8cec74c6834298afdb5173443d3b8c3d4f9f03dda8f1d44ca58623eb18163bba24ca5e52a9f5711777aa82ff415b2d8360f2caf990e67bc3d6884d998
6
+ metadata.gz: 2be6072868e2b2c6d38aa7df5ef724d569d122ed4f15fcb38947f62a2deceebaeb0d288bf66ee0e4d6d2a59618ea6ecab84c66c55420f30fb15fe87fc52c678a
7
+ data.tar.gz: 0b0e764afb74998afffa6a64e29426b1572d15f48ef359ad2b97dcbc6db577e423b4a041401ffb6e23e46bd059feaf3281560234a892fe2a2f2b51c90f7789c1
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SalesforceRecord
2
2
 
3
- [![Build Status](https://travis-ci.org/mru2/salesforce_record.png?branch=master)](https://travis-ci.org/mru2/salesforce_record) [![Coverage Status](https://coveralls.io/repos/mru2/salesforce_record/badge.png)](https://coveralls.io/r/mru2/salesforce_record) [![Code Climate](https://codeclimate.com/github/mru2/salesforce_record.png)](https://codeclimate.com/github/mru2/salesforce_record)
3
+ [![Gem Version](https://badge.fury.io/rb/salesforce_record.png)](http://badge.fury.io/rb/salesforce_record) [![Build Status](https://travis-ci.org/mru2/salesforce_record.png?branch=master)](https://travis-ci.org/mru2/salesforce_record) [![Coverage Status](https://coveralls.io/repos/mru2/salesforce_record/badge.png)](https://coveralls.io/r/mru2/salesforce_record) [![Code Climate](https://codeclimate.com/github/mru2/salesforce_record.png)](https://codeclimate.com/github/mru2/salesforce_record)
4
4
 
5
5
  ActiveRecord-like mixin for querying, fetching and updating Salesforce models
6
6
 
@@ -63,13 +63,13 @@ module SalesforceRecord
63
63
  end
64
64
 
65
65
  # Parse fields coming from salesforce
66
- def parse_salesforce_fields(sf_fields)
67
- {}.tap do |parsed_fields|
68
- sf_fields.each do |name, value|
69
- parsed_field = parse_salesforce_field(name, value) unless value.nil?
70
- parsed_fields.merge! parsed_field if !parsed_field.nil?
71
- end
66
+ def parse_salesforce_fields(sf_response)
67
+ res = {}
68
+ self.salesforce_fields.each do |_, field|
69
+ value = field.find_value_in(sf_response)
70
+ res[field.local_name] = value if !value.nil?
72
71
  end
72
+ res
73
73
  end
74
74
 
75
75
  # Encode fields for salesforce
@@ -82,18 +82,6 @@ module SalesforceRecord
82
82
  end
83
83
  end
84
84
 
85
- # Parse a field coming from salesforce (type)
86
- def parse_salesforce_field(name, value)
87
- # If existing, parse it depending on type
88
- if (field = get_field name)
89
- { field.local_name => field.parse(value) }
90
-
91
- # Else, try to find if it is an alias
92
- else
93
- find_matching_alias(name => value)
94
- end
95
- end
96
-
97
85
  # Encode a field from salesforce
98
86
  def encode_salesforce_field(name, value)
99
87
  # If existing, encode it depending on type and alias
@@ -118,17 +106,6 @@ module SalesforceRecord
118
106
  has_field?(name) && self.salesforce_fields[name].remote_name
119
107
  end
120
108
 
121
-
122
- # Tries to find a salesforce alias matching a nested hash. Returns the alias name and corresponding value if found
123
- def find_matching_alias(nested_hash)
124
- self.salesforce_fields.each do |name, field|
125
- if (value = field.is_alias_of(nested_hash))
126
- return parse_salesforce_field(name, value)
127
- end
128
- end
129
- return nil
130
- end
131
-
132
109
  end
133
110
 
134
111
 
@@ -33,18 +33,21 @@ module SalesforceRecord
33
33
  !!@remote_name
34
34
  end
35
35
 
36
- # Check if matching nested hash
37
- def is_alias_of(nested_hash)
38
- return false unless @remote_name
39
- deep_fetch(nested_hash, remote_name.split('.').map(&:to_sym))
36
+ # Find the value in a hash, handling nesting and aliases
37
+ def find_value_in(hash)
38
+ value = hash[remote_name] || deep_fetch(hash)
39
+
40
+ value.nil? ? nil : parse(value)
40
41
  end
41
42
 
43
+
42
44
  private
43
45
 
44
- # Helper : fetch deep value from a hash
45
- def deep_fetch(hash, keys)
46
+ # Helper : fetch the value deep in a hash
47
+ def deep_fetch(hash)
48
+ keys = remote_name.to_s.split('.').map(&:to_sym)
46
49
  keys.inject(hash){|subhash, key| subhash.is_a?(Hash) && subhash[key] }
47
- end
50
+ end
48
51
  end
49
52
 
50
53
 
@@ -1,3 +1,3 @@
1
1
  module SalesforceRecord
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: salesforce_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ClicRDV
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-28 00:00:00.000000000 Z
11
+ date: 2014-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: salesforce_adapter
@@ -87,9 +87,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
87
  version: '0'
88
88
  requirements: []
89
89
  rubyforge_project:
90
- rubygems_version: 2.2.1
90
+ rubygems_version: 2.2.2
91
91
  signing_key:
92
92
  specification_version: 4
93
93
  summary: ActiveRecord-like mixin for querying, fetching and updating Salesforce models
94
94
  test_files: []
95
- has_rdoc: