digitsend 0.0.2 → 0.0.3
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.
- data/lib/digitsend/version.rb +1 -1
- data/lib/digitsend.rb +74 -42
- metadata +2 -2
data/lib/digitsend/version.rb
CHANGED
data/lib/digitsend.rb
CHANGED
@@ -20,73 +20,105 @@ module DigitSend
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
class Client
|
24
|
+
class <<self
|
25
|
+
def call(path, params)
|
26
|
+
http = Net::HTTP.new(Config.host, Config.port)
|
27
|
+
http.use_ssl = Config.use_ssl
|
28
|
+
|
29
|
+
response = http.post path, params && params.to_json,
|
30
|
+
'Content-Type' => 'application/json',
|
31
|
+
'Accept' => 'application/vnd.digitsend.v1',
|
32
|
+
'Authorization' => %Q[Token token="#{Config.api_token}"]
|
33
|
+
|
34
|
+
response.body.empty? ? nil : JSON.parse(response.body)
|
35
|
+
end
|
36
|
+
|
37
|
+
def upload_s3_file(filename, data)
|
38
|
+
response = create_s3_file(filename)
|
39
|
+
|
40
|
+
upload_to_s3 \
|
41
|
+
URI.parse(response["url"]),
|
42
|
+
response["fields"],
|
43
|
+
stream_for_data(filename, data)
|
44
|
+
|
45
|
+
response["uuid"]
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def create_s3_file(name)
|
51
|
+
Client.call '/api/s3_files', s3_file: { name: name }
|
52
|
+
end
|
53
|
+
|
54
|
+
def upload_to_s3(url, fields, stream)
|
55
|
+
req = Net::HTTP::Post::Multipart.new \
|
56
|
+
url.to_s,
|
57
|
+
fields.merge("file" => UploadIO.new(stream, "binary/octet-stream"))
|
58
|
+
|
59
|
+
n = Net::HTTP.new(url.host, url.port)
|
60
|
+
n.use_ssl = true
|
61
|
+
n.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
62
|
+
|
63
|
+
n.start do |http|
|
64
|
+
http.request(req)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def stream_for_data(filename, data)
|
69
|
+
if data.nil?
|
70
|
+
File.open(filename, "r")
|
71
|
+
elsif data.is_a?(String)
|
72
|
+
StringIO.new(data)
|
73
|
+
else
|
74
|
+
data
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
23
80
|
class Message
|
24
81
|
def initialize
|
25
82
|
@attachments = []
|
26
|
-
yield self
|
27
83
|
end
|
28
84
|
|
29
85
|
def self.send(&block)
|
30
|
-
new(
|
86
|
+
new.tap { |m| yield(m) }.send
|
31
87
|
end
|
32
88
|
|
33
89
|
attr_accessor :to, :cc, :subject, :body
|
34
90
|
|
35
|
-
def add_file(
|
36
|
-
@attachments <<
|
91
|
+
def add_file(filename, data = nil)
|
92
|
+
@attachments << [ filename, data ]
|
37
93
|
end
|
38
94
|
|
39
95
|
def send
|
40
|
-
|
96
|
+
Client.call '/api/messages', message: {
|
41
97
|
to: to,
|
42
98
|
cc: cc,
|
43
99
|
subject: subject,
|
44
100
|
body: body,
|
45
|
-
s3_file_uuids:
|
101
|
+
s3_file_uuids: s3_file_uuids
|
46
102
|
}
|
47
103
|
end
|
48
104
|
|
49
105
|
private
|
50
106
|
|
51
|
-
def
|
52
|
-
|
53
|
-
|
54
|
-
update_s3_file(response["uuid"])
|
55
|
-
response["uuid"]
|
56
|
-
end
|
57
|
-
|
58
|
-
def create_s3_file(name)
|
59
|
-
api_call :post, '/api/s3_files', s3_file: { name: name }
|
60
|
-
end
|
61
|
-
|
62
|
-
def upload_to_s3(path, url, fields)
|
63
|
-
req = Net::HTTP::Post::Multipart.new \
|
64
|
-
url.to_s,
|
65
|
-
fields.merge("file" => UploadIO.new(File.open(path), "binary/octet-stream", path))
|
66
|
-
|
67
|
-
n = Net::HTTP.new(url.host, url.port)
|
68
|
-
n.use_ssl = true
|
69
|
-
n.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
70
|
-
|
71
|
-
n.start do |http|
|
72
|
-
http.request(req)
|
107
|
+
def s3_file_uuids
|
108
|
+
@attachments.collect do |filename, data|
|
109
|
+
Client.upload_s3_file(filename, data)
|
73
110
|
end
|
74
111
|
end
|
112
|
+
end
|
75
113
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
def api_call(verb, path, params)
|
81
|
-
http = Net::HTTP.new(Config.host, Config.port)
|
82
|
-
http.use_ssl = Config.use_ssl
|
114
|
+
class Repository
|
115
|
+
def self.upload(repo_name, path, filename, data)
|
116
|
+
uuid = Client.upload_s3_file(filename, data)
|
83
117
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
response.body.empty? ? nil : JSON.parse(response.body)
|
90
|
-
end
|
118
|
+
Client.call '/api/files/versions',
|
119
|
+
repo_name: repo_name,
|
120
|
+
path: path,
|
121
|
+
repo_file_version: { s3_file_uuid: uuid }
|
122
|
+
end
|
91
123
|
end
|
92
124
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: digitsend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-31 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: client library for DigitSend.
|
15
15
|
email:
|