restforce-db 4.0.5 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/restforce/db.rb +26 -0
- data/lib/restforce/db/task_manager.rb +1 -1
- data/lib/restforce/db/version.rb +1 -1
- data/lib/tasks/restforce.rake +1 -12
- data/test/lib/restforce/db_test.rb +22 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1dafd9fbdfa3ef1b8095e136a0491bca01cf3d73
|
4
|
+
data.tar.gz: 4d7c41b6ea229020fcc3886400053381bae6ba6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38730782a910cc7fe92e45ea09d7dab57ac3b648246ff8a707ab84c5694394226bf32366f9250a386f3607a39a5d2813304ce3a79983949bcbc6ecd336db1f26
|
7
|
+
data.tar.gz: fc09fefbbe68a85c3a17bcd0967e657dcffec5d899d786127397909417e2c40596c9a3ca3de63368b87b6bcf75b2eb09a26f636900a26c85ef592eb5c4fb837b
|
data/lib/restforce/db.rb
CHANGED
@@ -54,6 +54,10 @@ module Restforce
|
|
54
54
|
# by the other classes in this library.
|
55
55
|
module DB
|
56
56
|
|
57
|
+
# Internal: A String containing the valid suffix Hash values for a
|
58
|
+
# Salesforce ID.
|
59
|
+
HASH_DICTIONARY = "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345".freeze
|
60
|
+
|
57
61
|
class << self
|
58
62
|
|
59
63
|
attr_accessor :last_run
|
@@ -140,6 +144,28 @@ module Restforce
|
|
140
144
|
@last_run = nil
|
141
145
|
end
|
142
146
|
|
147
|
+
# Public: Get the hashed version of the passed salesforce ID. This will
|
148
|
+
# converts 15-digit Salesforce IDs to their corresponding 18-digit version.
|
149
|
+
# Returns any passed 18-digit IDs back, untouched.
|
150
|
+
#
|
151
|
+
# Returns a String.
|
152
|
+
# Raises an ArgumentError if the passed String is not 15 characters.
|
153
|
+
def self.hashed_id(salesforce_id)
|
154
|
+
return salesforce_id if salesforce_id.length == 18
|
155
|
+
raise ArgumentError, "The passed Salesforce ID must be 15 or 18 characters" unless salesforce_id.length == 15
|
156
|
+
|
157
|
+
suffixes = salesforce_id.scan(/.{5}/).map do |chunk|
|
158
|
+
flag = 0
|
159
|
+
chunk.split("").each_with_index do |char, idx|
|
160
|
+
flag += (1 << idx) if char >= "A" && char <= "Z"
|
161
|
+
end
|
162
|
+
|
163
|
+
HASH_DICTIONARY[flag]
|
164
|
+
end
|
165
|
+
|
166
|
+
salesforce_id + suffixes.join
|
167
|
+
end
|
168
|
+
|
143
169
|
end
|
144
170
|
|
145
171
|
end
|
data/lib/restforce/db/version.rb
CHANGED
data/lib/tasks/restforce.rake
CHANGED
@@ -48,19 +48,8 @@ namespace :restforce do
|
|
48
48
|
desc "Get the 18-character version of a 15-character Salesforce ID"
|
49
49
|
task :convertid, [:salesforce_id] do |_, args|
|
50
50
|
sfid = args[:salesforce_id]
|
51
|
-
|
52
51
|
raise ArgumentError, "Provide a Salesforce ID (restforce:convertid[<salesforce_id>])" if sfid.nil?
|
53
|
-
raise ArgumentError, "The passed Salesforce ID must be 15 characters" unless sfid.length == 15
|
54
|
-
|
55
|
-
suffixes = sfid.scan(/.{5}/).map do |chunk|
|
56
|
-
flag = 0
|
57
|
-
chunk.split("").each_with_index do |char, idx|
|
58
|
-
flag += (1 << idx) if char.upcase == char && char >= "A" && char <= "Z"
|
59
|
-
end
|
60
|
-
|
61
|
-
"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"[flag]
|
62
|
-
end
|
63
52
|
|
64
|
-
puts sfid
|
53
|
+
puts Restforce::DB.hashed_id(sfid)
|
65
54
|
end
|
66
55
|
end
|
@@ -4,7 +4,7 @@ describe Restforce::DB do
|
|
4
4
|
|
5
5
|
configure!
|
6
6
|
|
7
|
-
describe "
|
7
|
+
describe ".configure" do
|
8
8
|
|
9
9
|
it "yields a Configuration" do
|
10
10
|
Restforce::DB.configure do |config|
|
@@ -13,7 +13,7 @@ describe Restforce::DB do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
describe "
|
16
|
+
describe ".client" do
|
17
17
|
before do
|
18
18
|
Restforce::DB.configure do |config|
|
19
19
|
config.adapter = :net_http
|
@@ -28,6 +28,26 @@ describe Restforce::DB do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
describe ".hashed_id" do
|
32
|
+
|
33
|
+
it "returns an 18-character Salesforce ID untouched" do
|
34
|
+
expect(Restforce::DB.hashed_id("a001a000002zhZfAAI")).to_equal("a001a000002zhZfAAI")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "generates a proper hash for a 15-character Salesforce ID" do
|
38
|
+
expect(Restforce::DB.hashed_id("aaaaaaaaaaaaaaa")).to_equal("aaaaaaaaaaaaaaaAAA")
|
39
|
+
expect(Restforce::DB.hashed_id("AaaAAAaaAAAaaAA")).to_equal("AaaAAAaaAAAaaAAZZZ")
|
40
|
+
expect(Restforce::DB.hashed_id("aAaAAaAaAAaAaAA")).to_equal("aAaAAaAaAAaAaAA000")
|
41
|
+
expect(Restforce::DB.hashed_id("AAAAAAAAAAAAAAA")).to_equal("AAAAAAAAAAAAAAA555")
|
42
|
+
|
43
|
+
expect(Restforce::DB.hashed_id("0063200001kSU3I")).to_equal("0063200001kSU3IAAW")
|
44
|
+
end
|
45
|
+
|
46
|
+
it "raises an ArgumentError if the passed String contains an invalid character count" do
|
47
|
+
expect { Restforce::DB.hashed_id("a001a000002zhZfA") }.to_raise(ArgumentError)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
31
51
|
describe "accessing Salesforce", :vcr do
|
32
52
|
|
33
53
|
it "uses the configured credentials" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restforce-db
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Horner
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|