salesforce_record 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: