worochi 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +20 -0
- data/lib/worochi/agent/dropbox.rb +26 -4
- data/lib/worochi/agent/github.rb +14 -9
- data/lib/worochi/agent/sample.rb +8 -3
- data/lib/worochi/agent.rb +64 -23
- data/lib/worochi/config.rb +34 -2
- data/lib/worochi/error.rb +1 -0
- data/lib/worochi/helper/github.rb +1 -0
- data/lib/worochi/helper.rb +10 -8
- data/lib/worochi/item.rb +18 -9
- data/lib/worochi/log.rb +11 -0
- data/lib/worochi/version.rb +4 -0
- data/lib/worochi.rb +23 -16
- data/spec/cassettes/Worochi_Agent_Dropbox/_list/works_with_absolute_paths.yml +60 -0
- data/spec/cassettes/Worochi_Agent_Dropbox/_push_item/pushes_a_single_item.yml +303 -0
- data/spec/cassettes/Worochi_Agent_Dropbox/_push_item_chunked/pushes_a_single_item_in_chunks.yml +349 -0
- data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/accepts_a_different_path.yml +60 -0
- data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml +60 -0
- data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/contains_file1.yml +79 -0
- data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/accepts_a_different_path.yml +60 -0
- data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml +60 -0
- data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml +79 -0
- data/spec/cassettes/Worochi_Agent_Github/_list/works_with_absolute_paths.yml +133 -0
- data/spec/cassettes/Worochi_Agent_Github/_push_all/pushes_a_list_of_items_to_create_a_new_commit.yml +989 -0
- data/spec/cassettes/Worochi_Agent_Github/_push_all/pushes_the_file_to_the_right_place.yml +687 -0
- data/spec/cassettes/Worochi_Agent_Github/_source_branch/retrieves_the_master_branch_correctly.yml +68 -0
- data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/accepts_a_different_path.yml +133 -0
- data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml +133 -0
- data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/contains_file1.yml +133 -0
- data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_path.yml +133 -0
- data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml +133 -0
- data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml +133 -0
- data/spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_Hash_parameter.yml +107 -0
- data/spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_String_parameter.yml +107 -0
- data/spec/cassettes/Worochi_Item/_open/opens_multiple_files/with_Hash_parameters.yml +211 -0
- data/spec/cassettes/Worochi_Item/_open/opens_multiple_files/with_String_parameters.yml +107 -0
- data/spec/cassettes/Worochi_Item/_open_single/accepts_a_String.yml +107 -0
- data/spec/cassettes/Worochi_Item/_open_single/works_with_AWS_S3_paths.yml +46 -0
- data/spec/helper.rb +46 -0
- data/spec/support/aws_uri_matcher.rb +12 -0
- data/spec/support/shared_exampes_for_agents.rb +36 -0
- data/spec/support/test_file +1 -0
- data/spec/support/test_files.rb +34 -0
- data/spec/worochi/agent/dropbox_spec.rb +48 -0
- data/spec/worochi/agent/github_spec.rb +77 -0
- data/spec/worochi/agent_spec.rb +2 -0
- data/spec/worochi/helper/github_spec.rb +57 -0
- data/spec/worochi/helper_spec.rb +23 -0
- data/spec/worochi/item_spec.rb +85 -0
- data/spec/worochi_spec.rb +109 -0
- data/worochi.gemspec +27 -4
- metadata +193 -4
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Worochi::Agent::Github do
|
4
|
+
let(:required_keys) { [:repo, :source, :target, :block_size, :commit_msg] }
|
5
|
+
let(:client_class) { Octokit::Client }
|
6
|
+
let(:master_branch) { 'cdddc3941866854cdb41c023d0f5240ed10df053' }
|
7
|
+
|
8
|
+
let(:agent) do
|
9
|
+
Worochi::Agent::Github.new({
|
10
|
+
token: ENV['GITHUB_TEST_TOKEN'],
|
11
|
+
repo: 'darkmirage/test',
|
12
|
+
source: 'master',
|
13
|
+
target: 'rspec',
|
14
|
+
commit_msg: "RSpec Test"
|
15
|
+
})
|
16
|
+
end
|
17
|
+
|
18
|
+
it_should_behave_like 'a service agent'
|
19
|
+
|
20
|
+
before do
|
21
|
+
@client = agent.init_client
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#push_all', :vcr do
|
25
|
+
def delete_target
|
26
|
+
tag = "heads/#{agent.options[:target]}"
|
27
|
+
begin
|
28
|
+
@client.delete_ref(agent.options[:repo], tag)
|
29
|
+
rescue Octokit::UnprocessableEntity
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'pushes a list of items to create a new commit' do
|
34
|
+
@client = agent.init_client
|
35
|
+
delete_target
|
36
|
+
|
37
|
+
hashes = [remote, local].map do |file|
|
38
|
+
{ path: file.path, source: file.source }
|
39
|
+
end
|
40
|
+
items = Worochi::Item.open(hashes)
|
41
|
+
|
42
|
+
sha = agent.push_all(items)
|
43
|
+
ref = @client.ref(agent.options[:repo], "heads/#{agent.options[:target]}")
|
44
|
+
expect(ref.object.sha).to eq(sha)
|
45
|
+
|
46
|
+
commit = @client.commit(agent.options[:repo], sha)
|
47
|
+
expect(commit.commit.message).to eq(agent.options[:commit_msg])
|
48
|
+
|
49
|
+
delete_target
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'pushes the file to the right place' do
|
53
|
+
delete_target
|
54
|
+
|
55
|
+
item = Worochi::Item.open({ source: local.source, path: local.path })
|
56
|
+
|
57
|
+
sha = agent.push_all(item)
|
58
|
+
ls = agent.list(File.dirname(local.path), sha).map { |x| x[:name] }
|
59
|
+
expect(ls).to include(local.name)
|
60
|
+
|
61
|
+
delete_target
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '#source_branch', :vcr do
|
66
|
+
it 'retrieves the master branch correctly' do
|
67
|
+
expect(agent.send(:source_branch)).to eq(master_branch)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#list', :vcr do
|
72
|
+
it 'works with absolute paths' do
|
73
|
+
ls = agent.list('/folder2/subfolder/test').map { |x| x[:name] }
|
74
|
+
expect(ls).to include('abc.txt')
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Worochi::Helper::Github do
|
4
|
+
describe Worochi::Helper::Github::StreamIO do
|
5
|
+
|
6
|
+
let(:size) { 114 }
|
7
|
+
let(:stream) do
|
8
|
+
item = Worochi::Item.open_single(local.source)
|
9
|
+
Worochi::Helper::Github::StreamIO.new(item)
|
10
|
+
end
|
11
|
+
|
12
|
+
after do
|
13
|
+
stream.rewind
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '.new' do
|
17
|
+
it 'initializes' do
|
18
|
+
item = Worochi::Item.open_single(local.source)
|
19
|
+
s = Worochi::Helper::Github::StreamIO.new(item)
|
20
|
+
expect(s.class).to be(Worochi::Helper::Github::StreamIO)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#size' do
|
25
|
+
it 'returns the encoded size' do
|
26
|
+
expect(stream.size).to eq(size)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#read' do
|
31
|
+
it 'encodes a file correctly' do
|
32
|
+
checksum = '0bda09766257c6e8d33557cf4d1e1718e82540d46b53d288fc13198e7126f2bc'
|
33
|
+
content = stream.read
|
34
|
+
expect(Digest::SHA2.hexdigest(content)).to eq(checksum)
|
35
|
+
expect(content.size).to eq(size)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'reads partial lengths' do
|
39
|
+
part = stream.read(6)
|
40
|
+
expect(part).to eq('{"cont')
|
41
|
+
expect(part.size).to eq(6)
|
42
|
+
|
43
|
+
part = stream.read(15)
|
44
|
+
expect(part).to eq('ent":"VGhpcyBpc')
|
45
|
+
expect(part.size).to eq(15)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#rewind' do
|
50
|
+
it 'rewinds the stream' do
|
51
|
+
expect(stream.read(20)).to eq('{"content":"VGhpcyBp')
|
52
|
+
stream.rewind
|
53
|
+
expect(stream.read(20)).to eq('{"content":"VGhpcyBp')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Worochi::Helper do
|
4
|
+
|
5
|
+
describe '.is_s3_path?', :aws do
|
6
|
+
it 'recognizes an S3 path' do
|
7
|
+
expect(Worochi::Helper.is_s3_path?('s3:test/path')).to be_true
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'rejects other paths' do
|
11
|
+
expect(Worochi::Helper.is_s3_path?('test/path')).to be_false
|
12
|
+
expect(Worochi::Helper.is_s3_path?('s3/test/path')).to be_false
|
13
|
+
expect(Worochi::Helper.is_s3_path?('http://a.com/path')).to be_false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '.s3_url', :aws do
|
18
|
+
it 'returns the right S3 URL' do
|
19
|
+
url = Worochi::Helper.s3_url('s3:test/path')
|
20
|
+
expect(url.to_s).to match(/^https.+s3\.amazonaws\.com\/test\/path.*/)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Worochi::Item do
|
4
|
+
describe '.open', :vcr do
|
5
|
+
|
6
|
+
def single_file(file, hash=nil)
|
7
|
+
items = Worochi::Item.open(hash || file.source)
|
8
|
+
checksum = Digest::SHA2.hexdigest(items.first.content.read)
|
9
|
+
expect(items.first.class).to be(Worochi::Item)
|
10
|
+
expect(checksum).to eq(file.checksum)
|
11
|
+
expect(items.first.path).to eq(hash ? hash[:path] : file.name)
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'opens a single file' do
|
15
|
+
it 'with String parameter' do
|
16
|
+
single_file(remote)
|
17
|
+
single_file(local)
|
18
|
+
end
|
19
|
+
it 'with Hash parameter' do
|
20
|
+
single_file(remote, { path: remote.path, source: remote.source })
|
21
|
+
single_file(local, { path: local.path, source: local.source })
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'opens multiple files' do
|
26
|
+
it 'with String parameters' do
|
27
|
+
items = Worochi::Item.open([remote.source, local.source])
|
28
|
+
checksum = Digest::SHA2.hexdigest(items.last.content.read)
|
29
|
+
expect(checksum).to eq(local.checksum)
|
30
|
+
expect(items.size).to eq(2)
|
31
|
+
end
|
32
|
+
it 'with Hash parameters' do
|
33
|
+
hashes = [remote, local, remote, local].map do |file|
|
34
|
+
{ path: file.path, source: file.source }
|
35
|
+
end
|
36
|
+
items = Worochi::Item.open(hashes)
|
37
|
+
checksum = Digest::SHA2.hexdigest(items.last.content.read)
|
38
|
+
expect(checksum).to eq(local.checksum)
|
39
|
+
expect(items.size).to eq(4)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '.open_single', :vcr do
|
45
|
+
it 'accepts a String' do
|
46
|
+
item = Worochi::Item.open_single(remote.source)
|
47
|
+
expect(item.class).to be(Worochi::Item)
|
48
|
+
expect(item.size).to eq(remote.size)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'accepts a Hash' do
|
52
|
+
hash = { path: local.path, source: local.source }
|
53
|
+
item = Worochi::Item.open_single(hash)
|
54
|
+
expect(item.class).to be(Worochi::Item)
|
55
|
+
expect(item.size).to eq(local.size)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'works with AWS S3 paths', :aws do
|
59
|
+
item = Worochi::Item.open_single(s3.source)
|
60
|
+
expect(item.class).to be(Worochi::Item)
|
61
|
+
checksum = Digest::SHA2.hexdigest(item.content.read)
|
62
|
+
expect(checksum).to eq(s3.checksum)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#read' do
|
67
|
+
it 'reads the content' do
|
68
|
+
item = Worochi::Item.open_single(local.source)
|
69
|
+
first_word = item.read(4)
|
70
|
+
expect(first_word).to eq('This')
|
71
|
+
rest = item.read
|
72
|
+
expect(rest.size).to eq(local.size - 4)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '#rewind' do
|
77
|
+
it 'rewinds the content' do
|
78
|
+
item = Worochi::Item.open_single(local.source)
|
79
|
+
item.read
|
80
|
+
expect(item.read.size).to eq(0)
|
81
|
+
expect(item.rewind).to eq(0)
|
82
|
+
expect(item.read.size).to eq(local.size)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Worochi do
|
4
|
+
let(:token) { 'service token' }
|
5
|
+
def create_dropbox_agent
|
6
|
+
Worochi.create(:dropbox, token)
|
7
|
+
end
|
8
|
+
|
9
|
+
def create_github_agent
|
10
|
+
Worochi.create(:github, token)
|
11
|
+
end
|
12
|
+
|
13
|
+
before do
|
14
|
+
Worochi.reset
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '.size' do
|
18
|
+
it 'returns the number of active agents' do
|
19
|
+
expect(Worochi.size).to eq(Worochi.agents.size)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.list' do
|
24
|
+
it 'returns the right agent names' do
|
25
|
+
a = create_dropbox_agent
|
26
|
+
expect(Worochi.list(false)).to include("0")
|
27
|
+
expect(Worochi.list(false)).to include("Dropbox")
|
28
|
+
b = create_github_agent
|
29
|
+
lines = Worochi.list(false).split("\n")
|
30
|
+
expect(lines.first).to include("Dropbox")
|
31
|
+
expect(lines.last).to include("1")
|
32
|
+
expect(lines.last).to include("GitHub")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '.create' do
|
37
|
+
it 'creates a single agent' do
|
38
|
+
a = Worochi.create(:github, token)
|
39
|
+
expect(a.kind_of?(Worochi::Agent)).to be_true
|
40
|
+
expect(Worochi.size).to eq(1)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'creates four agents' do
|
44
|
+
4.times do
|
45
|
+
a = Worochi.create(:dropbox, token)
|
46
|
+
expect(a.kind_of?(Worochi::Agent)).to be_true
|
47
|
+
end
|
48
|
+
expect(Worochi.size).to eq(4)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'requires service and token' do
|
52
|
+
expect { Worochi.create }.to raise_error(ArgumentError)
|
53
|
+
expect { Worochi.create(:dropbox) }.to raise_error(ArgumentError)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '.reset' do
|
58
|
+
it "removes all agents" do
|
59
|
+
5.times { create_github_agent }
|
60
|
+
expect(Worochi.size).to eq(5)
|
61
|
+
Worochi.reset
|
62
|
+
expect(Worochi.size).to eq(0)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '.remove_service' do
|
67
|
+
it 'removes multiple agents by service' do
|
68
|
+
create_dropbox_agent
|
69
|
+
create_github_agent
|
70
|
+
create_dropbox_agent
|
71
|
+
create_github_agent
|
72
|
+
expect(Worochi.size).to eq(4)
|
73
|
+
Worochi.remove_service(:dropbox)
|
74
|
+
create_dropbox_agent
|
75
|
+
expect(Worochi.size).to eq(3)
|
76
|
+
Worochi.remove_service(:github)
|
77
|
+
expect(Worochi.size).to eq(1)
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'removes all agents' do
|
81
|
+
4.times { create_dropbox_agent }
|
82
|
+
4.times { create_github_agent }
|
83
|
+
expect(Worochi.size).to eq(8)
|
84
|
+
Worochi.remove_service
|
85
|
+
expect(Worochi.size).to eq(0)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '.agents' do
|
90
|
+
it 'returns a list of active agents' do
|
91
|
+
a = create_dropbox_agent
|
92
|
+
b = create_dropbox_agent
|
93
|
+
expect(Worochi.agents).to include(a, b)
|
94
|
+
expect(Worochi.agents.size).to eq(2)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe '.add' do
|
99
|
+
it 'adds an agent to the list of active agents' do
|
100
|
+
a = create_dropbox_agent
|
101
|
+
4.times { create_dropbox_agent }
|
102
|
+
expect(Worochi.agents).to include(a)
|
103
|
+
Worochi.reset
|
104
|
+
expect(Worochi.agents).not_to include(a)
|
105
|
+
Worochi.add(a)
|
106
|
+
expect(Worochi.agents).to include(a)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
data/worochi.gemspec
CHANGED
@@ -1,14 +1,37 @@
|
|
1
|
+
lib = File.expand_path('../lib/', __FILE__)
|
2
|
+
$:.unshift lib unless $:.include?(lib)
|
3
|
+
|
4
|
+
require 'worochi/version'
|
5
|
+
|
1
6
|
Gem::Specification.new do |s|
|
2
7
|
s.name = 'worochi'
|
3
|
-
s.version =
|
8
|
+
s.version = Worochi::VERSION
|
4
9
|
s.date = '2013-08-02'
|
5
10
|
s.summary = 'Worochi'
|
6
11
|
s.description = 'Provides a standard way to interface with Ruby API wrappers provided by various cloud storage services such as Dropbox and Google Drive.'
|
12
|
+
|
7
13
|
s.authors = ['Raven Jiang']
|
8
14
|
s.email = ['raven@cs.stanford.edu']
|
9
|
-
s.files = %w(README.md worochi.gemspec)
|
10
|
-
s.files += Dir.glob('lib/**/*.rb')
|
11
|
-
s.require_paths = ["lib"]
|
12
15
|
s.homepage = 'http://rubygems.org/gems/worochi'
|
13
16
|
s.license = 'MIT'
|
17
|
+
|
18
|
+
s.files = %w(README.md LICENSE worochi.gemspec)
|
19
|
+
s.files += Dir.glob('lib/**/*.rb')
|
20
|
+
s.test_files = Dir.glob('spec/**/*')
|
21
|
+
|
22
|
+
s.require_paths = ['lib']
|
23
|
+
|
24
|
+
s.add_runtime_dependency('aws-sdk')
|
25
|
+
s.add_runtime_dependency('dropbox-sdk') # Dropbox
|
26
|
+
s.add_runtime_dependency('octokit') # GitHub
|
27
|
+
|
28
|
+
s.add_development_dependency('rspec', ['~> 2.14.1'])
|
29
|
+
s.add_development_dependency('vcr', ['~> 2.5.0'])
|
30
|
+
s.add_development_dependency('webmock', ['~> 1.9.3'])
|
31
|
+
s.add_development_dependency('awesome_print')
|
32
|
+
s.add_development_dependency('yard')
|
33
|
+
|
34
|
+
s.post_install_message = <<-MESSAGE
|
35
|
+
RAWRRRRR!!!
|
36
|
+
MESSAGE
|
14
37
|
end
|
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.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Raven Jiang
|
@@ -9,7 +9,119 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2013-08-02 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: aws-sdk
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: dropbox-sdk
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: octokit
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.14.1
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.14.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: vcr
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.5.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.5.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: webmock
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.9.3
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.9.3
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: awesome_print
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: yard
|
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'
|
13
125
|
description: Provides a standard way to interface with Ruby API wrappers provided
|
14
126
|
by various cloud storage services such as Dropbox and Google Drive.
|
15
127
|
email:
|
@@ -19,6 +131,7 @@ extensions: []
|
|
19
131
|
extra_rdoc_files: []
|
20
132
|
files:
|
21
133
|
- README.md
|
134
|
+
- LICENSE
|
22
135
|
- worochi.gemspec
|
23
136
|
- lib/worochi/error.rb
|
24
137
|
- lib/worochi/log.rb
|
@@ -30,12 +143,51 @@ files:
|
|
30
143
|
- lib/worochi/agent/dropbox.rb
|
31
144
|
- lib/worochi/helper.rb
|
32
145
|
- lib/worochi/item.rb
|
146
|
+
- lib/worochi/version.rb
|
33
147
|
- lib/worochi.rb
|
148
|
+
- spec/worochi/helper_spec.rb
|
149
|
+
- spec/worochi/item_spec.rb
|
150
|
+
- spec/worochi/helper/github_spec.rb
|
151
|
+
- spec/worochi/agent/dropbox_spec.rb
|
152
|
+
- spec/worochi/agent/github_spec.rb
|
153
|
+
- spec/worochi/agent_spec.rb
|
154
|
+
- spec/worochi_spec.rb
|
155
|
+
- spec/support/aws_uri_matcher.rb
|
156
|
+
- spec/support/shared_exampes_for_agents.rb
|
157
|
+
- spec/support/test_files.rb
|
158
|
+
- spec/support/test_file
|
159
|
+
- spec/cassettes/Worochi_Agent_Dropbox/_push_item_chunked/pushes_a_single_item_in_chunks.yml
|
160
|
+
- spec/cassettes/Worochi_Agent_Dropbox/_list/works_with_absolute_paths.yml
|
161
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/contains_file1.yml
|
162
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/accepts_a_different_path.yml
|
163
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml
|
164
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml
|
165
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/accepts_a_different_path.yml
|
166
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
|
167
|
+
- spec/cassettes/Worochi_Agent_Dropbox/_push_item/pushes_a_single_item.yml
|
168
|
+
- spec/cassettes/Worochi_Agent_Github/_push_all/pushes_the_file_to_the_right_place.yml
|
169
|
+
- spec/cassettes/Worochi_Agent_Github/_push_all/pushes_a_list_of_items_to_create_a_new_commit.yml
|
170
|
+
- spec/cassettes/Worochi_Agent_Github/_list/works_with_absolute_paths.yml
|
171
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/contains_file1.yml
|
172
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/accepts_a_different_path.yml
|
173
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml
|
174
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml
|
175
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_path.yml
|
176
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
|
177
|
+
- spec/cassettes/Worochi_Agent_Github/_source_branch/retrieves_the_master_branch_correctly.yml
|
178
|
+
- spec/cassettes/Worochi_Item/_open_single/accepts_a_String.yml
|
179
|
+
- spec/cassettes/Worochi_Item/_open_single/works_with_AWS_S3_paths.yml
|
180
|
+
- spec/cassettes/Worochi_Item/_open/opens_multiple_files/with_String_parameters.yml
|
181
|
+
- spec/cassettes/Worochi_Item/_open/opens_multiple_files/with_Hash_parameters.yml
|
182
|
+
- spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_String_parameter.yml
|
183
|
+
- spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_Hash_parameter.yml
|
184
|
+
- spec/helper.rb
|
34
185
|
homepage: http://rubygems.org/gems/worochi
|
35
186
|
licenses:
|
36
187
|
- MIT
|
37
188
|
metadata: {}
|
38
|
-
post_install_message:
|
189
|
+
post_install_message: |
|
190
|
+
RAWRRRRR!!!
|
39
191
|
rdoc_options: []
|
40
192
|
require_paths:
|
41
193
|
- lib
|
@@ -55,5 +207,42 @@ rubygems_version: 2.0.6
|
|
55
207
|
signing_key:
|
56
208
|
specification_version: 4
|
57
209
|
summary: Worochi
|
58
|
-
test_files:
|
210
|
+
test_files:
|
211
|
+
- spec/worochi/helper_spec.rb
|
212
|
+
- spec/worochi/item_spec.rb
|
213
|
+
- spec/worochi/helper/github_spec.rb
|
214
|
+
- spec/worochi/agent/dropbox_spec.rb
|
215
|
+
- spec/worochi/agent/github_spec.rb
|
216
|
+
- spec/worochi/agent_spec.rb
|
217
|
+
- spec/worochi_spec.rb
|
218
|
+
- spec/support/aws_uri_matcher.rb
|
219
|
+
- spec/support/shared_exampes_for_agents.rb
|
220
|
+
- spec/support/test_files.rb
|
221
|
+
- spec/support/test_file
|
222
|
+
- spec/cassettes/Worochi_Agent_Dropbox/_push_item_chunked/pushes_a_single_item_in_chunks.yml
|
223
|
+
- spec/cassettes/Worochi_Agent_Dropbox/_list/works_with_absolute_paths.yml
|
224
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/contains_file1.yml
|
225
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/accepts_a_different_path.yml
|
226
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml
|
227
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml
|
228
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/accepts_a_different_path.yml
|
229
|
+
- spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
|
230
|
+
- spec/cassettes/Worochi_Agent_Dropbox/_push_item/pushes_a_single_item.yml
|
231
|
+
- spec/cassettes/Worochi_Agent_Github/_push_all/pushes_the_file_to_the_right_place.yml
|
232
|
+
- spec/cassettes/Worochi_Agent_Github/_push_all/pushes_a_list_of_items_to_create_a_new_commit.yml
|
233
|
+
- spec/cassettes/Worochi_Agent_Github/_list/works_with_absolute_paths.yml
|
234
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/contains_file1.yml
|
235
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/accepts_a_different_path.yml
|
236
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml
|
237
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml
|
238
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_path.yml
|
239
|
+
- spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
|
240
|
+
- spec/cassettes/Worochi_Agent_Github/_source_branch/retrieves_the_master_branch_correctly.yml
|
241
|
+
- spec/cassettes/Worochi_Item/_open_single/accepts_a_String.yml
|
242
|
+
- spec/cassettes/Worochi_Item/_open_single/works_with_AWS_S3_paths.yml
|
243
|
+
- spec/cassettes/Worochi_Item/_open/opens_multiple_files/with_String_parameters.yml
|
244
|
+
- spec/cassettes/Worochi_Item/_open/opens_multiple_files/with_Hash_parameters.yml
|
245
|
+
- spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_String_parameter.yml
|
246
|
+
- spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_Hash_parameter.yml
|
247
|
+
- spec/helper.rb
|
59
248
|
has_rdoc:
|