audiobank-client 0.0.2 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4edaf36749c75f1e945aff673c5dc69019f8d083
4
+ data.tar.gz: 5484f94791aa122859e06b433ec6d7b42d60026d
5
+ SHA512:
6
+ metadata.gz: 999d9a05db57f01705c58c37e0580285c6a7fad59eff3afdeb89373041923fba636bc5a55a2cb1aa2449823352a0b1a48ddfdcd37676faffedabb0af4c3e4988
7
+ data.tar.gz: 93bbc11d30b2ded6b545f7dda6efaf93f1b125a021afaf328d99f6506cf0b725ac96be726e4d274199c8ac54fee4f3e379bd87e74034d79cd7e6bad069d110a5
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ test/version_tmp
17
17
  tmp
18
18
  *~
19
19
  log/*
20
+ /.ruby-version
@@ -22,6 +22,8 @@ Gem::Specification.new do |gem|
22
22
  gem.add_runtime_dependency "json"
23
23
  gem.add_runtime_dependency "virtus"
24
24
  gem.add_runtime_dependency "null_logger"
25
+ gem.add_runtime_dependency "trollop"
26
+ gem.add_runtime_dependency "progressbar"
25
27
 
26
28
  gem.add_development_dependency "rake"
27
29
  gem.add_development_dependency "simplecov"
data/bin/audiobank CHANGED
@@ -2,9 +2,4 @@
2
2
 
3
3
  require 'audiobank-client'
4
4
 
5
- # Audiobank::Account.base_uri "audiobank.local"
6
-
7
- account = Audiobank::Account.new(ARGV.shift)
8
- while not ARGV.empty?
9
- account.documents.import ARGV.shift
10
- end
5
+ Audiobank::Client::CLI.new(ARGV).run
@@ -2,10 +2,10 @@ require "audiobank/client/version"
2
2
 
3
3
  require 'logger'
4
4
  require 'json'
5
-
6
- require "virtus"
7
-
8
- require "null_logger"
5
+ require 'virtus'
6
+ require 'null_logger'
7
+ require 'trollop'
8
+ require 'progressbar'
9
9
 
10
10
  begin
11
11
  require "active_support/core_ext/module/attribute_accessors"
@@ -33,3 +33,5 @@ end
33
33
  require "audiobank/document"
34
34
  require "audiobank/documents"
35
35
  require "audiobank/account"
36
+ require "audiobank/client/local_file"
37
+ require "audiobank/client/cli"
@@ -35,7 +35,9 @@ class Audiobank::Account
35
35
  def document(id)
36
36
  Audiobank::Client.logger.info "Request document information : #{id}"
37
37
  get "/documents/#{id}.json" do |response|
38
- Audiobank::Document.new(response) if response.code == 200
38
+ Audiobank::Document.new(response).tap do |document|
39
+ document.account = self
40
+ end if response.code == 200
39
41
  end
40
42
  end
41
43
 
@@ -0,0 +1,91 @@
1
+ module Audiobank::Client
2
+ class CLI
3
+
4
+ attr_accessor :arguments
5
+
6
+ def initialize(arguments = [])
7
+ @arguments = arguments
8
+ end
9
+
10
+ attr_accessor :output
11
+ def output
12
+ @output ||= $stdout
13
+ end
14
+
15
+ def parser
16
+ Trollop::Parser.new.tap do |parser|
17
+ parser.version "AudioBank client v#{Audiobank::Client::VERSION}"
18
+ parser.banner <<-EOS
19
+ Manage your AudioBank documents
20
+
21
+ Usage:
22
+ audiobank [options] <command>
23
+
24
+ where <command> are:
25
+
26
+ import <filenames>+ : to upload or import given files in AudioBank documents
27
+
28
+ where [options] are:
29
+ EOS
30
+
31
+ parser.opt :debug, "Enable log messages"
32
+ parser.opt :token, "Audiobank API token", :type => String
33
+ parser.opt :base_uri, "Change default Audiobank url", :type => String
34
+ end
35
+ end
36
+
37
+ def debug?
38
+ options[:debug]
39
+ end
40
+
41
+ def init
42
+ if debug?
43
+ Audiobank::Client.logger = Logger.new($stderr)
44
+ end
45
+
46
+ account
47
+ end
48
+
49
+ def command
50
+ arguments.shift
51
+ end
52
+
53
+ def run
54
+ Trollop::with_standard_exception_handling(parser) do
55
+ init
56
+ end
57
+
58
+ send command
59
+ end
60
+
61
+ def options
62
+ @options ||= parser.parse(arguments).inject({}) do |map, pair|
63
+ key, value = pair
64
+ unless key == :help or key.to_s.match(/_given$/) or value.blank?
65
+ map[key] = value
66
+ end
67
+ map
68
+ end
69
+ end
70
+
71
+ def account
72
+ Audiobank::Account.base_uri options[:base_uri] if options[:base_uri]
73
+
74
+ if options[:token]
75
+ Audiobank::Account.new(options[:token])
76
+ else
77
+ raise "No information to connect Audiobank account"
78
+ end
79
+ end
80
+
81
+ def import
82
+ arguments.each do |filename|
83
+ unless filename =~ /.audiobank$/
84
+ output.puts "Import #{filename}"
85
+ Audiobank::Client::LocalFile.new(filename).import(account)
86
+ end
87
+ end
88
+ end
89
+
90
+ end
91
+ end
@@ -0,0 +1,95 @@
1
+ require 'tempfile'
2
+ require 'tmpdir'
3
+
4
+ module Audiobank::Client
5
+ class LocalFile
6
+
7
+ attr_reader :filename, :uploaded_file
8
+
9
+ def initialize(filename)
10
+ @filename = @uploaded_file = filename
11
+ end
12
+
13
+ def filename_without_extension
14
+ @filename_without_extension ||= filename.gsub(/\.#{extension}$/, "")
15
+ end
16
+
17
+ def basename
18
+ @basename ||= File.basename(filename)
19
+ end
20
+
21
+ def extension
22
+ @extension ||= File.extname(filename)[1..-1]
23
+ end
24
+
25
+ def document_id
26
+ if basename =~ /^([0-9]+)-/
27
+ $1.to_i
28
+ end
29
+ end
30
+
31
+ def file_uuid
32
+ document_id or Digest::SHA256.hexdigest(filename)
33
+ end
34
+
35
+ def default_title
36
+ File.basename(filename, File.extname(filename))
37
+ end
38
+
39
+ def flac_file
40
+ # "#{filename_without_extension}.flac"
41
+ # (@flac_tempfile ||= Tempfile.new(['audiobank', '.flac'])).path
42
+ "/tmp/#{file_uuid}.flac"
43
+ end
44
+
45
+ def convert
46
+ if extension == "wav"
47
+ # unless FileUtils.uptodate? flac_file, filename
48
+ Audiobank::Client.logger.info "Create flac version"
49
+ system "flac -f -o #{flac_file} '#{filename}'" or raise "Can't convert file to wav"
50
+ # end
51
+ Audiobank::Client.logger.info "Use flac version"
52
+ @uploaded_file = flac_file
53
+ end
54
+ end
55
+
56
+ def import_options
57
+ { :resume => true, :debug => true, :retries => 10, :progress => true }
58
+ end
59
+
60
+ def import(account)
61
+ unless FileUtils.uptodate? uploaded_file, [report_file]
62
+ Audiobank::Client.logger.info "File already imported"
63
+ return
64
+ end
65
+
66
+ convert
67
+
68
+ imported = false
69
+ if document_id
70
+ Audiobank::Client.logger.debug "Found document id : #{document_id}"
71
+ document = account.document(document_id)
72
+ if document
73
+ imported = document.import uploaded_file, import_options
74
+ else
75
+ raise "Document #{document_id} not found"
76
+ end
77
+ else
78
+ imported = account.documents.import uploaded_file, { :title => default_title }, import_options
79
+ end
80
+
81
+ if imported
82
+ Audiobank::Client.logger.debug "Create report #{report_file}"
83
+ system "touch '#{report_file}'"
84
+ # FileUtils.touch report_file
85
+ else
86
+ Audiobank::Client.logger.info "Failed to import #{filename}"
87
+ end
88
+ end
89
+
90
+ def report_file
91
+ "#{filename}.audiobank"
92
+ end
93
+
94
+ end
95
+ end
@@ -1,5 +1,5 @@
1
1
  module Audiobank
2
2
  module Client
3
- VERSION = "0.0.2"
3
+ VERSION = "0.5"
4
4
  end
5
5
  end
@@ -24,18 +24,57 @@ class Audiobank::Document
24
24
  @upload_uri ||= URI.parse(upload)
25
25
  end
26
26
 
27
- def upload!(file)
28
- Net::FTP.open(upload_uri.host) do |ftp|
29
- ftp.login
30
- ftp.chdir upload_uri.path
31
- ftp.putbinaryfile file
27
+ class NullProgressBar
28
+
29
+ def inc(size); end
30
+ def set(size); end
31
+ def finish; end
32
+
33
+ end
34
+
35
+ def upload!(file, options = {})
36
+ Audiobank::Client.logger.debug "Upload #{file} in document #{id} (#{upload_uri})"
37
+
38
+ retry_count = (options[:retries] or 0)
39
+
40
+ progress_bar = (options[:progress] ? ProgressBar.new("Document #{id}", File.size(file)) : NullProgressBar.new)
41
+
42
+ begin
43
+ Net::FTP.open(upload_uri.host) do |ftp|
44
+ ftp.debug_mode = options[:debug]
45
+ ftp.login
46
+ ftp.chdir upload_uri.path
47
+ ftp.resume = options[:resume]
48
+ ftp.passive = true
49
+ ftp.putbinaryfile file, id.to_s do |buf|
50
+ progress_bar.inc buf.size
51
+ end
52
+ end
53
+
54
+ progress_bar.finish
55
+ rescue => e
56
+ Audiobank::Client.logger.debug "Upload #{file} failed #{e}"
57
+ if retry_count > 0
58
+ retry_count -= 1
59
+ progress_bar.set 0
60
+ Audiobank::Client.logger.debug "Retry in 30 seconds"
61
+ sleep 30
62
+ retry
63
+ else
64
+ return nil
65
+ end
32
66
  end
33
67
 
34
68
  self
35
69
  end
36
70
 
37
71
  def confirm
72
+ Audiobank::Client.logger.debug "Confirm upload of document #{id}"
38
73
  account.post "/documents/#{id}/upload/confirm.json"
39
74
  end
40
75
 
76
+ def import(file, options = {})
77
+ upload!(file, options).try(:confirm)
78
+ end
79
+
41
80
  end
@@ -1,5 +1,5 @@
1
1
  class Audiobank::Documents
2
-
2
+
3
3
  attr_accessor :account
4
4
 
5
5
  def initialize(account)
@@ -13,17 +13,18 @@ class Audiobank::Documents
13
13
  post "/documents.json", :document => attributes do |response|
14
14
  Audiobank::Document.new(response).tap do |document|
15
15
  document.account = account
16
+ Audiobank::Client.logger.debug "Created document has id #{document.id}"
16
17
  end
17
18
  end
18
19
  end
19
20
 
20
- def import(file, attributes = {})
21
- attributes = {
22
- :title => File.basename(file, File.extname(file)),
23
- :description => "Uploaded at #{Time.now}"
21
+ def import(file, attributes = {}, options = {})
22
+ attributes = {
23
+ :title => File.basename(file, File.extname(file)),
24
+ :description => "Uploaded at #{Time.now}"
24
25
  }.merge(attributes)
25
26
 
26
- create(attributes).upload!(file).confirm
27
+ create(attributes).import(file)
27
28
  end
28
29
 
29
30
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Audiobank::Documents do
4
-
4
+
5
5
  let(:account) { Audiobank::Account.new "secret" }
6
6
 
7
7
  subject { Audiobank::Documents.new account }
@@ -9,7 +9,7 @@ describe Audiobank::Documents do
9
9
  before(:each) do
10
10
  FakeWeb.allow_net_connect = false
11
11
  end
12
-
12
+
13
13
  describe "#create" do
14
14
 
15
15
  it "should post to /documents.json the document attributes" do
@@ -36,21 +36,16 @@ describe Audiobank::Documents do
36
36
 
37
37
  before do
38
38
  subject.stub :create => document
39
- document.stub :upload! => document, :confirm => true
39
+ document.stub :import => true
40
40
  end
41
-
41
+
42
42
  it "should create a Document with specified attributes" do
43
43
  subject.should_receive(:create).with(hash_including(:title => "dummy")).and_return(document)
44
44
  subject.import file, :title => "dummy"
45
45
  end
46
46
 
47
- it "should upload the specified file" do
48
- document.should_receive(:upload!).with(file)
49
- subject.import file
50
- end
51
-
52
- it "should confirm the upload" do
53
- document.should_receive(:confirm)
47
+ it "should import the document" do
48
+ document.should_receive(:import)
54
49
  subject.import file
55
50
  end
56
51
 
@@ -65,5 +60,5 @@ describe Audiobank::Documents do
65
60
  end
66
61
 
67
62
  end
68
-
63
+
69
64
  end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Audiobank::Client::LocalFile do
4
+
5
+ def local_file(filename)
6
+ Audiobank::Client::LocalFile.new(filename)
7
+ end
8
+
9
+ describe "document_id" do
10
+
11
+ it "should be the number which starts filename" do
12
+ local_file("123-dummy.wav").document_id.should == 123
13
+ end
14
+
15
+ it "should be nil when filename doesn't start with a number" do
16
+ local_file("dummy.wav").document_id.should be_nil
17
+ end
18
+
19
+ end
20
+
21
+ end
metadata CHANGED
@@ -1,203 +1,222 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: audiobank-client
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 2
10
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.5'
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Alban Peignier
14
8
  - Florent Peyraud
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2013-07-17 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- prerelease: false
23
- type: :runtime
24
- version_requirements: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
33
- requirement: *id001
12
+ date: 2016-07-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
34
15
  name: httparty
35
- - !ruby/object:Gem::Dependency
36
- prerelease: false
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
37
21
  type: :runtime
38
- version_requirements: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - <
42
- - !ruby/object:Gem::Version
43
- hash: 11
44
- segments:
45
- - 4
46
- version: "4"
47
- requirement: *id002
48
- name: activesupport
49
- - !ruby/object:Gem::Dependency
50
22
  prerelease: false
51
- type: :runtime
52
- version_requirements: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
55
25
  - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
61
- requirement: *id003
62
- name: json
63
- - !ruby/object:Gem::Dependency
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: activesupport
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "<"
33
+ - !ruby/object:Gem::Version
34
+ version: '4'
35
+ type: :runtime
64
36
  prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '4'
42
+ - !ruby/object:Gem::Dependency
43
+ name: json
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
65
49
  type: :runtime
66
- version_requirements: &id004 !ruby/object:Gem::Requirement
67
- none: false
68
- requirements:
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
69
53
  - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
75
- requirement: *id004
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
76
57
  name: virtus
77
- - !ruby/object:Gem::Dependency
78
- prerelease: false
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
79
63
  type: :runtime
80
- version_requirements: &id005 !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
83
67
  - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
89
- requirement: *id005
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
90
71
  name: null_logger
91
- - !ruby/object:Gem::Dependency
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
92
78
  prerelease: false
93
- type: :development
94
- version_requirements: &id006 !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
97
81
  - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
103
- requirement: *id006
104
- name: rake
105
- - !ruby/object:Gem::Dependency
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: trollop
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :runtime
106
92
  prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: progressbar
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rake
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
107
119
  type: :development
108
- version_requirements: &id007 !ruby/object:Gem::Requirement
109
- none: false
110
- requirements:
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
111
123
  - - ">="
112
- - !ruby/object:Gem::Version
113
- hash: 3
114
- segments:
115
- - 0
116
- version: "0"
117
- requirement: *id007
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
118
127
  name: simplecov
119
- - !ruby/object:Gem::Dependency
120
- prerelease: false
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
121
133
  type: :development
122
- version_requirements: &id008 !ruby/object:Gem::Requirement
123
- none: false
124
- requirements:
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
125
137
  - - ">="
126
- - !ruby/object:Gem::Version
127
- hash: 3
128
- segments:
129
- - 0
130
- version: "0"
131
- requirement: *id008
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
132
141
  name: rspec
133
- - !ruby/object:Gem::Dependency
134
- prerelease: false
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
135
147
  type: :development
136
- version_requirements: &id009 !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
139
151
  - - ">="
140
- - !ruby/object:Gem::Version
141
- hash: 3
142
- segments:
143
- - 0
144
- version: "0"
145
- requirement: *id009
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
146
155
  name: fakeweb
147
- - !ruby/object:Gem::Dependency
148
- prerelease: false
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
149
161
  type: :development
150
- version_requirements: &id010 !ruby/object:Gem::Requirement
151
- none: false
152
- requirements:
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
153
165
  - - ">="
154
- - !ruby/object:Gem::Version
155
- hash: 3
156
- segments:
157
- - 0
158
- version: "0"
159
- requirement: *id010
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
160
169
  name: guard
161
- - !ruby/object:Gem::Dependency
162
- prerelease: false
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
163
175
  type: :development
164
- version_requirements: &id011 !ruby/object:Gem::Requirement
165
- none: false
166
- requirements:
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
167
179
  - - ">="
168
- - !ruby/object:Gem::Version
169
- hash: 3
170
- segments:
171
- - 0
172
- version: "0"
173
- requirement: *id011
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ - !ruby/object:Gem::Dependency
174
183
  name: guard-rspec
175
- - !ruby/object:Gem::Dependency
176
- prerelease: false
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
177
189
  type: :development
178
- version_requirements: &id012 !ruby/object:Gem::Requirement
179
- none: false
180
- requirements:
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
181
193
  - - ">="
182
- - !ruby/object:Gem::Version
183
- hash: 3
184
- segments:
185
- - 0
186
- version: "0"
187
- requirement: *id012
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ - !ruby/object:Gem::Dependency
188
197
  name: guard-bundler
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
189
210
  description: Manage AudioBank documents from command-line or Ruby
190
- email:
211
+ email:
191
212
  - alban@tryphon.eu
192
213
  - florent@tryphon.eu
193
- executables:
214
+ executables:
194
215
  - audiobank
195
216
  extensions: []
196
-
197
217
  extra_rdoc_files: []
198
-
199
- files:
200
- - .gitignore
218
+ files:
219
+ - ".gitignore"
201
220
  - COPYING
202
221
  - COPYRIGHT
203
222
  - Gemfile
@@ -208,6 +227,8 @@ files:
208
227
  - bin/audiobank
209
228
  - lib/audiobank-client.rb
210
229
  - lib/audiobank/account.rb
230
+ - lib/audiobank/client/cli.rb
231
+ - lib/audiobank/client/local_file.rb
211
232
  - lib/audiobank/client/version.rb
212
233
  - lib/audiobank/document.rb
213
234
  - lib/audiobank/documents.rb
@@ -215,47 +236,39 @@ files:
215
236
  - spec/audiobank/account_spec.rb
216
237
  - spec/audiobank/document_spec.rb
217
238
  - spec/audiobank/documents_spec.rb
239
+ - spec/lib/audiobank/client/local_file_spec.rb
218
240
  - spec/spec_helper.rb
219
241
  - spec/support/fakeweb.rb
220
242
  - spec/support/log.rb
221
243
  - tasks/rspec.rake
222
244
  homepage: http://projects.tryphon.eu/projects/audiobank-client
223
245
  licenses: []
224
-
246
+ metadata: {}
225
247
  post_install_message:
226
248
  rdoc_options: []
227
-
228
- require_paths:
249
+ require_paths:
229
250
  - lib
230
- required_ruby_version: !ruby/object:Gem::Requirement
231
- none: false
232
- requirements:
251
+ required_ruby_version: !ruby/object:Gem::Requirement
252
+ requirements:
233
253
  - - ">="
234
- - !ruby/object:Gem::Version
235
- hash: 3
236
- segments:
237
- - 0
238
- version: "0"
239
- required_rubygems_version: !ruby/object:Gem::Requirement
240
- none: false
241
- requirements:
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ required_rubygems_version: !ruby/object:Gem::Requirement
257
+ requirements:
242
258
  - - ">="
243
- - !ruby/object:Gem::Version
244
- hash: 3
245
- segments:
246
- - 0
247
- version: "0"
259
+ - !ruby/object:Gem::Version
260
+ version: '0'
248
261
  requirements: []
249
-
250
262
  rubyforge_project:
251
- rubygems_version: 1.8.24
263
+ rubygems_version: 2.4.5.1
252
264
  signing_key:
253
- specification_version: 3
265
+ specification_version: 4
254
266
  summary: AudioBank API client
255
- test_files:
267
+ test_files:
256
268
  - spec/audiobank/account_spec.rb
257
269
  - spec/audiobank/document_spec.rb
258
270
  - spec/audiobank/documents_spec.rb
271
+ - spec/lib/audiobank/client/local_file_spec.rb
259
272
  - spec/spec_helper.rb
260
273
  - spec/support/fakeweb.rb
261
274
  - spec/support/log.rb