wetransfer 0.3.2 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1b5bfa1c6ff82d87a1f5bd0df47c3af5ceff2163
4
- data.tar.gz: 0a285f8cacb13b4ee36c85d1c8dbba71c8b94543
3
+ metadata.gz: 6c3bcf1003d1940a7f374bc5e395ed0c0ed245c5
4
+ data.tar.gz: 6a9d0d2dcb79b3d9645836a689af75f4623131e1
5
5
  SHA512:
6
- metadata.gz: ceef985fc774024519eeb25ffd454b879148c58241dcee6e82a2c38dddf767ae2711a8e601e15a902a3636fa160d973eb3cf3bde67e8062d6a99b88c374ee01c
7
- data.tar.gz: 62cfcc59be9f9e197b3cdbd9e43759f406f290edff63b65313568cd3c57e0e730f529b4f328620c56578e553189cc856142b14b28e52b26689c24970396ed26b
6
+ metadata.gz: e8e7ce672d56cae479a45c2f8dc370f5a87515c4d55dae54ecd0106250d0d0e1d06b82e687a19dc376e24d0fd51b063d57d9a92815fdbcc4cad33fcae9fc60c7
7
+ data.tar.gz: 3c3d91e6bab75ea66f4a79e3248b4363bffe1c08e0f3a798c24d7275eaf50a5a42067ef1b78bbfc7adcd2a2093d96898b07f84e1ea66ec7b0b96263443646fa6
data/.gitignore CHANGED
@@ -11,4 +11,4 @@
11
11
 
12
12
  # rspec failure tracking
13
13
  .rspec_status
14
- .env
14
+ .env
data/.rubocop.yml CHANGED
@@ -1,6 +1,2 @@
1
1
  inherit_gem:
2
2
  wetransfer_style: ruby/default.yml
3
- AllCops:
4
- Exclude:
5
- - 'vendor/**/*'
6
- - './spec/test_server.rb'
data/.travis.yml CHANGED
@@ -10,5 +10,6 @@ matrix:
10
10
  allow_failures:
11
11
  - rvm: jruby-9.0
12
12
  script:
13
- - bundle exec rspec
13
+ - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then bundle exec rspec --exclude-pattern "spec/integration_spec.rb"; fi'
14
+ - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bundle exec rspec; fi'
14
15
  - bundle exec rubocop -c .rubocop.yml --force-exclusion
data/README.md CHANGED
@@ -68,6 +68,7 @@ transfer = @client.create_transfer(name: "My wonderful transfer", description: "
68
68
  upload.add_file_at(path: '/path/to/local/file.jpg')
69
69
  upload.add_file_at(path: '/path/to/another/local/file.jpg')
70
70
  upload.add_file(name: 'README.txt', io: StringIO.new("This is the contents of the file"))
71
+ upload.add_web_content(path: "https://www.the.url.you.want.to.share.com"))
71
72
  end
72
73
 
73
74
  transfer.shortened_url => "https://we.tl/SSBsb3ZlIHJ1Ynk="
@@ -114,4 +115,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
114
115
 
115
116
  ## Code of Conduct
116
117
 
117
- Everyone interacting in the WeTransfer Ruby SDK project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/WeTransfer/wetransfer_ruby_sdk/blob/master/.github/CODE_OF_CONDUCT.md).
118
+ Everyone interacting in the WeTransfer Ruby SDK project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/WeTransfer/wetransfer_ruby_sdk/blob/master/.github/CODE_OF_CONDUCT.md).
@@ -3,78 +3,23 @@ require 'logger'
3
3
  require 'ks'
4
4
  require 'securerandom'
5
5
  require 'json'
6
+ require 'open-uri'
7
+ require 'open_uri_redirections'
6
8
 
7
9
  class WeTransferClient
8
10
  require_relative 'we_transfer_client/version'
11
+ require_relative 'we_transfer_client/future_file_item'
12
+ require_relative 'we_transfer_client/future_web_item'
13
+ require_relative 'we_transfer_client/future_transfer'
14
+ require_relative 'we_transfer_client/transfer_builder'
15
+ require_relative 'we_transfer_client/remote_transfer'
16
+ require_relative 'we_transfer_client/remote_item'
9
17
 
