Skip to content
This repository was archived by the owner on Dec 11, 2020. It is now read-only.

Commit b345478

Browse files
committed
Refactoring
* use class<<self instead of private_class_method on def self.foobar things
1 parent 0d91332 commit b345478

File tree

1 file changed

+121
-119
lines changed

1 file changed

+121
-119
lines changed

lib/we_transfer/communication_helper.rb

Lines changed: 121 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -12,151 +12,153 @@ module CommunicationHelper
1212

1313
class << self
1414
attr_accessor :logger, :api_key, :bearer_token
15-
end
1615

17-
def_delegator self, :minimal_faraday_config
16+
def reset_authentication!
17+
@api_key = nil
18+
@bearer_token = nil
19+
@request_as = nil
20+
end
1821

19-
def self.reset_authentication!
20-
@api_key = nil
21-
@bearer_token = nil
22-
@request_as = nil
23-
end
22+
def find_transfer(transfer_id)
23+
response = request_as.get("/v2/transfers/%s" % [transfer_id])
24+
ensure_ok_status!(response)
25+
response_body = remote_transfer_params(response.body)
26+
found_transfer = Transfer.new(message: response_body[:message])
27+
setup_transfer(
28+
transfer: found_transfer,
29+
data: response_body
30+
)
31+
end
2432

25-
def self.find_transfer(transfer_id)
26-
response = request_as.get("/v2/transfers/%s" % [transfer_id])
27-
ensure_ok_status!(response)
28-
response_body = remote_transfer_params(response.body)
29-
found_transfer = Transfer.new(message: response_body[:message])
30-
setup_transfer(
31-
transfer: found_transfer,
32-
data: response_body
33-
)
34-
end
33+
def upload_url_for_chunk(transfer_id, file_id, chunk)
34+
response = request_as.get("/v2/transfers/%s/files/%s/upload-url/%s" % [transfer_id, file_id, chunk])
35+
ensure_ok_status!(response)
3536

36-
def self.upload_url_for_chunk(transfer_id, file_id, chunk)
37-
response = request_as.get("/v2/transfers/%s/files/%s/upload-url/%s" % [transfer_id, file_id, chunk])
38-
ensure_ok_status!(response)
37+
JSON.parse(response.body).fetch("url")
38+
end
3939

40-
JSON.parse(response.body).fetch("url")
41-
end
40+
def persist_transfer(transfer)
41+
response = request_as.post(
42+
"/v2/transfers",
43+
transfer.as_request_params.to_json,
44+
)
45+
ensure_ok_status!(response)
4246

43-
def self.persist_transfer(transfer)
44-
response = request_as.post(
45-
"/v2/transfers",
46-
transfer.as_request_params.to_json,
47-
)
48-
ensure_ok_status!(response)
49-
50-
handle_new_transfer_data(
51-
transfer: transfer,
52-
data: remote_transfer_params(response.body)
53-
)
54-
end
47+
handle_new_transfer_data(
48+
transfer: transfer,
49+
data: remote_transfer_params(response.body)
50+
)
51+
end
5552

56-
def self.finalize_transfer(transfer)
57-
response = request_as.put("/v2/transfers/%s/finalize" % transfer.id)
58-
ensure_ok_status!(response)
59-
handle_new_transfer_data(
60-
transfer: transfer,
61-
data: remote_transfer_params(response.body)
62-
)
63-
end
53+
def finalize_transfer(transfer)
54+
response = request_as.put("/v2/transfers/%s/finalize" % transfer.id)
55+
ensure_ok_status!(response)
56+
handle_new_transfer_data(
57+
transfer: transfer,
58+
data: remote_transfer_params(response.body)
59+
)
60+
end
6461

65-
def self.remote_transfer_params(response_body)
66-
JSON.parse(response_body, symbolize_names: true)
67-
end
62+
def remote_transfer_params(response_body)
63+
JSON.parse(response_body, symbolize_names: true)
64+
end
6865

69-
def self.upload_chunk(put_url, chunk_contents)
70-
@chunk_uploader ||= Faraday.new { |c| minimal_faraday_config(c) }
66+
def upload_chunk(put_url, chunk_contents)
67+
@chunk_uploader ||= Faraday.new { |c| minimal_faraday_config(c) }
7168

72-
@chunk_uploader.put(
73-
put_url,
74-
chunk_contents.read,
75-
'Content-Type' => 'binary/octet-stream',
76-
'Content-Length' => chunk_contents.size.to_s
77-
)
78-
end
69+
@chunk_uploader.put(
70+
put_url,
71+
chunk_contents.read,
72+
'Content-Type' => 'binary/octet-stream',
73+
'Content-Length' => chunk_contents.size.to_s
74+
)
75+
end
7976

80-
def self.complete_file(transfer_id, file_id, chunks)
81-
response = request_as.put(
82-
"/v2/transfers/%s/files/%s/upload-complete" % [transfer_id, file_id],
83-
{ part_numbers: chunks }.to_json
84-
)
77+
def complete_file(transfer_id, file_id, chunks)
78+
response = request_as.put(
79+
"/v2/transfers/%s/files/%s/upload-complete" % [transfer_id, file_id],
80+
{ part_numbers: chunks }.to_json
81+
)
8582

