pdm 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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