10
18
  class Error < StandardError
11
19
  end
12
20
 
13
21
  NULL_LOGGER = Logger.new(nil)
14
22
  MAGIC_PART_SIZE = 6 * 1024 * 1024
15
- EXPOSED_COLLECTION_ATTRIBUTES = [:id, :version_identifier, :state, :shortened_url, :name, :description, :size, :items]
16
- EXPOSED_ITEM_ATTRIBUTES = [:id, :local_identifier, :content_identifier, :name, :size, :mime_type]
17
-
18
- class FutureFileItem < Ks.strict(:name, :io, :local_identifier)
19
- def initialize(**kwargs)
20
- super(local_identifier: SecureRandom.uuid, **kwargs)
21
- end
22
-
23
- def to_item_request_params
24
- # Ideally the content identifier should stay the same throughout multiple
25
- # calls if the file contents doesn't change.
26
- {
27
- content_identifier: 'file',
28
- local_identifier: local_identifier,
29
- filename: name,
30
- filesize: io.size,
31
- }
32
- end
33
- end
34
-
35
- class TransferBuilder
36
- attr_reader :items
37
-
38
- def initialize
39
- @items = []
40
- end
41
-
42
- def add_file(name:, io:)
43
- ensure_io_compliant!(io)
44
- @items << FutureFileItem.new(name: name, io: io)
45
- true
46
- end
47
-
48
- def add_file_at(path:)
49
- add_file(name: File.basename(path), io: File.open(path, 'rb'))
50
- end
51
-
52
- def ensure_io_compliant!(io)
53
- io.seek(0)
54
- io.read(1) # Will cause things like Errno::EACCESS to happen early, before the upload begins
55
- io.seek(0) # Also rewinds the IO for later uploading action
56
- size = io.size # Will cause a NoMethodError
57
- raise Error, 'The IO object given to add_file has a size of 0' if size <= 0
58
- rescue NoMethodError
59
- raise Error, "The IO object given to add_file must respond to seek(), read() and size(), but #{io.inspect} did not"
60
- end
61
- end
62
-
63
- class FutureTransfer < Ks.strict(:name, :description, :items)
64
- def to_create_transfer_params
65
- {
66
- name: name,
67
- description: description,
68
- items: items.map(&:to_item_request_params),
69
- }
70
- end
71
- end
72
-
73
- class RemoteTransfer < Ks.strict(*EXPOSED_COLLECTION_ATTRIBUTES)
74
- end
75
-
76
- class RemoteItem < Ks.strict(*EXPOSED_ITEM_ATTRIBUTES)
77
- end
78
23
 
79
24
  def initialize(api_key:, logger: NULL_LOGGER)
80
25
  @api_url_base = 'https://dev.wetransfer.com'
@@ -114,7 +59,9 @@ class WeTransferClient
114
59
 
115
60
  create_transfer_response.fetch(:items).each do |remote_item|
116
61
  local_item = item_id_map.fetch(remote_item.fetch(:local_identifier))
62
+ next unless local_item.is_a?(FutureFileItem)
117
63
  remote_item_id = remote_item.fetch(:id)
64
+
118
65
  put_io_in_parts(
119
66
  remote_item_id,
120
67
  remote_item.fetch(:meta).fetch(:multipart_parts),
@@ -129,7 +76,6 @@ class WeTransferClient
129
76
  )
130
77
  ensure_ok_status!(complete_response)
131
78
  end
132
-
133
79
  remote_transfer
134
80
  end
135
81
 
