pdm 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/pdm/api_request.rb +16 -25
- data/lib/pdm/attachment.rb +30 -0
- data/lib/pdm/ext/mail/message.rb +1 -2
- data/lib/pdm/mail.rb +40 -19
- data/lib/pdm/version.rb +1 -1
- data/pdm.gemspec +1 -1
- metadata +22 -23
data/lib/pdm/api_request.rb
CHANGED
@@ -4,15 +4,16 @@ module Pdm
|
|
4
4
|
|
5
5
|
require "cgi"
|
6
6
|
require "uri"
|
7
|
-
require "
|
7
|
+
require "rest_client"
|
8
8
|
require "pdm/json"
|
9
9
|
|
10
10
|
|
11
|
-
attr_accessor :endpoint, :api_key
|
11
|
+
attr_accessor :endpoint, :api_key, :accept
|
12
12
|
|
13
|
-
def initialize(endpoint, api_key)
|
13
|
+
def initialize(endpoint, api_key, accept = :json)
|
14
14
|
self.endpoint = endpoint
|
15
15
|
self.api_key = api_key
|
16
|
+
self.accept = accept
|
16
17
|
end
|
17
18
|
|
18
19
|
|
@@ -26,37 +27,27 @@ module Pdm
|
|
26
27
|
URI.join(self.endpoint, path.to_s)
|
27
28
|
end
|
28
29
|
|
29
|
-
def
|
30
|
-
params = params.collect { |k,v| "#{k}=#{CGI.escape(v.to_s)}" }
|
31
|
-
params = params.join("&")
|
32
|
-
[path, params].join("?")
|
33
|
-
end
|
34
|
-
|
35
|
-
def request(path, params = {})
|
30
|
+
def with_rest_client(path, params)
|
36
31
|
uri = uri_from_path(path)
|
37
32
|
params = decorate_params(params)
|
38
|
-
|
39
|
-
req = yield(uri, params)
|
40
|
-
http.request(req)
|
41
|
-
end
|
33
|
+
yield(::RestClient, uri.to_s, params)
|
42
34
|
end
|
43
35
|
|
44
|
-
def get(path, params
|
45
|
-
|
46
|
-
|
47
|
-
Net::HTTP::Get.new(query_string)
|
36
|
+
def get(path, params)
|
37
|
+
with_rest_client(path, params) do |r, uri, params|
|
38
|
+
r.get(uri, params, :accept => accept)
|
48
39
|
end
|
49
40
|
end
|
50
|
-
|
51
|
-
def
|
52
|
-
|
53
|
-
|
41
|
+
|
42
|
+
def post(path, params)
|
43
|
+
with_rest_client(path, params) do |r, uri, params|
|
44
|
+
r.post(uri, params, :accept => accept)
|
54
45
|
end
|
55
46
|
end
|
56
47
|
|
57
|
-
def
|
58
|
-
|
59
|
-
|
48
|
+
def put(path, params)
|
49
|
+
with_rest_client(path, params) do |r, uri, params|
|
50
|
+
r.put(uri, params, :accept => accept)
|
60
51
|
end
|
61
52
|
end
|
62
53
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Pdm
|
2
|
+
class Attachment
|
3
|
+
|
4
|
+
attr_accessor :mail_attachment
|
5
|
+
attr_accessor :eof
|
6
|
+
|
7
|
+
def initialize(mail_attachment)
|
8
|
+
self.mail_attachment = mail_attachment
|
9
|
+
self.eof = false
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
def eof?
|
14
|
+
self.eof == true
|
15
|
+
end
|
16
|
+
|
17
|
+
def read(bytes)
|
18
|
+
if eof?
|
19
|
+
nil
|
20
|
+
else
|
21
|
+
self.eof = true
|
22
|
+
mail_attachment.read
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def path
|
27
|
+
mail_attachment.filename
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/pdm/ext/mail/message.rb
CHANGED
data/lib/pdm/mail.rb
CHANGED
@@ -4,6 +4,8 @@ module Pdm
|
|
4
4
|
|
5
5
|
class Mail < Pdm::Resource
|
6
6
|
|
7
|
+
require "pdm/attachment"
|
8
|
+
|
7
9
|
attr_accessor :guid, :mail
|
8
10
|
|
9
11
|
def initialize(mail, options = {})
|
@@ -11,18 +13,22 @@ module Pdm
|
|
11
13
|
super(options)
|
12
14
|
end
|
13
15
|
|
16
|
+
|
17
|
+
def get_body_part(parts, content_type)
|
18
|
+
parts.detect do |p|
|
19
|
+
p.content_type.include?(content_type) &&
|
20
|
+
p.header[:content_disposition].nil?
|
21
|
+
end
|
22
|
+
end
|
14
23
|
|
15
24
|
def get_body_parts(mail)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
html_part = mail.body.to_s
|
25
|
+
[
|
26
|
+
"text/plain",
|
27
|
+
"text/html",
|
28
|
+
].map do |content_type|
|
29
|
+
get_body_part(mail.parts, content_type)
|
22
30
|
end
|
23
|
-
|
24
|
-
[plain_part, html_part]
|
25
|
-
end
|
31
|
+
end
|
26
32
|
|
27
33
|
def basic_params(mail)
|
28
34
|
{
|
@@ -34,39 +40,54 @@ module Pdm
|
|
34
40
|
end
|
35
41
|
|
36
42
|
def body_params(mail)
|
37
|
-
plain_part, html_part = get_body_parts(mail)
|
43
|
+
plain_part, html_part = get_body_parts(mail).map do |p|
|
44
|
+
p && p.body.to_s
|
45
|
+
end
|
38
46
|
{
|
39
47
|
"job[plain]" => plain_part,
|
40
48
|
"job[html]" => html_part,
|
41
49
|
}
|
42
50
|
end
|
43
51
|
|
44
|
-
def
|
45
|
-
return {} if mail.
|
52
|
+
def personalization_params(mail)
|
53
|
+
return {} if mail.personalization.nil?
|
46
54
|
{
|
47
|
-
"job[
|
48
|
-
"job[template_assigns]" => mail.template_assigns,
|
55
|
+
"job[personalization]" => mail.personalization,
|
49
56
|
}
|
50
57
|
end
|
51
|
-
|
58
|
+
|
59
|
+
def attachments_for_rest_client(attachments)
|
60
|
+
attachments.map do |attachment|
|
61
|
+
Pdm::Attachment.new(attachment)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def attachment_params(mail)
|
66
|
+
return {} if mail.attachments.empty?
|
67
|
+
{
|
68
|
+
"job[attachments]" => attachments_for_rest_client(mail.attachments),
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
52
72
|
def create_and_send_job_params(mail)
|
53
73
|
params = basic_params(mail)
|
54
74
|
params.merge!(body_params(mail))
|
55
|
-
params.merge!(
|
75
|
+
params.merge!(personalization_params(mail))
|
76
|
+
params.merge!(attachment_params(mail))
|
56
77
|
end
|
57
78
|
|
58
79
|
def create_and_send_job(mail)
|
59
80
|
params = create_and_send_job_params(mail)
|
60
81
|
with_exceptions do
|
61
|
-
api_request.
|
82
|
+
api_request.post(:jobs, params)
|
62
83
|
end
|
63
84
|
end
|
64
85
|
|
65
86
|
def deliver
|
66
87
|
res = create_and_send_job(mail)
|
67
88
|
|
68
|
-
case res
|
69
|
-
when
|
89
|
+
case res.code
|
90
|
+
when 200
|
70
91
|
self.guid = res.body
|
71
92
|
end
|
72
93
|
|
data/lib/pdm/version.rb
CHANGED
data/pdm.gemspec
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- PipeDevMail
|
@@ -15,11 +15,10 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-11-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-11-26 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
22
|
none: false
|
24
23
|
requirements:
|
25
24
|
- - ">="
|
@@ -28,12 +27,12 @@ dependencies:
|
|
28
27
|
segments:
|
29
28
|
- 0
|
30
29
|
version: "0"
|
31
|
-
version_requirements: *id001
|
32
|
-
name: rake
|
33
|
-
type: :development
|
34
30
|
prerelease: false
|
31
|
+
requirement: *id001
|
32
|
+
type: :development
|
33
|
+
name: rake
|
35
34
|
- !ruby/object:Gem::Dependency
|
36
|
-
|
35
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
37
36
|
none: false
|
38
37
|
requirements:
|
39
38
|
- - ">="
|
@@ -42,12 +41,12 @@ dependencies:
|
|
42
41
|
segments:
|
43
42
|
- 0
|
44
43
|
version: "0"
|
45
|
-
version_requirements: *id002
|
46
|
-
name: mail
|
47
|
-
type: :runtime
|
48
44
|
prerelease: false
|
45
|
+
requirement: *id002
|
46
|
+
type: :runtime
|
47
|
+
name: mail
|
49
48
|
- !ruby/object:Gem::Dependency
|
50
|
-
|
49
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
51
50
|
none: false
|
52
51
|
requirements:
|
53
52
|
- - ">="
|
@@ -56,12 +55,12 @@ dependencies:
|
|
56
55
|
segments:
|
57
56
|
- 0
|
58
57
|
version: "0"
|
59
|
-
version_requirements: *id003
|
60
|
-
name: yajl-ruby
|
61
|
-
type: :runtime
|
62
58
|
prerelease: false
|
59
|
+
requirement: *id003
|
60
|
+
type: :runtime
|
61
|
+
name: yajl-ruby
|
63
62
|
- !ruby/object:Gem::Dependency
|
64
|
-
|
63
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
65
64
|
none: false
|
66
65
|
requirements:
|
67
66
|
- - ">="
|
@@ -70,10 +69,10 @@ dependencies:
|
|
70
69
|
segments:
|
71
70
|
- 0
|
72
71
|
version: "0"
|
73
|
-
version_requirements: *id004
|
74
|
-
name: multipart-post
|
75
|
-
type: :runtime
|
76
72
|
prerelease: false
|
73
|
+
requirement: *id004
|
74
|
+
type: :runtime
|
75
|
+
name: rest-client
|
77
76
|
description: Wrapper around the PipeDevMail.com API
|
78
77
|
email:
|
79
78
|
- support@pipedevmail.com
|
@@ -89,6 +88,7 @@ files:
|
|
89
88
|
- Rakefile
|
90
89
|
- lib/pdm.rb
|
91
90
|
- lib/pdm/api_request.rb
|
91
|
+
- lib/pdm/attachment.rb
|
92
92
|
- lib/pdm/error.rb
|
93
93
|
- lib/pdm/ext/mail/message.rb
|
94
94
|
- lib/pdm/history.rb
|
@@ -98,7 +98,6 @@ files:
|
|
98
98
|
- lib/pdm/template.rb
|
99
99
|
- lib/pdm/version.rb
|
100
100
|
- pdm.gemspec
|
101
|
-
has_rdoc: true
|
102
101
|
homepage: ""
|
103
102
|
licenses: []
|
104
103
|
|
@@ -128,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
127
|
requirements: []
|
129
128
|
|
130
129
|
rubyforge_project:
|
131
|
-
rubygems_version: 1.
|
130
|
+
rubygems_version: 1.8.11
|
132
131
|
signing_key:
|
133
132
|
specification_version: 3
|
134
133
|
summary: Interact with the PDM API
|