86-
ensure_ok_status!(response)
87-
remote_transfer_params(response.body)
88-
end
83+
ensure_ok_status!(response)
84+
remote_transfer_params(response.body)
85+
end
86+
87+
private
8988

90-
private_class_method def self.request_as
91-
@request_as ||= Faraday.new(API_URL_BASE) do |c|
92-
minimal_faraday_config(c)
93-
c.headers = auth_headers.merge DEFAULT_HEADERS
89+
def request_as
90+
@request_as ||= Faraday.new(API_URL_BASE) do |c|
91+
minimal_faraday_config(c)
92+
c.headers = auth_headers.merge DEFAULT_HEADERS
93+
end
9494
end
95-
end
9695

97-
private_class_method def self.setup_transfer(transfer:, data:)
98-
data[:files].each do |file_params|
99-
transfer.add_file(
100-
name: file_params[:name],
101-
size: file_params[:size],
102-
)
96+
def setup_transfer(transfer:, data:)
97+
data[:files].each do |file_params|
98+
transfer.add_file(
99+
name: file_params[:name],
100+
size: file_params[:size],
101+
)
102+
end
103+
104+
handle_new_transfer_data(transfer: transfer, data: data)
103105
end
104106

105-
handle_new_transfer_data(transfer: transfer, data: data)
106-
end
107+
def handle_new_transfer_data(transfer:, data:)
108+
%i[id state url].each do |i_var|
109+
transfer.instance_variable_set "@#{i_var}", data[i_var]
110+
end
107111

108-
private_class_method def self.handle_new_transfer_data(transfer:, data:)
109-
%i[id state url].each do |i_var|
110-
transfer.instance_variable_set "@#{i_var}", data[i_var]
112+
RemoteFile.upgrade(files: transfer.files, files_response: data[:files])
113+
transfer
111114
end
112115

113-
RemoteFile.upgrade(files: transfer.files, files_response: data[:files])
114-
transfer
115-
end
116+
def auth_headers
117+
authorize_if_no_bearer_token!
116118

117-
private_class_method def self.auth_headers
118-
authorize_if_no_bearer_token!
119+
{
120+
'X-API-Key' => api_key,
121+
'Authorization' => "Bearer #{@bearer_token}"
122+
}
123+
end
119124

120-
{
121-
'X-API-Key' => api_key,
122-
'Authorization' => "Bearer #{@bearer_token}"
123-
}
124-
end
125+
def ensure_ok_status!(response)
126+
case response.status
127+
when 200..299
128+
true
129+
when 400..499
130+
logger.error response
131+
raise WeTransfer::CommunicationError, JSON.parse(response.body)["message"]
132+
when 500..504
133+
logger.error response
134+
raise WeTransfer::CommunicationError, "Response had a #{response.status} code, we could retry"
135+
else
136+
logger.error response
137+
raise WeTransfer::CommunicationError, "Response had a #{response.status} code, no idea what to do with that"
138+
end
139+
end
125140

126-
private_class_method def self.ensure_ok_status!(response)
127-
case response.status
128-
when 200..299
129-
true
130-
when 400..499
131-
logger.error response
132-
raise WeTransfer::CommunicationError, JSON.parse(response.body)["message"]
133-
when 500..504
134-
logger.error response
135-
raise WeTransfer::CommunicationError, "Response had a #{response.status} code, we could retry"
136-
else
137-
logger.error response
138-
raise WeTransfer::CommunicationError, "Response had a #{response.status} code, no idea what to do with that"
141+
def authorize_if_no_bearer_token!
142+
return @bearer_token if @bearer_token
143+
144+
response = Faraday.new(API_URL_BASE) do |c|
145+
minimal_faraday_config(c)
146+
c.headers = DEFAULT_HEADERS.merge('X-API-Key' => api_key)
147+
end.post(
148+
'/v2/authorize',
149+
)
150+
ensure_ok_status!(response)
151+
bearer_token = JSON.parse(response.body)['token']
152+
raise WeTransfer::CommunicationError, "The authorization call returned #{response.body} and no usable :token key could be found there" if bearer_token.nil? || bearer_token.empty?
153+
@bearer_token = bearer_token
139154
end
140-
end
141155

142-
private_class_method def self.authorize_if_no_bearer_token!
143-
return @bearer_token if @bearer_token
144-
145-
response = Faraday.new(API_URL_BASE) do |c|
146-
minimal_faraday_config(c)
147-
c.headers = DEFAULT_HEADERS.merge('X-API-Key' => api_key)
148-
end.post(
149-
'/v2/authorize',
150-
)
151-
ensure_ok_status!(response)
152-
bearer_token = JSON.parse(response.body)['token']
153-
raise WeTransfer::CommunicationError, "The authorization call returned #{response.body} and no usable :token key could be found there" if bearer_token.nil? || bearer_token.empty?
154-
@bearer_token = bearer_token
156+
def minimal_faraday_config(config)
157+
config.response :logger, logger
158+
config.adapter Faraday.default_adapter
159+
end
155160
end
156161

157-
private_class_method def self.minimal_faraday_config(config)
158-
config.response :logger, logger
159-
config.adapter Faraday.default_adapter
160-
end
162+
def_delegator self, :minimal_faraday_config
161163
end
162164
end

0 commit comments

Comments
 (0)