@@ -0,0 +1,16 @@
1
+ class FutureFileItem < Ks.strict(:name, :io, :local_identifier)
2
+ def initialize(**kwargs)
3
+ super(local_identifier: SecureRandom.uuid, **kwargs)
4
+ end
5
+
6
+ def to_item_request_params
7
+ # Ideally the content identifier should stay the same throughout multiple
8
+ # calls if the file contents doesn't change.
9
+ {
10
+ content_identifier: 'file',
11
+ local_identifier: local_identifier,
12
+ filename: name,
13
+ filesize: io.size,
14
+ }
15
+ end
16
+ end
@@ -0,0 +1,9 @@
1
+ class FutureTransfer < Ks.strict(:name, :description, :items)
2
+ def to_create_transfer_params
3
+ {
4
+ name: name,
5
+ description: description,
6
+ items: items.map(&:to_item_request_params),
7
+ }
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ class FutureWebItem < Ks.strict(:url, :title, :local_identifier)
2
+ def initialize(**kwargs)
3
+ super(local_identifier: SecureRandom.uuid, **kwargs)
4
+ end
5
+
6
+ def to_item_request_params
7
+ # Ideally the content identifier should stay the same throughout multiple
8
+ # calls if the file contents doesn't change.
9
+ {
10
+ content_identifier: 'web_content',
11
+ local_identifier: local_identifier,
12
+ url: url,
13
+ meta: {
14
+ title: title
15
+ }
16
+ }
17
+ end
18
+ end
@@ -0,0 +1,2 @@
1
+ class RemoteItem < Ks.strict(:id, :local_identifier, :content_identifier, :name, :size, :mime_type, :url, :title)
2
+ end
@@ -0,0 +1,2 @@
1
+ class RemoteTransfer < Ks.strict(:id, :version_identifier, :state, :shortened_url, :name, :description, :size, :items)
2
+ end
@@ -0,0 +1,35 @@
1
+ class TransferBuilder
2
+ attr_reader :items
3
+ class TransferIOError < StandardError; end
4
+
5
+ def initialize
6
+ @items = []
7
+ end
8
+
9
+ def add_file(name:, io:)
10
+ ensure_io_compliant!(io)
11
+ @items << FutureFileItem.new(name: name, io: io)
12
+ true
13
+ end
14
+
15
+ def add_file_at(path:)
16
+ add_file(name: File.basename(path), io: File.open(path, 'rb'))
17
+ end
18
+
19
+ def add_web_content(path:)
20
+ url = open(path, allow_redirections: :safe).base_uri.to_s
21
+ url_title = url.split('/').last
22
+ @items << FutureWebItem.new(url: url, title: url_title)
23
+ true
24
+ end
25
+
26
+ def ensure_io_compliant!(io)
27
+ io.seek(0)
28
+ io.read(1) # Will cause things like Errno::EACCESS to happen early, before the upload begins
29
+ io.seek(0) # Also rewinds the IO for later uploading action
30
+ size = io.size # Will cause a NoMethodError
31
+ raise TransferIOError, 'The IO object given to add_file has a size of 0' if size <= 0
32
+ rescue NoMethodError
33
+ raise TransferIOError, "The IO object given to add_file must respond to seek(), read() and size(), but #{io.inspect} did not"
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  class WeTransferClient
2
- VERSION = '0.3.2'
2
+ VERSION = '0.4.0'
3
3
  end
@@ -15,10 +15,6 @@ describe WeTransferClient do
15
15
  tf
16
16
  end
17
17
 
18
- it 'exposes VERSION' do
19
- expect(WeTransferClient::VERSION).to be_kind_of(String)
20
- end
21
-
22
18
  it 'is able to create a transfer start to finish, both with small and large files' do
23
19
  client = WeTransferClient.new(api_key: ENV.fetch('WT_API_KEY'), logger: test_logger)
24
20
  transfer = client.create_transfer(name: 'My amazing board', description: 'Hi there!') do |builder|
@@ -37,7 +33,7 @@ describe WeTransferClient do
37
33
  expect(add_result).to eq(true)
38
34
  end
39
35
 
40
- expect(transfer).to be_kind_of(WeTransferClient::RemoteTransfer)
36
+ expect(transfer).to be_kind_of(RemoteTransfer)
41
37
  expect(transfer.id).to be_kind_of(String)
42
38
 
43
39
  # expect(transfer.version_identifier).to be_kind_of(String)
@@ -48,7 +44,7 @@ describe WeTransferClient do
48
44
  expect(transfer.items.length).to eq(3)
49
45
 
50
46
  item = transfer.items.first
51
- expect(item).to be_kind_of(WeTransferClient::RemoteItem)
47
+ expect(item).to be_kind_of(RemoteItem)
52
48
 
53
49
  expect(transfer.shortened_url).to be_kind_of(String)
54
50
  response = Faraday.get(transfer.shortened_url)
