digitsend 0.0.4 → 0.0.5

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.
@@ -0,0 +1,62 @@
1
+ require "net/http"
2
+ require "net/http/post/multipart"
3
+ require "json"
4
+
5
+ module DigitSend
6
+ class Client
7
+ class <<self
8
+ def call(path, params)
9
+ http = Net::HTTP.new(Config.host, Config.port)
10
+ http.use_ssl = Config.use_ssl
11
+
12
+ response = http.post path, params && params.to_json,
13
+ 'Content-Type' => 'application/json',
14
+ 'Accept' => 'application/vnd.digitsend.v1',
15
+ 'Authorization' => %Q[Token token="#{Config.api_token}"]
16
+
17
+ response.body.empty? ? nil : JSON.parse(response.body)
18
+ end
19
+
20
+ def upload_s3_file(path, data)
21
+ response = create_s3_file(File.basename(path))
22
+
23
+ upload_to_s3 \
24
+ URI.parse(response["url"]),
25
+ response["fields"],
26
+ stream_for_data(path, data)
27
+
28
+ response["uuid"]
29
+ end
30
+
31
+ private
32
+
33
+ def create_s3_file(filename)
34
+ Client.call '/api/s3_files', s3_file: { name: filename }
35
+ end
36
+
37
+ def upload_to_s3(url, fields, stream)
38
+ req = Net::HTTP::Post::Multipart.new \
39
+ url.to_s,
40
+ fields.merge("file" => UploadIO.new(stream, "binary/octet-stream"))
41
+
42
+ n = Net::HTTP.new(url.host, url.port)
43
+ n.use_ssl = true
44
+ n.verify_mode = OpenSSL::SSL::VERIFY_NONE
45
+
46
+ n.start do |http|
47
+ http.request(req)
48
+ end
49
+ end
50
+
51
+ def stream_for_data(path, data)
52
+ if data.nil?
53
+ File.open(path, "r")
54
+ elsif data.is_a?(String)
55
+ StringIO.new(data)
56
+ else
57
+ data
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,17 @@
1
+ module DigitSend
2
+ class Config
3
+ @host = 'api.digitsend.com'
4
+ @use_ssl = true
5
+
6
+ class <<self
7
+ attr_accessor :api_token
8
+ attr_accessor :host
9
+ attr_accessor :use_ssl
10
+ attr_writer :port
11
+
12
+ def port
13
+ @port || ( @use_ssl ? 443 : 80 )
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,35 @@
1
+ module DigitSend
2
+ class Message
3
+ def initialize
4
+ @attachments = []
5
+ end
6
+
7
+ def self.send(&block)
8
+ new.tap { |m| yield(m) }.send
9
+ end
10
+
11
+ attr_accessor :to, :cc, :subject, :body
12
+
13
+ def add_file(filename, data = nil)
14
+ @attachments << [ filename, data ]
15
+ end
16
+
17
+ def send
18
+ Client.call '/api/messages', message: {
19
+ to: to,
20
+ cc: cc,
21
+ subject: subject,
22
+ body: body,
23
+ s3_file_uuids: s3_file_uuids
24
+ }
25
+ end
26
+
27
+ private
28
+
29
+ def s3_file_uuids
30
+ @attachments.collect do |filename, data|
31
+ Client.upload_s3_file(filename, data)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,12 @@
1
+ module DigitSend
2
+ class Repository
3
+ def self.upload(repo_name, path, filename, data)
4
+ uuid = Client.upload_s3_file(filename, data)
5
+
6
+ Client.call '/api/files/versions',
7
+ repo_name: repo_name,
8
+ path: path,
9
+ repo_file_version: { s3_file_uuid: uuid }
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module Digitsend
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/digitsend.rb CHANGED
@@ -1,124 +1,5 @@
1
- require "digitsend/version"
2
- require "net/http"
3
- require "net/http/post/multipart"
4
- require "json"
5
-
6
- module DigitSend
7
- class Config
8
- @host = 'digitsend.com'
9
- @use_ssl = true
10
-
11
- class <<self
12
- attr_accessor :api_token
13
- attr_accessor :host
14
- attr_accessor :use_ssl
15
- attr_writer :port
16
-
17
- def port
18
- @port || ( @use_ssl ? 443 : 80 )
19
- end
20
- end
21
- end
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: File.basename(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
-
80
- class Message
81
- def initialize
82
- @attachments = []
83
- end
84
-
85
- def self.send(&block)
86
- new.tap { |m| yield(m) }.send
87
- end
88
-
89
- attr_accessor :to, :cc, :subject, :body
90
-
91
- def add_file(filename, data = nil)
92
- @attachments << [ filename, data ]
93
- end
94
-
95
- def send
96
- Client.call '/api/messages', message: {
97
- to: to,
98
- cc: cc,
99
- subject: subject,
100
- body: body,
101
- s3_file_uuids: s3_file_uuids
102
- }
103
- end
104
-
105
- private
106
-
107
- def s3_file_uuids
108
- @attachments.collect do |filename, data|
109
- Client.upload_s3_file(filename, data)
110
- end
111
- end
112
- end
113
-
114
- class Repository
115
- def self.upload(repo_name, path, filename, data)
116
- uuid = Client.upload_s3_file(filename, data)
117
-
118
- Client.call '/api/files/versions',
119
- repo_name: repo_name,
120
- path: path,
121
- repo_file_version: { s3_file_uuid: uuid }
122
- end
123
- end
124
- end
1
+ require 'digitsend/version'
2
+ require 'digitsend/config'
3
+ require 'digitsend/client'
4
+ require 'digitsend/message'
5
+ require 'digitsend/repository'
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
4
+ version: 0.0.5
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-09-01 00:00:00.000000000 Z
12
+ date: 2012-09-02 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: client library for DigitSend.
15
15
  email:
@@ -25,6 +25,10 @@ files:
25
25
  - Rakefile
26
26
  - digitsend.gemspec
27
27
  - lib/digitsend.rb
28
+ - lib/digitsend/client.rb
29
+ - lib/digitsend/config.rb
30
+ - lib/digitsend/message.rb
31
+ - lib/digitsend/repository.rb
28
32
  - lib/digitsend/version.rb
29
33
  homepage: ''
30
34
  licenses: []