pdm 0.0.3 → 0.0.4

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.
@@ -35,7 +35,7 @@ module Pdm
35
35
 
36
36
  def get(path, params)
37
37
  with_rest_client(path, params) do |r, uri, params|
38
- r.get(uri, params, :accept => accept)
38
+ r.get(uri, :params => params, :accept => accept)
39
39
  end
40
40
  end
41
41
 
@@ -0,0 +1,32 @@
1
+ module Pdm
2
+
3
+ require "pdm/resource"
4
+
5
+ class Job < Pdm::Resource
6
+
7
+ attr_accessor :last_api_response, :guid, :payload
8
+
9
+ def describe(guid)
10
+ with_exceptions do
11
+ res = api_request.get(describe_uri(guid), describe_params)
12
+ process_describe(res)
13
+ end
14
+ end
15
+
16
+ def describe_uri(guid)
17
+ "/jobs/#{guid}"
18
+ end
19
+
20
+ def describe_params
21
+ {}
22
+ end
23
+
24
+ def process_describe(res)
25
+ self.last_api_response = res = Json.decode(res)
26
+ res["job"].each do |key, value|
27
+ setter = "#{key}="
28
+ __send__(setter, value) if respond_to?(setter)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -6,7 +6,7 @@ module Pdm
6
6
 
7
7
  require "pdm/attachment"
8
8
 
9
- attr_accessor :guid, :mail
9
+ attr_accessor :guid, :mail, :last_api_response
10
10
 
11
11
  def initialize(mail, options = {})
12
12
  self.mail = mail
@@ -72,8 +72,9 @@ module Pdm
72
72
  def create_and_send_job_params(mail)
73
73
  params = basic_params(mail)
74
74
  params.merge!(body_params(mail))
75
- params.merge!(personalization_params(mail))
75
+ params.merge!(personalization_params(mail)) if mail.respond_to?(:personalization)
76
76
  params.merge!(attachment_params(mail))
77
+ params.reject { |k, v| v.nil? || (v.respond_to?(:empty?) && v.empty?) }
77
78
  end
78
79
 
79
80
  def create_and_send_job(mail)
@@ -82,13 +83,38 @@ module Pdm
82
83
  api_request.post(:jobs, params)
83
84
  end
84
85
  end
86
+
87
+ def parse_api_response(res)
88
+ self.last_api_response = res = Json.decode(res)
89
+ if singleton?(res)
90
+ parse_singleton_response(res)
91
+ else
92
+ parse_multiple_response(res)
93
+ end
94
+ end
95
+
96
+ def singleton?(res)
97
+ res.has_key?("singleton_job")
98
+ end
99
+
100
+ def parse_singleton_response(res)
101
+ root = res["singleton_job"]
102
+ root.each do |key, value|
103
+ setter = "#{key}="
104
+ __send__(setter, value) if respond_to?(setter)
105
+ end
106
+ end
107
+
108
+ def parse_multiple_response(res)
109
+ # TODO
110
+ end
85
111
 
86
112
  def deliver
87
113
  res = create_and_send_job(mail)
88
114
 
89
115
  case res.code
90
116
  when 200
91
- self.guid = res.body
117
+ parse_api_response(res)
92
118
  end
93
119
 
94
120
  return res
@@ -1,7 +1,7 @@
1
1
  module Pdm
2
2
 
3
3
  def version
4
- "0.0.3"
4
+ "0.0.4"
5
5
  end
6
6
  module_function :version
7
7
  end
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: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - PipeDevMail
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-26 00:00:00 Z
18
+ date: 2012-03-08 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -29,8 +29,8 @@ dependencies:
29
29
  version: "0"
30
30
  prerelease: false
31
31
  requirement: *id001
32
- type: :development
33
32
  name: rake
33
+ type: :development
34
34
  - !ruby/object:Gem::Dependency
35
35
  version_requirements: &id002 !ruby/object:Gem::Requirement
36
36
  none: false
@@ -43,8 +43,8 @@ dependencies:
43
43
  version: "0"
44
44
  prerelease: false
45
45
  requirement: *id002
46
- type: :runtime
47
46
  name: mail
47
+ type: :runtime
48
48
  - !ruby/object:Gem::Dependency
49
49
  version_requirements: &id003 !ruby/object:Gem::Requirement
50
50
  none: false
@@ -57,8 +57,8 @@ dependencies:
57
57
  version: "0"
58
58
  prerelease: false
59
59
  requirement: *id003
60
- type: :runtime
61
60
  name: yajl-ruby
61
+ type: :runtime
62
62
  - !ruby/object:Gem::Dependency
63
63
  version_requirements: &id004 !ruby/object:Gem::Requirement
64
64
  none: false
@@ -71,8 +71,8 @@ dependencies:
71
71
  version: "0"
72
72
  prerelease: false
73
73
  requirement: *id004
74
- type: :runtime
75
74
  name: rest-client
75
+ type: :runtime
76
76
  description: Wrapper around the PipeDevMail.com API
77
77
  email:
78
78
  - support@pipedevmail.com
@@ -92,6 +92,7 @@ files:
92
92
  - lib/pdm/error.rb
93
93
  - lib/pdm/ext/mail/message.rb
94
94
  - lib/pdm/history.rb
95
+ - lib/pdm/job.rb
95
96
  - lib/pdm/json.rb
96
97
  - lib/pdm/mail.rb
97
98
  - lib/pdm/resource.rb
@@ -127,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
128
  requirements: []
128
129
 
129
130
  rubyforge_project:
130
- rubygems_version: 1.8.11
131
+ rubygems_version: 1.8.17
131
132
  signing_key:
132
133
  specification_version: 3
133
134
  summary: Interact with the PDM API