@@ -96,4 +92,69 @@ describe WeTransferClient do
96
92
  end
97
93
  }.to raise_error(/has a size of 0/)
98
94
  end
95
+
96
+ it 'is able to create a transfer with only webcontent' do
97
+ client = WeTransferClient.new(api_key: ENV.fetch('WT_API_KEY'), logger: test_logger)
98
+ transfer = client.create_transfer(name: 'My collection of web content', description: 'link collection') do |builder|
99
+ 10.times do
100
+ builder.add_web_content(path: 'https://www.wetransfer.com')
101
+ end
102
+ end
103
+ expect(transfer).to be_kind_of(RemoteTransfer)
104
+ expect(transfer.id).to be_kind_of(String)
105
+
106
+ # expect(transfer.version_identifier).to be_kind_of(String)
107
+ expect(transfer.state).to be_kind_of(String)
108
+ expect(transfer.name).to eq('My collection of web content')
109
+ expect(transfer.description).to eq('link collection')
110
+ expect(transfer.items).to be_kind_of(Array)
111
+ expect(transfer.items.length).to eq(10)
112
+
113
+ item = transfer.items.first
114
+ expect(item).to be_kind_of(RemoteItem)
115
+
116
+ expect(transfer.shortened_url).to be_kind_of(String)
117
+ response = Faraday.get(transfer.shortened_url)
118
+ expect(response.status).to eq(302)
119
+ expect(response['location']).to start_with('https://wetransfer')
120
+ end
121
+
122
+ it 'is able to create a transfer with web_content and files' do
123
+ client = WeTransferClient.new(api_key: ENV.fetch('WT_API_KEY'), logger: test_logger)
124
+ transfer = client.create_transfer(name: 'Mixed Board Content', description: 'Files and Webcontent') do |builder|
125
+ # Upload ourselves
126
+ add_result = builder.add_file(name: File.basename(__FILE__), io: File.open(__FILE__, 'rb'))
127
+ expect(add_result).to eq(true)
128
+
129
+ # Upload ourselves again, but using add_file_at
130
+ add_result = builder.add_file_at(path: __FILE__) # Upload ourselves again, but this time via path
131
+ expect(add_result).to eq(true)
132
+
133
+ # Upload the large file
134
+ add_result = builder.add_file(name: 'large.bin', io: very_large_file)
135
+ expect(add_result).to eq(true)
136
+
137
+ # add url to transfer
138
+ add_result = builder.add_web_content(path: 'http://www.wetransfer.com')
139
+ expect(add_result).to eq(true)
140
+ end
141
+
142
+ expect(transfer).to be_kind_of(RemoteTransfer)
143
+ expect(transfer.id).to be_kind_of(String)
144
+
145
+ # expect(transfer.version_identifier).to be_kind_of(String)
146
+ expect(transfer.state).to be_kind_of(String)
147
+ expect(transfer.name).to eq('Mixed Board Content')
148
+ expect(transfer.description).to eq('Files and Webcontent')
149
+ expect(transfer.items).to be_kind_of(Array)
150
+ expect(transfer.items.length).to eq(4)
151
+
152
+ item = transfer.items.first
153
+ expect(item).to be_kind_of(RemoteItem)
154
+
155
+ expect(transfer.shortened_url).to be_kind_of(String)
156
+ response = Faraday.get(transfer.shortened_url)
157
+ expect(response.status).to eq(302)
158
+ expect(response['location']).to start_with('https://wetransfer')
159
+ end
99
160
  end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe FutureFileItem do
