worochi 0.0.14 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +82 -24
- data/lib/worochi/agent/#example.rb +6 -0
- data/lib/worochi/agent/dropbox.rb +6 -8
- data/lib/worochi/agent/github.rb +7 -2
- data/lib/worochi/agent/google_drive.rb +272 -0
- data/lib/worochi/agent.rb +23 -2
- data/lib/worochi/config/google_drive.yml +3 -1
- data/lib/worochi/item.rb +42 -1
- data/lib/worochi/oauth.rb +16 -8
- data/lib/worochi/version.rb +1 -1
- data/lib/worochi.rb +1 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/_delete/deletes_a_file.yml +4248 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/_delete/raises_error_on_bad_token.yml +7889 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/retrieves_the_item_ID.yml +4148 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/returns_the_root_ID.yml +3889 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/creates_a_new_folder_to_root.yml +4753 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/uploads_a_file.yml +4492 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/creates_new_directories_as_needed.yml +5961 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/pushes_a_single_item.yml +3887 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/raises_error_on_bad_token.yml +7833 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_default_options/has_the_required_options.yml +3889 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml +4294 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/contains_file1.yml +4236 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/does_not_contain_folder1.yml +4236 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/raises_error_on_invalid_path.yml +4236 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/contains_folder1_and_file1.yml +4583 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/shows_detailed_listing_including_the_required_fields.yml +4236 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml +4294 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml +4236 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/does_not_contain_file1.yml +4236 -0
- data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_init_client/returns_the_client.yml +7775 -0
- data/spec/cassettes/Worochi_Item/_content_type/detects_the_MIME_type.yml +105 -0
- data/spec/cassettes/Worochi_Item/_content_type/falls_back_to_file_name_when_ruby-filemagic_is_not_loaded.yml +105 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/support/shared_exampes_for_agents.rb +2 -2
- data/spec/worochi/agent/github_spec.rb +6 -0
- data/spec/worochi/agent/google_drive_spec.rb +79 -0
- data/spec/worochi/agent_spec.rb +13 -1
- data/spec/worochi/item_spec.rb +18 -0
- data/spec/worochi/oauth_spec.rb +1 -1
- data/worochi.gemspec +4 -0
- metadata +104 -1
@@ -0,0 +1,105 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://soraven.com/blog/wp-content/uploads/2013/06/sr3.gif
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- '*/*'
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Date:
|
22
|
+
- Thu, 22 Aug 2013 00:13:39 GMT
|
23
|
+
Server:
|
24
|
+
- Apache
|
25
|
+
Last-Modified:
|
26
|
+
- Sat, 15 Jun 2013 08:47:57 GMT
|
27
|
+
Accept-Ranges:
|
28
|
+
- bytes
|
29
|
+
Content-Length:
|
30
|
+
- '2985'
|
31
|
+
Content-Type:
|
32
|
+
- image/gif
|
33
|
+
body:
|
34
|
+
encoding: ASCII-8BIT
|
35
|
+
string: !binary |-
|
36
|
+
R0lGODlhlgCWANU0AAAAAP///w8PD8DAwICAgBAQEPDw8EBAQKCgoDAwMGBg
|
37
|
+
YNDQ0ODg4CAgIHBwcFBQUJCQkLCwsMnJyfPz8/n5+Xh4eBISEo2NjSQkJIeH
|
38
|
+
h9vb22ZmZjk5OZaWlicnJx4eHi0tLQkJCQYGBqKiovz8/KWlpZmZmYqKisPD
|
39
|
+
w/b29pOTk2lpad7e3jY2NoSEhAMDAzMzM9jY2GNjY11dXf///wAAAAAAAAAA
|
40
|
+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFj
|
41
|
+
a2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
|
42
|
+
Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0
|
43
|
+
az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAy
|
44
|
+
LzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0
|
45
|
+
dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8
|
46
|
+
cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6
|
47
|
+
Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8v
|
48
|
+
bnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDov
|
49
|
+
L25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1w
|
50
|
+
OkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHht
|
51
|
+
cE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0UwNDQ4NzRENTk4MTFFMkFCNDFB
|
52
|
+
MDcyODNBREQxOUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0UwNDQ4
|
53
|
+
NzVENTk4MTFFMkFCNDFBMDcyODNBREQxOUUiPiA8eG1wTU06RGVyaXZlZEZy
|
54
|
+
b20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTA0NDg3MkQ1OTgxMUUy
|
55
|
+
QUI0MUEwNzI4M0FERDE5RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoz
|
56
|
+
RTA0NDg3M0Q1OTgxMUUyQUI0MUEwNzI4M0FERDE5RSIvPiA8L3JkZjpEZXNj
|
57
|
+
cmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVu
|
58
|
+
ZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb
|
59
|
+
2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+u
|
60
|
+
rayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KB
|
61
|
+
gH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVU
|
62
|
+
U1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgn
|
63
|
+
JiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEA
|
64
|
+
ADQALAAAAACWAJYAAAb/QJpwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+Cw
|
65
|
+
eEwum7ks06YFArjf8Lh8Tq/b7/j8HdTamFhjExAJeoWGh4iJeQkQE14UGRaK
|
66
|
+
k5SVlnIWGRRbEh6Xn6Cheh4SWSUhoqmqqyEjVxWrsbKgFSRUsLO5uokVUyW7
|
67
|
+
wMF5JVESqMLIyW8ipU4UGMrRyRibTRnS2MIZTROS2d+5Fo5LF+DmsxdMhOfs
|
68
|
+
qQlLGu3yohpKHfP4lx1KMvn+kwqUcPhH8BAHJR8KKszzQYmAhRDrCHAYsWKc
|
69
|
+
iUkeWtyIEYnGjRU7HvkIEqJIIyRLKjxZJKVKgiyJuHzpL+aQmTTx2RSCM6e8
|
70
|
+
/500evpkB1TopAIKEAwIwLRpgAEQHhQYWqioqAcRnGrdiuAAVTxWPx1YsLXs
|
71
|
+
1gFeLS01y7apgQFQCRxoICtspQIQ2uplGmEqpbV7AwdggECBKruTGpAV3JbB
|
72
|
+
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
|
102
|
+
S9rSmva0qE2tarEQBAA7
|
103
|
+
http_version:
|
104
|
+
recorded_at: Thu, 22 Aug 2013 00:13:39 GMT
|
105
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,105 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://soraven.com/blog/wp-content/uploads/2013/06/sr3.gif
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- '*/*'
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Date:
|
22
|
+
- Thu, 22 Aug 2013 00:13:41 GMT
|
23
|
+
Server:
|
24
|
+
- Apache
|
25
|
+
Last-Modified:
|
26
|
+
- Sat, 15 Jun 2013 08:47:57 GMT
|
27
|
+
Accept-Ranges:
|
28
|
+
- bytes
|
29
|
+
Content-Length:
|
30
|
+
- '2985'
|
31
|
+
Content-Type:
|
32
|
+
- image/gif
|
33
|
+
body:
|
34
|
+
encoding: ASCII-8BIT
|
35
|
+
string: !binary |-
|
36
|
+
R0lGODlhlgCWANU0AAAAAP///w8PD8DAwICAgBAQEPDw8EBAQKCgoDAwMGBg
|
37
|
+
YNDQ0ODg4CAgIHBwcFBQUJCQkLCwsMnJyfPz8/n5+Xh4eBISEo2NjSQkJIeH
|
38
|
+
h9vb22ZmZjk5OZaWlicnJx4eHi0tLQkJCQYGBqKiovz8/KWlpZmZmYqKisPD
|
39
|
+
w/b29pOTk2lpad7e3jY2NoSEhAMDAzMzM9jY2GNjY11dXf///wAAAAAAAAAA
|
40
|
+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFj
|
41
|
+
a2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
|
42
|
+
Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0
|
43
|
+
az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAy
|
44
|
+
LzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0
|
45
|
+
dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8
|
46
|
+
cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6
|
47
|
+
Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8v
|
48
|
+
bnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDov
|
49
|
+
L25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1w
|
50
|
+
OkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHht
|
51
|
+
cE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0UwNDQ4NzRENTk4MTFFMkFCNDFB
|
52
|
+
MDcyODNBREQxOUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0UwNDQ4
|
53
|
+
NzVENTk4MTFFMkFCNDFBMDcyODNBREQxOUUiPiA8eG1wTU06RGVyaXZlZEZy
|
54
|
+
b20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTA0NDg3MkQ1OTgxMUUy
|
55
|
+
QUI0MUEwNzI4M0FERDE5RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoz
|
56
|
+
RTA0NDg3M0Q1OTgxMUUyQUI0MUEwNzI4M0FERDE5RSIvPiA8L3JkZjpEZXNj
|
57
|
+
cmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVu
|
58
|
+
ZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb
|
59
|
+
2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+u
|
60
|
+
rayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KB
|
61
|
+
gH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVU
|
62
|
+
U1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgn
|
63
|
+
JiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEA
|
64
|
+
ADQALAAAAACWAJYAAAb/QJpwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+Cw
|
65
|
+
eEwum7ks06YFArjf8Lh8Tq/b7/j8HdTamFhjExAJeoWGh4iJeQkQE14UGRaK
|
66
|
+
k5SVlnIWGRRbEh6Xn6Cheh4SWSUhoqmqqyEjVxWrsbKgFSRUsLO5uokVUyW7
|
67
|
+
wMF5JVESqMLIyW8ipU4UGMrRyRibTRnS2MIZTROS2d+5Fo5LF+DmsxdMhOfs
|
68
|
+
qQlLGu3yohpKHfP4lx1KMvn+kwqUcPhH8BAHJR8KKszzQYmAhRDrCHAYsWKc
|
69
|
+
iUkeWtyIEYnGjRU7HvkIEqJIIyRLKjxZJKVKgiyJuHzpL+aQmTTx2RSCM6e8
|
70
|
+
/500evpkB1TopAIKEAwIwLRpgAEQHhQYWqioqAcRnGrdiuAAVTxWPx1YsLXs
|
71
|
+
1gFeLS01y7apgQFQCRxoICtspQIQ2uplGmEqpbV7AwdggECBKruTGpAV3JbB
|
72
|
+
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
|
102
|
+
S9rSmva0qE2tarEQBAA7
|
103
|
+
http_version:
|
104
|
+
recorded_at: Thu, 22 Aug 2013 00:13:42 GMT
|
105
|
+
recorded_with: VCR 2.5.0
|
data/spec/spec_helper.rb
CHANGED
@@ -8,6 +8,8 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
|
8
8
|
SimpleCov.start
|
9
9
|
|
10
10
|
require 'worochi'
|
11
|
+
require 'filemagic'
|
12
|
+
require 'awesome_print'
|
11
13
|
require 'digest'
|
12
14
|
require 'vcr'
|
13
15
|
require 'webmock/rspec'
|
@@ -33,6 +35,9 @@ VCR.configure do |c|
|
|
33
35
|
c.filter_sensitive_data('<DROPBOX_TOKEN>') { ENV['DROPBOX_TEST_TOKEN'] }
|
34
36
|
c.filter_sensitive_data('<DROPBOX_ID>') { ENV['DROPBOX_ID'] }
|
35
37
|
c.filter_sensitive_data('<DROPBOX_SECRET>') { ENV['DROPBOX_SECRET'] }
|
38
|
+
c.filter_sensitive_data('<GOOGLE_TOKEN>') { ENV['GOOGLE_TEST_TOKEN'] }
|
39
|
+
c.filter_sensitive_data('<GOOGLE_ID>') { ENV['GOOGLE_ID'] }
|
40
|
+
c.filter_sensitive_data('<GOOGLE_SECRET>') { ENV['GOOGLE_SECRET'] }
|
36
41
|
end
|
37
42
|
|
38
43
|
RSpec.configure do |c|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
shared_examples_for 'a service agent' do
|
2
|
-
describe '#default_options' do
|
2
|
+
describe '#default_options', :vcr do
|
3
3
|
it 'has the required options' do
|
4
4
|
(required_keys + [:dir, :service]).each do |key|
|
5
5
|
expect(agent.send(:default_options)).to include(key)
|
@@ -7,7 +7,7 @@ shared_examples_for 'a service agent' do
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
describe '#init_client' do
|
10
|
+
describe '#init_client', :vcr do
|
11
11
|
it 'returns the client' do
|
12
12
|
client = agent.init_client
|
13
13
|
expect(client.class).to be(client_class)
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Worochi::Agent::GoogleDrive do
|
4
|
+
let(:required_keys) { [] }
|
5
|
+
let(:client_class) { Google::APIClient }
|
6
|
+
let(:folder_id) { '0B30CGkhrN5qzaUJGbFNDRjl0S2M' }
|
7
|
+
|
8
|
+
let(:agent) do
|
9
|
+
Worochi::Agent::GoogleDrive.new(
|
10
|
+
token: ENV['GOOGLE_TEST_TOKEN'],
|
11
|
+
dir: '/worochi/test')
|
12
|
+
end
|
13
|
+
|
14
|
+
before do
|
15
|
+
agent.clear_cache
|
16
|
+
end
|
17
|
+
|
18
|
+
it_should_behave_like 'a service agent'
|
19
|
+
|
20
|
+
describe '#get_item_id', :vcr do
|
21
|
+
it 'retrieves the item ID' do
|
22
|
+
expect(agent.send(:get_item_id, '/worochi/test')).to eq(folder_id)
|
23
|
+
# test cache
|
24
|
+
expect(agent.send(:get_item_id, '/worochi/test')).to eq(folder_id)
|
25
|
+
end
|
26
|
+
it 'returns the root ID' do
|
27
|
+
expect(agent.send(:get_item_id, '/')).to eq('root')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#delete', :vcr do
|
32
|
+
it 'deletes a file' do
|
33
|
+
agent.send(:insert_file, 'to_delete', 'root')
|
34
|
+
expect(agent.delete('/to_delete')).to be(true)
|
35
|
+
end
|
36
|
+
it 'raises error on bad token' do
|
37
|
+
bad_agent = Worochi::Agent::GoogleDrive.new(token: 'badtoken')
|
38
|
+
expect{bad_agent.delete('test')}.to raise_error(Worochi::Error)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '#push_item', :vcr do
|
43
|
+
it 'pushes a single item' do
|
44
|
+
end
|
45
|
+
it 'creates new directories as needed' do
|
46
|
+
item = Worochi::Item.open_single(
|
47
|
+
source: local.source,
|
48
|
+
path:'aaa/bbb/ccc.txt')
|
49
|
+
agent.push_item(item)
|
50
|
+
expect(agent.folders).to include('aaa')
|
51
|
+
expect(agent.folders('aaa')).to include('bbb')
|
52
|
+
expect(agent.files('aaa/bbb')).to include('ccc.txt')
|
53
|
+
expect(agent.delete('aaa')).to be(true)
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'raises error on bad token' do
|
57
|
+
bad_agent = Worochi::Agent::GoogleDrive.new(token: 'badtoken')
|
58
|
+
item = Worochi::Item.open_single(local.source)
|
59
|
+
expect{bad_agent.push_item(item)}.to raise_error(Worochi::Error)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#insert_file', :vcr do
|
64
|
+
it 'creates a new folder to root' do
|
65
|
+
agent.send(:insert_file, 'worochi_insertion_test', folder_id)
|
66
|
+
expect(agent.folders).to include('worochi_insertion_test')
|
67
|
+
expect(agent.delete('worochi_insertion_test')).to be(true)
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'uploads a file' do
|
71
|
+
item = Worochi::Item.open_single(
|
72
|
+
source: local.source,
|
73
|
+
path: 'worochi_test.txt')
|
74
|
+
agent.send(:insert_file, item, 'root')
|
75
|
+
expect(agent.files('/')).to include('worochi_test.txt')
|
76
|
+
expect(agent.delete('/worochi_test.txt')).to be(true)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
data/spec/worochi/agent_spec.rb
CHANGED
@@ -2,13 +2,25 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
class Worochi
|
4
4
|
describe Agent do
|
5
|
-
let(:agent) { Agent.new({ service: :github, token: '' }) }
|
5
|
+
let(:agent) { Agent.new({ service: :github, token: '', dir: '/folder' }) }
|
6
6
|
describe '.new' do
|
7
7
|
it 'initializes the right child class' do
|
8
8
|
expect(agent.class).to be(Agent::Github)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
describe '.full_path' do
|
13
|
+
let(:item) { Item.open_single(local.source) }
|
14
|
+
it 'accepts relative paths' do
|
15
|
+
item.path = 'test'
|
16
|
+
expect(agent.send(:full_path, item.path)).to eq('/folder/test')
|
17
|
+
end
|
18
|
+
it 'accepts absolute paths' do
|
19
|
+
item.path = '/test'
|
20
|
+
expect(agent.send(:full_path, item.path)).to eq('/test')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
12
24
|
describe '#name' do
|
13
25
|
it 'returns the display name for the agent' do
|
14
26
|
expect(agent.name).to eq('GitHub')
|
data/spec/worochi/item_spec.rb
CHANGED
@@ -98,4 +98,22 @@ describe Worochi::Item do
|
|
98
98
|
expect(item.read.size).to eq(local.file_size)
|
99
99
|
end
|
100
100
|
end
|
101
|
+
|
102
|
+
describe '#content_type', :vcr do
|
103
|
+
it 'detects the MIME type' do
|
104
|
+
item = Worochi::Item.open_single(local.source)
|
105
|
+
expect(item.content_type).to eq('text/plain')
|
106
|
+
item = Worochi::Item.open_single(remote.source)
|
107
|
+
expect(item.content_type).to eq('image/gif')
|
108
|
+
end
|
109
|
+
it 'falls back to file name when ruby-filemagic is not loaded' do
|
110
|
+
temp = FileMagic
|
111
|
+
Object.send(:remove_const, :FileMagic)
|
112
|
+
item = Worochi::Item.open_single(local.source)
|
113
|
+
expect(item.content_type).to eq('application/octet-stream')
|
114
|
+
item = Worochi::Item.open_single(remote.source)
|
115
|
+
expect(item.content_type).to eq('image/gif')
|
116
|
+
FileMagic = temp
|
117
|
+
end
|
118
|
+
end
|
101
119
|
end
|
data/spec/worochi/oauth_spec.rb
CHANGED
data/worochi.gemspec
CHANGED
@@ -24,9 +24,12 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_runtime_dependency('hashie')
|
25
25
|
s.add_runtime_dependency('oauth2')
|
26
26
|
s.add_runtime_dependency('aws-sdk')
|
27
|
+
s.add_runtime_dependency('mime-types')
|
27
28
|
s.add_runtime_dependency('dropbox-sdk') # Dropbox
|
29
|
+
s.add_runtime_dependency('google-api-client') # Google
|
28
30
|
s.add_runtime_dependency('octokit', ['1.25.0']) # GitHub
|
29
31
|
|
32
|
+
s.add_development_dependency('ruby-filemagic')
|
30
33
|
s.add_development_dependency('rspec', ['~> 2.14.1'])
|
31
34
|
s.add_development_dependency('vcr', ['~> 2.5.0'])
|
32
35
|
s.add_development_dependency('webmock', ['~> 1.9.3'])
|
@@ -35,6 +38,7 @@ Gem::Specification.new do |s|
|
|
35
38
|
s.add_development_dependency('coveralls')
|
36
39
|
s.add_development_dependency('rake')
|
37
40
|
s.add_development_dependency('redcarpet')
|
41
|
+
s.add_development_dependency('awesome_print')
|
38
42
|
|
39
43
|
s.post_install_message = <<-MESSAGE
|
40
44
|
Worochi says, \033[33;1m"RAWRRRRR!!!"\033[0m
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: worochi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Raven Jiang
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mime-types
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: dropbox-sdk
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +80,20 @@ dependencies:
|
|
66
80
|
- - '>='
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: google-api-client
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: octokit
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +108,20 @@ dependencies:
|
|
80
108
|
- - '='
|
81
109
|
- !ruby/object:Gem::Version
|
82
110
|
version: 1.25.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: ruby-filemagic
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
126
|
name: rspec
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,6 +234,20 @@ dependencies:
|
|
192
234
|
- - '>='
|
193
235
|
- !ruby/object:Gem::Version
|
194
236
|
version: '0'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: awesome_print
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - '>='
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - '>='
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
195
251
|
description: Provides a standard way to interface with Ruby API wrappers provided
|
196
252
|
by various cloud storage services such as Dropbox and Google Drive.
|
197
253
|
email:
|
@@ -210,6 +266,7 @@ files:
|
|
210
266
|
- lib/worochi/config.rb
|
211
267
|
- lib/worochi/agent/github.rb
|
212
268
|
- lib/worochi/agent/#example.rb
|
269
|
+
- lib/worochi/agent/google_drive.rb
|
213
270
|
- lib/worochi/agent/dropbox.rb
|
214
271
|
- lib/worochi/helper.rb
|
215
272
|
- lib/worochi/item.rb
|
@@ -229,6 +286,7 @@ files:
|
|
229
286
|
- spec/worochi/helper/github_helper_spec.rb
|
230
287
|
- spec/worochi/agent/dropbox_spec.rb
|
231
288
|
- spec/worochi/agent/github_spec.rb
|
289
|
+
- spec/worochi/agent/google_drive_spec.rb
|
232
290
|
- spec/worochi/config_spec.rb
|
233
291
|
- spec/worochi/agent_spec.rb
|
234
292
|
- spec/worochi/oauth_spec.rb
|
@@ -270,6 +328,26 @@ files:
|
|
270
328
|
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
|
271
329
|
- spec/cassettes/Worochi_Agent_Github/_source_branch/retrieves_the_master_branch_correctly.yml
|
272
330
|
- spec/cassettes/Worochi_Agent_Github/_repos/lists_the_repos.yml
|
331
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_init_client/returns_the_client.yml
|
332
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/shows_detailed_listing_including_the_required_fields.yml
|
333
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/contains_folder1_and_file1.yml
|
334
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/raises_error_on_invalid_path.yml
|
335
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/does_not_contain_folder1.yml
|
336
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/contains_file1.yml
|
337
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml
|
338
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_default_options/has_the_required_options.yml
|
339
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml
|
340
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/does_not_contain_file1.yml
|
341
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
|
342
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/uploads_a_file.yml
|
343
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/creates_a_new_folder_to_root.yml
|
344
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/retrieves_the_item_ID.yml
|
345
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/returns_the_root_ID.yml
|
346
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/pushes_a_single_item.yml
|
347
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/raises_error_on_bad_token.yml
|
348
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/creates_new_directories_as_needed.yml
|
349
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_delete/deletes_a_file.yml
|
350
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_delete/raises_error_on_bad_token.yml
|
273
351
|
- spec/cassettes/Worochi/_push/pushes_with_agents.yml
|
274
352
|
- spec/cassettes/Worochi_Item/_open_single/accepts_a_String.yml
|
275
353
|
- spec/cassettes/Worochi_Item/_open_single/works_with_AWS_S3_paths.yml
|
@@ -281,6 +359,8 @@ files:
|
|
281
359
|
- spec/cassettes/Worochi_Item/_open/with_multiple_files/accepts_Hash_parameters.yml
|
282
360
|
- spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_String_parameter.yml
|
283
361
|
- spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_Hash_parameter.yml
|
362
|
+
- spec/cassettes/Worochi_Item/_content_type/detects_the_MIME_type.yml
|
363
|
+
- spec/cassettes/Worochi_Item/_content_type/falls_back_to_file_name_when_ruby-filemagic_is_not_loaded.yml
|
284
364
|
- spec/cassettes/Worochi_OAuth/_flow_end/rejects_bad_code.yml
|
285
365
|
- spec/cassettes/Worochi_OAuth/_refresh/tries_to_refresh_the_access_token.yml
|
286
366
|
homepage: https://github.com/Pixelapse/worochi
|
@@ -315,6 +395,7 @@ test_files:
|
|
315
395
|
- spec/worochi/helper/github_helper_spec.rb
|
316
396
|
- spec/worochi/agent/dropbox_spec.rb
|
317
397
|
- spec/worochi/agent/github_spec.rb
|
398
|
+
- spec/worochi/agent/google_drive_spec.rb
|
318
399
|
- spec/worochi/config_spec.rb
|
319
400
|
- spec/worochi/agent_spec.rb
|
320
401
|
- spec/worochi/oauth_spec.rb
|
@@ -356,6 +437,26 @@ test_files:
|
|
356
437
|
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
|
357
438
|
- spec/cassettes/Worochi_Agent_Github/_source_branch/retrieves_the_master_branch_correctly.yml
|
358
439
|
- spec/cassettes/Worochi_Agent_Github/_repos/lists_the_repos.yml
|
440
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_init_client/returns_the_client.yml
|
441
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/shows_detailed_listing_including_the_required_fields.yml
|
442
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/contains_folder1_and_file1.yml
|
443
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/raises_error_on_invalid_path.yml
|
444
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/does_not_contain_folder1.yml
|
445
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/contains_file1.yml
|
446
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml
|
447
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_default_options/has_the_required_options.yml
|
448
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml
|
449
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/does_not_contain_file1.yml
|
450
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
|
451
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/uploads_a_file.yml
|
452
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/creates_a_new_folder_to_root.yml
|
453
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/retrieves_the_item_ID.yml
|
454
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/returns_the_root_ID.yml
|
455
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/pushes_a_single_item.yml
|
456
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/raises_error_on_bad_token.yml
|
457
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/creates_new_directories_as_needed.yml
|
458
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_delete/deletes_a_file.yml
|
459
|
+
- spec/cassettes/Worochi_Agent_GoogleDrive/_delete/raises_error_on_bad_token.yml
|
359
460
|
- spec/cassettes/Worochi/_push/pushes_with_agents.yml
|
360
461
|
- spec/cassettes/Worochi_Item/_open_single/accepts_a_String.yml
|
361
462
|
- spec/cassettes/Worochi_Item/_open_single/works_with_AWS_S3_paths.yml
|
@@ -367,6 +468,8 @@ test_files:
|
|
367
468
|
- spec/cassettes/Worochi_Item/_open/with_multiple_files/accepts_Hash_parameters.yml
|
368
469
|
- spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_String_parameter.yml
|
369
470
|
- spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_Hash_parameter.yml
|
471
|
+
- spec/cassettes/Worochi_Item/_content_type/detects_the_MIME_type.yml
|
472
|
+
- spec/cassettes/Worochi_Item/_content_type/falls_back_to_file_name_when_ruby-filemagic_is_not_loaded.yml
|
370
473
|
- spec/cassettes/Worochi_OAuth/_flow_end/rejects_bad_code.yml
|
371
474
|
- spec/cassettes/Worochi_OAuth/_refresh/tries_to_refresh_the_access_token.yml
|
372
475
|
has_rdoc:
|