force 0.0.1

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.
Files changed (151) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +96 -0
  3. data/Gemfile +11 -0
  4. data/Gemfile.lock +107 -0
  5. data/Guardfile +8 -0
  6. data/LICENSE +22 -0
  7. data/README.md +421 -0
  8. data/Rakefile +10 -0
  9. data/coverage/assets/0.7.1/application.css +1110 -0
  10. data/coverage/assets/0.7.1/application.js +626 -0
  11. data/coverage/assets/0.7.1/fancybox/blank.gif +0 -0
  12. data/coverage/assets/0.7.1/fancybox/fancy_close.png +0 -0
  13. data/coverage/assets/0.7.1/fancybox/fancy_loading.png +0 -0
  14. data/coverage/assets/0.7.1/fancybox/fancy_nav_left.png +0 -0
  15. data/coverage/assets/0.7.1/fancybox/fancy_nav_right.png +0 -0
  16. data/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png +0 -0
  17. data/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png +0 -0
  18. data/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png +0 -0
  19. data/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png +0 -0
  20. data/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png +0 -0
  21. data/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png +0 -0
  22. data/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png +0 -0
  23. data/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png +0 -0
  24. data/coverage/assets/0.7.1/fancybox/fancy_title_left.png +0 -0
  25. data/coverage/assets/0.7.1/fancybox/fancy_title_main.png +0 -0
  26. data/coverage/assets/0.7.1/fancybox/fancy_title_over.png +0 -0
  27. data/coverage/assets/0.7.1/fancybox/fancy_title_right.png +0 -0
  28. data/coverage/assets/0.7.1/fancybox/fancybox-x.png +0 -0
  29. data/coverage/assets/0.7.1/fancybox/fancybox-y.png +0 -0
  30. data/coverage/assets/0.7.1/fancybox/fancybox.png +0 -0
  31. data/coverage/assets/0.7.1/favicon_green.png +0 -0
  32. data/coverage/assets/0.7.1/favicon_red.png +0 -0
  33. data/coverage/assets/0.7.1/favicon_yellow.png +0 -0
  34. data/coverage/assets/0.7.1/loading.gif +0 -0
  35. data/coverage/assets/0.7.1/magnify.png +0 -0
  36. data/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  37. data/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  38. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  39. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  40. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  41. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  42. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  43. data/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  44. data/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
  45. data/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  46. data/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
  47. data/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
  48. data/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  49. data/coverage/index.html +19808 -0
  50. data/force.gemspec +27 -0
  51. data/lib/force.rb +74 -0
  52. data/lib/force/abstract_client.rb +9 -0
  53. data/lib/force/attachment.rb +21 -0
  54. data/lib/force/client.rb +3 -0
  55. data/lib/force/collection.rb +45 -0
  56. data/lib/force/concerns/api.rb +321 -0
  57. data/lib/force/concerns/authentication.rb +39 -0
  58. data/lib/force/concerns/base.rb +59 -0
  59. data/lib/force/concerns/caching.rb +24 -0
  60. data/lib/force/concerns/canvas.rb +10 -0
  61. data/lib/force/concerns/connection.rb +74 -0
  62. data/lib/force/concerns/picklists.rb +87 -0
  63. data/lib/force/concerns/streaming.rb +31 -0
  64. data/lib/force/concerns/verbs.rb +67 -0
  65. data/lib/force/config.rb +140 -0
  66. data/lib/force/data/client.rb +18 -0
  67. data/lib/force/mash.rb +66 -0
  68. data/lib/force/middleware.rb +27 -0
  69. data/lib/force/middleware/authentication.rb +73 -0
  70. data/lib/force/middleware/authentication/password.rb +17 -0
  71. data/lib/force/middleware/authentication/token.rb +15 -0
  72. data/lib/force/middleware/authorization.rb +15 -0
  73. data/lib/force/middleware/caching.rb +22 -0
  74. data/lib/force/middleware/gzip.rb +31 -0
  75. data/lib/force/middleware/instance_url.rb +14 -0
  76. data/lib/force/middleware/logger.rb +40 -0
  77. data/lib/force/middleware/mashify.rb +16 -0
  78. data/lib/force/middleware/multipart.rb +55 -0
  79. data/lib/force/middleware/raise_error.rb +25 -0
  80. data/lib/force/signed_request.rb +48 -0
  81. data/lib/force/sobject.rb +68 -0
  82. data/lib/force/tooling/client.rb +11 -0
  83. data/lib/force/upload_io.rb +20 -0
  84. data/lib/force/version.rb +3 -0
  85. data/spec/fixtures/auth_error_response.json +4 -0
  86. data/spec/fixtures/auth_success_response.json +7 -0
  87. data/spec/fixtures/blob.jpg +0 -0
  88. data/spec/fixtures/expired_session_response.json +6 -0
  89. data/spec/fixtures/reauth_success_response.json +7 -0
  90. data/spec/fixtures/refresh_error_response.json +4 -0
  91. data/spec/fixtures/refresh_success_response.json +7 -0
  92. data/spec/fixtures/services_data_success_response.json +12 -0
  93. data/spec/fixtures/sobject/create_success_response.json +5 -0
  94. data/spec/fixtures/sobject/delete_error_response.json +1 -0
  95. data/spec/fixtures/sobject/describe_sobjects_success_response.json +31 -0
  96. data/spec/fixtures/sobject/list_sobjects_success_response.json +31 -0
  97. data/spec/fixtures/sobject/org_query_response.json +11 -0
  98. data/spec/fixtures/sobject/query_aggregate_success_response.json +23 -0
  99. data/spec/fixtures/sobject/query_empty_response.json +5 -0
  100. data/spec/fixtures/sobject/query_error_response.json +6 -0
  101. data/spec/fixtures/sobject/query_paginated_first_page_response.json +14 -0
  102. data/spec/fixtures/sobject/query_paginated_last_page_response.json +13 -0
  103. data/spec/fixtures/sobject/query_success_response.json +38 -0
  104. data/spec/fixtures/sobject/recent_success_response.json +18 -0
  105. data/spec/fixtures/sobject/search_error_response.json +6 -0
  106. data/spec/fixtures/sobject/search_success_response.json +16 -0
  107. data/spec/fixtures/sobject/sobject_describe_error_response.json +6 -0
  108. data/spec/fixtures/sobject/sobject_describe_success_response.json +1429 -0
  109. data/spec/fixtures/sobject/sobject_find_error_response.json +6 -0
  110. data/spec/fixtures/sobject/sobject_find_success_response.json +29 -0
  111. data/spec/fixtures/sobject/upsert_created_success_response.json +5 -0
  112. data/spec/fixtures/sobject/upsert_error_response.json +6 -0
  113. data/spec/fixtures/sobject/upsert_multiple_error_response.json +4 -0
  114. data/spec/fixtures/sobject/upsert_updated_success_response.json +0 -0
  115. data/spec/fixtures/sobject/write_error_response.json +6 -0
  116. data/spec/integration/abstract_client_spec.rb +306 -0
  117. data/spec/integration/data/client_spec.rb +90 -0
  118. data/spec/spec_helper.rb +20 -0
  119. data/spec/support/client_integration.rb +45 -0
  120. data/spec/support/concerns.rb +18 -0
  121. data/spec/support/event_machine.rb +14 -0
  122. data/spec/support/fixture_helpers.rb +45 -0
  123. data/spec/support/matchers.rb +11 -0
  124. data/spec/support/middleware.rb +76 -0
  125. data/spec/support/mock_cache.rb +13 -0
  126. data/spec/unit/abstract_client_spec.rb +11 -0
  127. data/spec/unit/attachment_spec.rb +15 -0
  128. data/spec/unit/collection_spec.rb +52 -0
  129. data/spec/unit/concerns/api_spec.rb +244 -0
  130. data/spec/unit/concerns/authentication_spec.rb +98 -0
  131. data/spec/unit/concerns/base_spec.rb +42 -0
  132. data/spec/unit/concerns/caching_spec.rb +29 -0
  133. data/spec/unit/concerns/canvas_spec.rb +30 -0
  134. data/spec/unit/concerns/connection_spec.rb +22 -0
  135. data/spec/unit/config_spec.rb +99 -0
  136. data/spec/unit/data/client_spec.rb +10 -0
  137. data/spec/unit/mash_spec.rb +36 -0
  138. data/spec/unit/middleware/authentication/password_spec.rb +31 -0
  139. data/spec/unit/middleware/authentication/token_spec.rb +24 -0
  140. data/spec/unit/middleware/authentication_spec.rb +67 -0
  141. data/spec/unit/middleware/authorization_spec.rb +11 -0
  142. data/spec/unit/middleware/gzip_spec.rb +66 -0
  143. data/spec/unit/middleware/instance_url_spec.rb +24 -0
  144. data/spec/unit/middleware/logger_spec.rb +19 -0
  145. data/spec/unit/middleware/mashify_spec.rb +11 -0
  146. data/spec/unit/middleware/raise_error_spec.rb +32 -0
  147. data/spec/unit/signed_request_spec.rb +24 -0
  148. data/spec/unit/sobject_spec.rb +86 -0
  149. data/spec/unit/tooling/client_spec.rb +7 -0
  150. data/tmp/rspec_guard_result +1 -0
  151. metadata +383 -0
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Force::Middleware::Authorization do
4
+ let(:options) { { :oauth_token => 'token' } }
5
+
6
+ describe '.call' do
7
+ subject { lambda { middleware.call(env) } }
8
+
9
+ it { should change { env[:request_headers]['Authorization'] }.to eq 'OAuth token' }
10
+ end
11
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe Force::Middleware::Gzip do
4
+ let(:options) { { :oauth_token => 'token' } }
5
+
6
+ # Return a gzipped string.
7
+ def gzip(str)
8
+ StringIO.new.tap do |io|
9
+ gz = Zlib::GzipWriter.new(io)
10
+ gz.write(str)
11
+ gz.close
12
+ end.string
13
+ end
14
+
15
+ describe '.call' do
16
+ subject { lambda { middleware.call(env) } }
17
+
18
+ before do
19
+ app.should_receive(:on_complete) { middleware.on_complete(env) }
20
+ app.should_receive(:call) do
21
+ env[:body] = gzip fixture('sobject/query_success_response')
22
+ env[:response_headers]['Content-Encoding'] = 'gzip'
23
+ app
24
+ end
25
+ end
26
+
27
+ it 'decompresses the body' do
28
+ should change { env[:body] }.to(fixture('sobject/query_success_response'))
29
+ end
30
+
31
+ context 'when :compress is false' do
32
+ it { should_not change { env[:request_headers]['Accept-Encoding'] } }
33
+ end
34
+
35
+ context 'when :compress is true' do
36
+ before do
37
+ options[:compress] = true
38
+ end
39
+
40
+ it { should change { env[:request_headers]['Accept-Encoding'] }.to('gzip') }
41
+ end
42
+ end
43
+
44
+ describe '.decompress' do
45
+ let(:body) { gzip fixture('sobject/query_success_response') }
46
+
47
+ subject { middleware.decompress(body) }
48
+ it { should eq fixture('sobject/query_success_response') }
49
+ end
50
+
51
+ describe '.gzipped?' do
52
+ subject { middleware.gzipped?(env) }
53
+
54
+ context 'when gzipped' do
55
+ before do
56
+ env[:response_headers]['Content-Encoding'] = 'gzip'
57
+ end
58
+
59
+ it { should be_true }
60
+ end
61
+
62
+ context 'when not gzipped' do
63
+ it { should be_false }
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Force::Middleware::InstanceURL do
4
+ describe '.call' do
5
+ subject { lambda { middleware.call(nil) } }
6
+
7
+ context 'when the instance url is not set' do
8
+ before do
9
+ client.stub_chain :connection, :url_prefix => URI.parse('http:/')
10
+ end
11
+
12
+ it { should raise_error Force::UnauthorizedError }
13
+ end
14
+
15
+ context 'when the instance url is set' do
16
+ before do
17
+ client.stub_chain :connection, :url_prefix => URI.parse('http://foobar.com/')
18
+ app.should_receive(:call).once
19
+ end
20
+
21
+ it { should_not raise_error }
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Force::Middleware::Logger do
4
+ let(:logger) { double('logger') }
5
+ let(:middleware) { described_class.new app, logger, options }
6
+
7
+ describe '.call' do
8
+ subject { lambda { middleware.call(env) } }
9
+
10
+ before do
11
+ app.should_receive(:call).once.and_return(app)
12
+ app.should_receive(:on_complete).once { middleware.on_complete(env) }
13
+ logger.should_receive(:debug).with('request')
14
+ logger.should_receive(:debug).with('response')
15
+ end
16
+
17
+ it { should_not raise_error }
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Force::Middleware::Mashify do
4
+ let(:env) { { :body => JSON.parse(fixture('sobject/query_success_response')) } }
5
+
6
+ describe '.call' do
7
+ subject { lambda { middleware.call(env) } }
8
+
9
+ it { should change { env[:body] }.to(kind_of(Force::Collection)) }
10
+ end
11
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Force::Middleware::RaiseError do
4
+ let(:body) { fixture('sobject/query_error_response') }
5
+ let(:env) { { :status => status, :body => body } }
6
+ let(:middleware) { described_class.new app }
7
+
8
+ describe '.on_complete' do
9
+ subject { lambda { middleware.on_complete(env) } }
10
+
11
+ context 'when the status code is 404' do
12
+ let(:status) { 404 }
13
+ it { should raise_error Faraday::Error::ResourceNotFound, 'INVALID_FIELD: error_message' }
14
+ end
15
+
16
+ context 'when the status code is 400' do
17
+ let(:status) { 400 }
18
+ it { should raise_error Faraday::Error::ClientError, 'INVALID_FIELD: error_message' }
19
+ end
20
+
21
+ context 'when the status code is 401' do
22
+ let(:status) { 401 }
23
+ it { should raise_error Force::UnauthorizedError, 'INVALID_FIELD: error_message' }
24
+ end
25
+
26
+ context 'when the status code is 413' do
27
+ let(:status) { 413 }
28
+ let(:body) { '' } #Zero length response
29
+ it { should raise_error Faraday::Error::ClientError, 'HTTP 413 - Request Entity Too Large' }
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Force::SignedRequest do
4
+ let(:client_secret) { 'foo' }
5
+ let(:message) do
6
+ digest = OpenSSL::Digest::Digest.new('sha256')
7
+ signature = Base64.encode64(OpenSSL::HMAC.digest(digest, client_secret, data))
8
+ "#{signature}.#{data}"
9
+ end
10
+
11
+ describe '.decode' do
12
+ subject { described_class.new(message, client_secret).decode }
13
+
14
+ context 'when the message is valid' do
15
+ let(:data) { Base64.encode64('{"key": "value"}') }
16
+ it { should eq('key' => 'value') }
17
+ end
18
+
19
+ context 'when the message is invalid' do
20
+ let(:message) { 'foobar.awdkjkj' }
21
+ it { should be_nil }
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+
3
+ describe Force::SObject do
4
+ let(:client) { double('Client') }
5
+ let(:hash) { JSON.parse(fixture('sobject/query_success_response'))['records'].first }
6
+ subject(:sobject) { described_class.new(hash, client) }
7
+
8
+ describe '#new' do
9
+ context 'with valid options' do
10
+ it { should be_a Force::SObject }
11
+ it { should have_client client }
12
+ its(:sobject_type) { should eq 'Whizbang' }
13
+ its(:Text_Label) { should eq 'Hi there!' }
14
+
15
+ describe 'children' do
16
+ subject(:children) { sobject.Whizbangs__r }
17
+
18
+ it { should be_a Force::Collection }
19
+
20
+ describe 'each child' do
21
+ it { should be_all { |sobject| expect(sobject).to be_a Force::SObject } }
22
+ it { should be_all { |sobject| expect(sobject).to have_client client } }
23
+ end
24
+ end
25
+
26
+ describe 'parent' do
27
+ subject(:parent) { sobject.ParentWhizbang__r }
28
+
29
+ it { should be_a Force::SObject }
30
+ its(:sobject_type) { should eq 'Whizbang' }
31
+ its(:Name) { should eq 'Parent Whizbang' }
32
+ it { should have_client client }
33
+ end
34
+ end
35
+ end
36
+
37
+ { :save => :update,
38
+ :save! => :update!,
39
+ :destroy => :destroy,
40
+ :destroy! => :destroy! }.each do |method, receiver|
41
+ describe ".#{method}" do
42
+ subject { lambda { sobject.send(method) } }
43
+
44
+ context 'when an Id was not queried' do
45
+ it { should raise_error ArgumentError, 'You need to query the Id for the record first.' }
46
+ end
47
+
48
+ context 'when an Id is present' do
49
+ before do
50
+ hash.merge!(:Id => '001D000000INjVe')
51
+ client.should_receive(receiver)
52
+ end
53
+
54
+ it { should_not raise_error }
55
+ end
56
+ end
57
+ end
58
+
59
+ describe '.describe' do
60
+ subject { lambda { sobject.describe } }
61
+
62
+ before do
63
+ client.should_receive(:describe).with('Whizbang')
64
+ end
65
+
66
+ it { should_not raise_error }
67
+ end
68
+
69
+ describe '.describe_layouts' do
70
+ let(:layout_id) { nil }
71
+ subject { lambda { sobject.describe_layouts } }
72
+
73
+ before do
74
+ client.should_receive(:describe_layouts).with('Whizbang', layout_id)
75
+ end
76
+
77
+ it { should_not raise_error }
78
+
79
+ context 'when a layout Id is specified' do
80
+ let(:layout_id) { '012E0000000RHEp' }
81
+ subject { lambda { sobject.describe_layouts(layout_id) } }
82
+
83
+ it { should_not raise_error }
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Force::Tooling::Client do
4
+ subject { described_class }
5
+
6
+ it { should < Force::AbstractClient }
7
+ end
@@ -0,0 +1 @@
1
+
metadata ADDED
@@ -0,0 +1,383 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: force
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Eric J. Holmes
8
+ - Mattt Thompson
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: faraday
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: 0.8.4
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: 0.8.4
28
+ - !ruby/object:Gem::Dependency
29
+ name: faraday_middleware
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: 0.8.8
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: 0.8.8
42
+ - !ruby/object:Gem::Dependency
43
+ name: json
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: 1.7.5
49
+ - - <
50
+ - !ruby/object:Gem::Version
51
+ version: 1.9.0
52
+ type: :runtime
53
+ prerelease: false
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - '>='
57
+ - !ruby/object:Gem::Version
58
+ version: 1.7.5
59
+ - - <
60
+ - !ruby/object:Gem::Version
61
+ version: 1.9.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: hashie
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.2.0
69
+ - - <
70
+ - !ruby/object:Gem::Version
71
+ version: '2.1'
72
+ type: :runtime
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - '>='
77
+ - !ruby/object:Gem::Version
78
+ version: 1.2.0
79
+ - - <
80
+ - !ruby/object:Gem::Version
81
+ version: '2.1'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rspec
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: 2.14.0
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ~>
94
+ - !ruby/object:Gem::Version
95
+ version: 2.14.0
96
+ - !ruby/object:Gem::Dependency
97
+ name: webmock
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ~>
101
+ - !ruby/object:Gem::Version
102
+ version: 1.13.0
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.13.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: simplecov
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ~>
115
+ - !ruby/object:Gem::Version
116
+ version: 0.7.1
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ version: 0.7.1
124
+ - !ruby/object:Gem::Dependency
125
+ name: faye
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ description: A lightweight ruby client for the Salesforce REST api.
139
+ email:
140
+ - eric@ejholmes.net
141
+ - mattt@heroku.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ./CHANGELOG.md
147
+ - ./coverage/assets/0.7.1/application.css
148
+ - ./coverage/assets/0.7.1/application.js
149
+ - ./coverage/assets/0.7.1/fancybox/blank.gif
150
+ - ./coverage/assets/0.7.1/fancybox/fancy_close.png
151
+ - ./coverage/assets/0.7.1/fancybox/fancy_loading.png
152
+ - ./coverage/assets/0.7.1/fancybox/fancy_nav_left.png
153
+ - ./coverage/assets/0.7.1/fancybox/fancy_nav_right.png
154
+ - ./coverage/assets/0.7.1/fancybox/fancy_shadow_e.png
155
+ - ./coverage/assets/0.7.1/fancybox/fancy_shadow_n.png
156
+ - ./coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png
157
+ - ./coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png
158
+ - ./coverage/assets/0.7.1/fancybox/fancy_shadow_s.png
159
+ - ./coverage/assets/0.7.1/fancybox/fancy_shadow_se.png
160
+ - ./coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png
161
+ - ./coverage/assets/0.7.1/fancybox/fancy_shadow_w.png
162
+ - ./coverage/assets/0.7.1/fancybox/fancy_title_left.png
163
+ - ./coverage/assets/0.7.1/fancybox/fancy_title_main.png
164
+ - ./coverage/assets/0.7.1/fancybox/fancy_title_over.png
165
+ - ./coverage/assets/0.7.1/fancybox/fancy_title_right.png
166
+ - ./coverage/assets/0.7.1/fancybox/fancybox-x.png
167
+ - ./coverage/assets/0.7.1/fancybox/fancybox-y.png
168
+ - ./coverage/assets/0.7.1/fancybox/fancybox.png
169
+ - ./coverage/assets/0.7.1/favicon_green.png
170
+ - ./coverage/assets/0.7.1/favicon_red.png
171
+ - ./coverage/assets/0.7.1/favicon_yellow.png
172
+ - ./coverage/assets/0.7.1/loading.gif
173
+ - ./coverage/assets/0.7.1/magnify.png
174
+ - ./coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
175
+ - ./coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
176
+ - ./coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
177
+ - ./coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
178
+ - ./coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png
179
+ - ./coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
180
+ - ./coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
181
+ - ./coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
182
+ - ./coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png
183
+ - ./coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png
184
+ - ./coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png
185
+ - ./coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png
186
+ - ./coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png
187
+ - ./coverage/index.html
188
+ - ./force.gemspec
189
+ - ./Gemfile
190
+ - ./Gemfile.lock
191
+ - ./Guardfile
192
+ - ./lib/force/abstract_client.rb
193
+ - ./lib/force/attachment.rb
194
+ - ./lib/force/client.rb
195
+ - ./lib/force/collection.rb
196
+ - ./lib/force/concerns/api.rb
197
+ - ./lib/force/concerns/authentication.rb
198
+ - ./lib/force/concerns/base.rb
199
+ - ./lib/force/concerns/caching.rb
200
+ - ./lib/force/concerns/canvas.rb
201
+ - ./lib/force/concerns/connection.rb
202
+ - ./lib/force/concerns/picklists.rb
203
+ - ./lib/force/concerns/streaming.rb
204
+ - ./lib/force/concerns/verbs.rb
205
+ - ./lib/force/config.rb
206
+ - ./lib/force/data/client.rb
207
+ - ./lib/force/mash.rb
208
+ - ./lib/force/middleware/authentication/password.rb
209
+ - ./lib/force/middleware/authentication/token.rb
210
+ - ./lib/force/middleware/authentication.rb
211
+ - ./lib/force/middleware/authorization.rb
212
+ - ./lib/force/middleware/caching.rb
213
+ - ./lib/force/middleware/gzip.rb
214
+ - ./lib/force/middleware/instance_url.rb
215
+ - ./lib/force/middleware/logger.rb
216
+ - ./lib/force/middleware/mashify.rb
217
+ - ./lib/force/middleware/multipart.rb
218
+ - ./lib/force/middleware/raise_error.rb
219
+ - ./lib/force/middleware.rb
220
+ - ./lib/force/signed_request.rb
221
+ - ./lib/force/sobject.rb
222
+ - ./lib/force/tooling/client.rb
223
+ - ./lib/force/upload_io.rb
224
+ - ./lib/force/version.rb
225
+ - ./lib/force.rb
226
+ - ./LICENSE
227
+ - ./Rakefile
228
+ - ./README.md
229
+ - ./tmp/rspec_guard_result
230
+ - spec/fixtures/auth_error_response.json
231
+ - spec/fixtures/auth_success_response.json
232
+ - spec/fixtures/blob.jpg
233
+ - spec/fixtures/expired_session_response.json
234
+ - spec/fixtures/reauth_success_response.json
235
+ - spec/fixtures/refresh_error_response.json
236
+ - spec/fixtures/refresh_success_response.json
237
+ - spec/fixtures/services_data_success_response.json
238
+ - spec/fixtures/sobject/create_success_response.json
239
+ - spec/fixtures/sobject/delete_error_response.json
240
+ - spec/fixtures/sobject/describe_sobjects_success_response.json
241
+ - spec/fixtures/sobject/list_sobjects_success_response.json
242
+ - spec/fixtures/sobject/org_query_response.json
243
+ - spec/fixtures/sobject/query_aggregate_success_response.json
244
+ - spec/fixtures/sobject/query_empty_response.json
245
+ - spec/fixtures/sobject/query_error_response.json
246
+ - spec/fixtures/sobject/query_paginated_first_page_response.json
247
+ - spec/fixtures/sobject/query_paginated_last_page_response.json
248
+ - spec/fixtures/sobject/query_success_response.json
249
+ - spec/fixtures/sobject/recent_success_response.json
250
+ - spec/fixtures/sobject/search_error_response.json
251
+ - spec/fixtures/sobject/search_success_response.json
252
+ - spec/fixtures/sobject/sobject_describe_error_response.json
253
+ - spec/fixtures/sobject/sobject_describe_success_response.json
254
+ - spec/fixtures/sobject/sobject_find_error_response.json
255
+ - spec/fixtures/sobject/sobject_find_success_response.json
256
+ - spec/fixtures/sobject/upsert_created_success_response.json
257
+ - spec/fixtures/sobject/upsert_error_response.json
258
+ - spec/fixtures/sobject/upsert_multiple_error_response.json
259
+ - spec/fixtures/sobject/upsert_updated_success_response.json
260
+ - spec/fixtures/sobject/write_error_response.json
261
+ - spec/integration/abstract_client_spec.rb
262
+ - spec/integration/data/client_spec.rb
263
+ - spec/spec_helper.rb
264
+ - spec/support/client_integration.rb
265
+ - spec/support/concerns.rb
266
+ - spec/support/event_machine.rb
267
+ - spec/support/fixture_helpers.rb
268
+ - spec/support/matchers.rb
269
+ - spec/support/middleware.rb
270
+ - spec/support/mock_cache.rb
271
+ - spec/unit/abstract_client_spec.rb
272
+ - spec/unit/attachment_spec.rb
273
+ - spec/unit/collection_spec.rb
274
+ - spec/unit/concerns/api_spec.rb
275
+ - spec/unit/concerns/authentication_spec.rb
276
+ - spec/unit/concerns/base_spec.rb
277
+ - spec/unit/concerns/caching_spec.rb
278
+ - spec/unit/concerns/canvas_spec.rb
279
+ - spec/unit/concerns/connection_spec.rb
280
+ - spec/unit/config_spec.rb
281
+ - spec/unit/data/client_spec.rb
282
+ - spec/unit/mash_spec.rb
283
+ - spec/unit/middleware/authentication/password_spec.rb
284
+ - spec/unit/middleware/authentication/token_spec.rb
285
+ - spec/unit/middleware/authentication_spec.rb
286
+ - spec/unit/middleware/authorization_spec.rb
287
+ - spec/unit/middleware/gzip_spec.rb
288
+ - spec/unit/middleware/instance_url_spec.rb
289
+ - spec/unit/middleware/logger_spec.rb
290
+ - spec/unit/middleware/mashify_spec.rb
291
+ - spec/unit/middleware/raise_error_spec.rb
292
+ - spec/unit/signed_request_spec.rb
293
+ - spec/unit/sobject_spec.rb
294
+ - spec/unit/tooling/client_spec.rb
295
+ homepage: https://github.com/heroku/force
296
+ licenses: []
297
+ metadata: {}
298
+ post_install_message:
299
+ rdoc_options: []
300
+ require_paths:
301
+ - lib
302
+ required_ruby_version: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - '>='
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ required_rubygems_version: !ruby/object:Gem::Requirement
308
+ requirements:
309
+ - - '>='
310
+ - !ruby/object:Gem::Version
311
+ version: '0'
312
+ requirements: []
313
+ rubyforge_project:
314
+ rubygems_version: 2.0.3
315
+ signing_key:
316
+ specification_version: 4
317
+ summary: A lightweight ruby client for the Salesforce REST api.
318
+ test_files:
319
+ - spec/fixtures/auth_error_response.json
320
+ - spec/fixtures/auth_success_response.json
321
+ - spec/fixtures/blob.jpg
322
+ - spec/fixtures/expired_session_response.json
323
+ - spec/fixtures/reauth_success_response.json
324
+ - spec/fixtures/refresh_error_response.json
325
+ - spec/fixtures/refresh_success_response.json
326
+ - spec/fixtures/services_data_success_response.json
327
+ - spec/fixtures/sobject/create_success_response.json
328
+ - spec/fixtures/sobject/delete_error_response.json
329
+ - spec/fixtures/sobject/describe_sobjects_success_response.json
330
+ - spec/fixtures/sobject/list_sobjects_success_response.json
331
+ - spec/fixtures/sobject/org_query_response.json
332
+ - spec/fixtures/sobject/query_aggregate_success_response.json
333
+ - spec/fixtures/sobject/query_empty_response.json
334
+ - spec/fixtures/sobject/query_error_response.json
335
+ - spec/fixtures/sobject/query_paginated_first_page_response.json
336
+ - spec/fixtures/sobject/query_paginated_last_page_response.json
337
+ - spec/fixtures/sobject/query_success_response.json
338
+ - spec/fixtures/sobject/recent_success_response.json
339
+ - spec/fixtures/sobject/search_error_response.json
340
+ - spec/fixtures/sobject/search_success_response.json
341
+ - spec/fixtures/sobject/sobject_describe_error_response.json
342
+ - spec/fixtures/sobject/sobject_describe_success_response.json
343
+ - spec/fixtures/sobject/sobject_find_error_response.json
344
+ - spec/fixtures/sobject/sobject_find_success_response.json
345
+ - spec/fixtures/sobject/upsert_created_success_response.json
346
+ - spec/fixtures/sobject/upsert_error_response.json
347
+ - spec/fixtures/sobject/upsert_multiple_error_response.json
348
+ - spec/fixtures/sobject/upsert_updated_success_response.json
349
+ - spec/fixtures/sobject/write_error_response.json
350
+ - spec/integration/abstract_client_spec.rb
351
+ - spec/integration/data/client_spec.rb
352
+ - spec/spec_helper.rb
353
+ - spec/support/client_integration.rb
354
+ - spec/support/concerns.rb
355
+ - spec/support/event_machine.rb
356
+ - spec/support/fixture_helpers.rb
357
+ - spec/support/matchers.rb
358
+ - spec/support/middleware.rb
359
+ - spec/support/mock_cache.rb
360
+ - spec/unit/abstract_client_spec.rb
361
+ - spec/unit/attachment_spec.rb
362
+ - spec/unit/collection_spec.rb
363
+ - spec/unit/concerns/api_spec.rb
364
+ - spec/unit/concerns/authentication_spec.rb
365
+ - spec/unit/concerns/base_spec.rb
366
+ - spec/unit/concerns/caching_spec.rb
367
+ - spec/unit/concerns/canvas_spec.rb
368
+ - spec/unit/concerns/connection_spec.rb
369
+ - spec/unit/config_spec.rb
370
+ - spec/unit/data/client_spec.rb
371
+ - spec/unit/mash_spec.rb
372
+ - spec/unit/middleware/authentication/password_spec.rb
373
+ - spec/unit/middleware/authentication/token_spec.rb
374
+ - spec/unit/middleware/authentication_spec.rb
375
+ - spec/unit/middleware/authorization_spec.rb
376
+ - spec/unit/middleware/gzip_spec.rb
377
+ - spec/unit/middleware/instance_url_spec.rb
378
+ - spec/unit/middleware/logger_spec.rb
379
+ - spec/unit/middleware/mashify_spec.rb
380
+ - spec/unit/middleware/raise_error_spec.rb
381
+ - spec/unit/signed_request_spec.rb
382
+ - spec/unit/sobject_spec.rb
383
+ - spec/unit/tooling/client_spec.rb