4
+ it 'errors if not given all required arguments' do
5
+ expect {
6
+ described_class.new(name: 'nope', local_identifier: 'sorry')
7
+ }.to raise_error(/missing keyword: io/)
8
+
9
+ expect {
10
+ described_class.new(io: 'nope')
11
+ }.to raise_error(/missing keyword: name/)
12
+ end
13
+
14
+ it 'succeeds if given all arguments' do
15
+ future_file_item = described_class.new(name: 'yes', io: 'hello', local_identifier: '4815162342')
16
+ expect(future_file_item).to be_kind_of(FutureFileItem)
17
+ end
18
+
19
+ it 'succeeds if not passed a local_identifier' do
20
+ future_file_item = described_class.new(name: 'yes', io: 'hello')
21
+ expect(future_file_item).to be_kind_of(FutureFileItem)
22
+ end
23
+
24
+ it 'generates a local_identifier' do
25
+ future_file_item = described_class.new(name: 'who', io: 'ami')
26
+ expect(future_file_item).to be_kind_of(FutureFileItem)
27
+ expect(future_file_item.local_identifier).to_not be nil
28
+ expect(future_file_item.local_identifier).to be_kind_of(String)
29
+ end
30
+
31
+ it 'creates params properly' do
32
+ future_file_item = described_class.new(name: 'yes', io: 'hello')
33
+ item_as_params = future_file_item.to_item_request_params
34
+ expect(item_as_params[:content_identifier]).to eq('file')
35
+ expect(item_as_params[:local_identifier]).to be_kind_of(String)
36
+ expect(item_as_params[:filename]).to eq('yes')
37
+ expect(item_as_params[:filesize]).to eq(5)
38
+ end
39
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe FutureTransfer do
4
+ it 'errors if not given all required arguments' do
5
+ expect {
6
+ described_class.new(name: 'nope', description: 'sorry')
7
+ }.to raise_error(/missing keyword: items/)
8
+
9
+ expect {
10
+ described_class.new(description: 'lol', items: [])
11
+ }.to raise_error(/missing keyword: name/)
12
+
13
+ expect {
14
+ described_class.new(name: 'lol', items: [])
15
+ }.to raise_error(/missing keyword: description/)
16
+ end
17
+
18
+ it 'succeeds if given all required arguments' do
19
+ future_transfer = described_class.new(name: 'frank', description: 'a decent bloke', items: [])
20
+ expect(future_transfer).to be_kind_of(FutureTransfer)
21
+ end
22
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe FutureWebItem do
4
+ it 'errors if not given all required arguments' do
5
+ expect {
6
+ described_class.new(url: 'https://www.wetransfer.com', local_identifier: '321235151')
7
+ }.to raise_error(/missing keyword: title/)
8
+
9
+ expect {
10
+ described_class.new(title: 'wetransfer.com')
11
+ }.to raise_error(/missing keyword: url/)
12
+ end
13
+
14
+ it 'succeeds if given all arguments' do
15
+ future_web_item = described_class.new(url: 'https://www.wetransfer.com', title: 'wetransfer.com', local_identifier: '321235151')
16
+ expect(future_web_item).to be_kind_of(FutureWebItem)
17
+ end
18
+
19
+ it 'succeeds if not passed a local_identifier' do
20
+ future_web_item = described_class.new(url: 'https://www.wetransfer.com', title: 'wetransfer.com')
21
+ expect(future_web_item).to be_kind_of(FutureWebItem)
22
+ end
23
+
24
+ it 'generates a local_identifier' do
25
+ future_web_item = described_class.new(url: 'https://www.wetransfer.com', title: 'wetransfer.com')
26
+ expect(future_web_item).to be_kind_of(FutureWebItem)
27
+ expect(future_web_item.local_identifier).to_not be nil
28
+ expect(future_web_item.local_identifier).to be_kind_of(String)
29
+ end
30
+
31
+ it 'creates params properly' do
32
+ future_web_item = described_class.new(url: 'https://www.wetransfer.com', title: 'wetransfer.com')
33
+ item_as_params = future_web_item.to_item_request_params
34
+ expect(item_as_params[:content_identifier]).to eq('web_content')
35
+ expect(item_as_params[:local_identifier]).to be_kind_of(String)
36
+ expect(item_as_params[:url]).to eq('https://www.wetransfer.com')
37
+ expect(item_as_params[:meta][:title]).to eq('wetransfer.com')
38
+ end
39
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe TransferBuilder do
4
+ it 'raises if given an item with a size of 0' do
5
+ broken = StringIO.new('')
6
+ expect {
7
+ described_class.new.ensure_io_compliant!(broken)
8
+ }.to raise_error(/The IO object given to add_file has a size of 0/)
9
+ end
10
+
11
+ it 'raises if IO raises an error' do
12
+ broken = []
13
+
14
+ expect {
15
+ described_class.new.ensure_io_compliant!(broken)
16
+ }.to raise_error(TransferBuilder::TransferIOError)
17
+ end
18
+
19
+ it 'adds a file' do
20
+ transfer_builder = described_class.new
21
+ transfer_builder.add_file_at(path: __FILE__)
22
+ expect(transfer_builder.items.count).to eq(1)
23
+
24
+ item = transfer_builder.items.first
25
+ expect(item.name).to eq('transfer_builder_spec.rb')
26
+ expect(item.io).to be_kind_of(File)
27
+ expect(item.local_identifier).to be_kind_of(String)
28
+ end
29
+
30
+ it 'should add a url' do
31
+ transfer_builder = described_class.new
32
+ transfer_builder.add_web_content(path: 'https://www.wetransfer.com')
33
+ expect(transfer_builder.items.count).to eq(1)
34
+
35
+ item = transfer_builder.items.first
36
+ expect(item.url).to eq('https://wetransfer.com/')
37
+ expect(item.title).to eq('wetransfer.com')
38
+ expect(item.local_identifier).to be_kind_of(String)
39
+ end
40
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ require_relative '../lib/we_transfer_client.rb'
4
+
5
+ describe WeTransferClient do
6
+ it 'exposes VERSION' do
7
+ expect(WeTransferClient::VERSION).to be_kind_of(String)
8
+ end
9
+ end
data/wetransfer.gemspec CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  Please update your usage accordingly. Thank you and our apologies for the disruption.
34
34
  }
35
35
 
36
- spec.add_dependency 'faraday', '~> 0.15'
36
+ spec.add_dependency 'faraday', '~> 0.12'
37
37
  spec.add_dependency 'ks', '~> 0.0.1'
38
38
 
39
39
  spec.add_development_dependency 'dotenv', '~> 2.2'
@@ -43,4 +43,5 @@ Gem::Specification.new do |spec|
43
43
  spec.add_development_dependency 'rspec', '~> 3.0'
44
44
  spec.add_development_dependency 'simplecov', '~> 0.15'
45
45
  spec.add_development_dependency 'wetransfer_style', '0.5.0'
46
+ spec.add_development_dependency 'open_uri_redirections'
46
47
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wetransfer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noah Berman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-05-12 00:00:00.000000000 Z
12
+ date: 2018-06-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0.15'
20
+ version: '0.12'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0.15'
27
+ version: '0.12'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: ks
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -137,6 +137,20 @@ dependencies:
137
137
  - - '='
138
138
  - !ruby/object:Gem::Version
139
139
  version: 0.5.0
140
+ - !ruby/object:Gem::Dependency
141
+ name: open_uri_redirections
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
140
154
  description: Ruby bindings for using WeTransfer's Public API.
141
155
  email:
142
156
  - noah@wetransfer.com
@@ -164,9 +178,20 @@ files:
164
178
  - bin/setup
165
179
  - examples/create_transfer.rb
166
180
  - lib/we_transfer_client.rb
181
+ - lib/we_transfer_client/future_file_item.rb
182
+ - lib/we_transfer_client/future_transfer.rb
183
+ - lib/we_transfer_client/future_web_item.rb
184
+ - lib/we_transfer_client/remote_item.rb
185
+ - lib/we_transfer_client/remote_transfer.rb
186
+ - lib/we_transfer_client/transfer_builder.rb
167
187
  - lib/we_transfer_client/version.rb
168
188
  - spec/integration_spec.rb
169
189
  - spec/spec_helper.rb
190
+ - spec/we_transfer_client/future_file_item_spec.rb
191
+ - spec/we_transfer_client/future_transfer_spec.rb
192
+ - spec/we_transfer_client/future_web_item_spec.rb
193
+ - spec/we_transfer_client/transfer_builder_spec.rb
194
+ - spec/we_transfer_client_spec.rb
170
195
  - wetransfer.gemspec
171
196
  homepage: https://developers.wetransfer.com
172
197
  licenses:
@@ -192,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
217
  version: '0'
193
218
  requirements: []
194
219
  rubyforge_project:
195
- rubygems_version: 2.6.13
220
+ rubygems_version: 2.6.14
196
221
  signing_key:
197
222
  specification_version: 4
198
223
  summary: A Ruby SDK for WeTransfer's Public API