postful 0.2.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. data/doc/classes/Postful/Base.html +85 -28
  2. data/doc/classes/Postful/Base.src/M000004.html +8 -8
  3. data/doc/classes/Postful/Base.src/M000005.html +8 -6
  4. data/doc/classes/Postful/Base.src/{M000002.html → M000007.html} +1 -1
  5. data/doc/classes/Postful/Base.src/{M000003.html → M000008.html} +1 -1
  6. data/doc/classes/Postful/Base.src/M000009.html +22 -0
  7. data/doc/classes/Postful/Base.src/M000010.html +20 -0
  8. data/doc/classes/Postful/Base.src/{M000006.html → M000011.html} +1 -1
  9. data/doc/classes/Postful/Base.src/M000012.html +20 -0
  10. data/doc/classes/Postful/Document.html +176 -0
  11. data/doc/classes/Postful/{Base.src/M000001.html → Document.src/M000026.html} +2 -4
  12. data/doc/classes/Postful/Document.src/M000027.html +18 -0
  13. data/doc/classes/Postful/Document.src/M000028.html +18 -0
  14. data/doc/classes/Postful/Letter.html +168 -60
  15. data/doc/classes/Postful/Letter.src/{M000018.html → M000041.html} +2 -2
  16. data/doc/classes/Postful/Letter.src/{M000019.html → M000042.html} +2 -2
  17. data/doc/classes/Postful/Letter.src/M000043.html +18 -0
  18. data/doc/classes/Postful/Letter.src/{M000020.html → M000044.html} +2 -2
  19. data/doc/classes/Postful/Letter.src/{M000021.html → M000045.html} +2 -2
  20. data/doc/classes/Postful/Letter.src/M000046.html +18 -0
  21. data/doc/classes/Postful/Letter.src/{M000022.html → M000047.html} +2 -2
  22. data/doc/classes/Postful/Letter.src/{M000023.html → M000048.html} +2 -2
  23. data/doc/classes/Postful/Letter.src/M000049.html +18 -0
  24. data/doc/classes/Postful/Letter.src/{M000024.html → M000050.html} +2 -2
  25. data/doc/classes/Postful/Letter.src/{M000025.html → M000051.html} +2 -2
  26. data/doc/classes/Postful/Letter.src/M000052.html +18 -0
  27. data/doc/classes/Postful/Letter.src/{M000026.html → M000053.html} +2 -2
  28. data/doc/classes/Postful/Letter.src/{M000027.html → M000054.html} +2 -2
  29. data/doc/classes/Postful/Letter.src/M000055.html +18 -0
  30. data/doc/classes/Postful/Letter.src/{M000028.html → M000056.html} +2 -2
  31. data/doc/classes/Postful/Letter.src/{M000029.html → M000057.html} +2 -2
  32. data/doc/classes/Postful/Letter.src/M000058.html +18 -0
  33. data/doc/classes/Postful/Order.html +20 -20
  34. data/doc/classes/Postful/Order.src/{M000007.html → M000013.html} +0 -0
  35. data/doc/classes/Postful/Order.src/{M000008.html → M000014.html} +0 -0
  36. data/doc/classes/Postful/Order.src/{M000009.html → M000015.html} +0 -0
  37. data/doc/classes/Postful/Order.src/{M000010.html → M000016.html} +0 -0
  38. data/doc/classes/Postful/Postcard.html +15 -15
  39. data/doc/classes/Postful/Postcard.src/{M000011.html → M000023.html} +0 -0
  40. data/doc/classes/Postful/Postcard.src/{M000012.html → M000024.html} +0 -0
  41. data/doc/classes/Postful/Postcard.src/{M000013.html → M000025.html} +0 -0
  42. data/doc/classes/Postful/Section.html +221 -0
  43. data/doc/classes/Postful/Section.src/M000017.html +21 -0
  44. data/doc/classes/Postful/Section.src/M000018.html +18 -0
  45. data/doc/classes/Postful/Section.src/M000019.html +20 -0
  46. data/doc/classes/Postful/Section.src/M000020.html +18 -0
  47. data/doc/classes/Postful/Section.src/M000021.html +25 -0
  48. data/doc/classes/Postful/Section.src/M000022.html +22 -0
  49. data/doc/classes/Postful/Service.html +20 -20
  50. data/doc/classes/Postful/Service.src/{M000014.html → M000037.html} +0 -0
  51. data/doc/classes/Postful/Service.src/{M000015.html → M000038.html} +0 -0
  52. data/doc/classes/Postful/Service.src/{M000016.html → M000039.html} +0 -0
  53. data/doc/classes/Postful/Service.src/{M000017.html → M000040.html} +0 -0
  54. data/doc/classes/Postful/SimpleDocument.html +197 -0
  55. data/doc/classes/Postful/SimpleDocument.src/M000001.html +22 -0
  56. data/doc/classes/Postful/SimpleDocument.src/M000002.html +18 -0
  57. data/doc/classes/Postful/SimpleDocument.src/M000003.html +29 -0
  58. data/doc/classes/Postful/TemplateDocument.html +274 -0
  59. data/doc/classes/Postful/TemplateDocument.src/M000029.html +36 -0
  60. data/doc/classes/Postful/TemplateDocument.src/M000030.html +22 -0
  61. data/doc/classes/Postful/TemplateDocument.src/M000031.html +18 -0
  62. data/doc/classes/Postful/TemplateDocument.src/M000033.html +21 -0
  63. data/doc/classes/Postful/TemplateDocument.src/M000035.html +18 -0
  64. data/doc/classes/Postful/TemplateDocument.src/M000036.html +20 -0
  65. data/doc/created.rid +1 -1
  66. data/doc/files/MIT-LICENSE.html +1 -1
  67. data/doc/files/README.html +1 -1
  68. data/doc/files/lib/postful/base_rb.html +1 -1
  69. data/doc/files/lib/postful/document_rb.html +101 -0
  70. data/doc/files/lib/postful/instance_exec_module_rb.html +1 -1
  71. data/doc/files/lib/postful/letter_rb.html +1 -1
  72. data/doc/files/lib/postful/order_rb.html +1 -1
  73. data/doc/files/lib/postful/postcard_rb.html +1 -1
  74. data/doc/files/lib/postful/section_rb.html +101 -0
  75. data/doc/files/lib/postful/service_rb.html +1 -1
  76. data/doc/files/lib/postful/simple_document_rb.html +101 -0
  77. data/doc/files/lib/postful/template_document_rb.html +101 -0
  78. data/doc/files/lib/postful/util_rb.html +1 -1
  79. data/doc/files/lib/postful_rb.html +1 -1
  80. data/doc/fr_class_index.html +4 -0
  81. data/doc/fr_file_index.html +4 -0
  82. data/doc/fr_method_index.html +58 -29
  83. data/lib/postful/base.rb +20 -0
  84. data/lib/postful/document.rb +18 -0
  85. data/lib/postful/letter.rb +55 -48
  86. data/lib/postful/postcard.rb +4 -0
  87. data/lib/postful/section.rb +46 -0
  88. data/lib/postful/simple_document.rb +38 -0
  89. data/lib/postful/template_document.rb +66 -0
  90. data/lib/postful/util.rb +70 -21
  91. data/test/test_base.rb +71 -0
  92. data/test/test_letter.rb +6 -0
  93. data/test/test_postcard.rb +13 -1
  94. metadata +71 -29
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Mon Aug 11 20:16:49 -0700 2008</td>
59
+ <td>Fri Nov 21 15:40:51 -0800 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Mon Aug 11 14:14:29 -0700 2008</td>
59
+ <td>Mon Aug 11 13:14:29 -0700 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -22,12 +22,16 @@
22
22
  <div id="index-entries">
23
23
  <a href="classes/Postful/AuthorizationException.html">Postful::AuthorizationException</a><br />
24
24
  <a href="classes/Postful/Base.html">Postful::Base</a><br />
25
+ <a href="classes/Postful/Document.html">Postful::Document</a><br />
25
26
  <a href="classes/Postful/InternalServerError.html">Postful::InternalServerError</a><br />
26
27
  <a href="classes/Postful/Letter.html">Postful::Letter</a><br />
27
28
  <a href="classes/Postful/NotFoundException.html">Postful::NotFoundException</a><br />
28
29
  <a href="classes/Postful/Order.html">Postful::Order</a><br />
29
30
  <a href="classes/Postful/Postcard.html">Postful::Postcard</a><br />
31
+ <a href="classes/Postful/Section.html">Postful::Section</a><br />
30
32
  <a href="classes/Postful/Service.html">Postful::Service</a><br />
33
+ <a href="classes/Postful/SimpleDocument.html">Postful::SimpleDocument</a><br />
34
+ <a href="classes/Postful/TemplateDocument.html">Postful::TemplateDocument</a><br />
31
35
  <a href="classes/Postful/UnknownResponseException.html">Postful::UnknownResponseException</a><br />
32
36
  <a href="classes/Postful/ValidationException.html">Postful::ValidationException</a><br />
33
37
  </div>
@@ -24,11 +24,15 @@
24
24
  <a href="files/README.html">README</a><br />
25
25
  <a href="files/lib/postful_rb.html">lib/postful.rb</a><br />
26
26
  <a href="files/lib/postful/base_rb.html">lib/postful/base.rb</a><br />
27
+ <a href="files/lib/postful/document_rb.html">lib/postful/document.rb</a><br />
27
28
  <a href="files/lib/postful/instance_exec_module_rb.html">lib/postful/instance_exec_module.rb</a><br />
28
29
  <a href="files/lib/postful/letter_rb.html">lib/postful/letter.rb</a><br />
29
30
  <a href="files/lib/postful/order_rb.html">lib/postful/order.rb</a><br />
30
31
  <a href="files/lib/postful/postcard_rb.html">lib/postful/postcard.rb</a><br />
32
+ <a href="files/lib/postful/section_rb.html">lib/postful/section.rb</a><br />
31
33
  <a href="files/lib/postful/service_rb.html">lib/postful/service.rb</a><br />
34
+ <a href="files/lib/postful/simple_document_rb.html">lib/postful/simple_document.rb</a><br />
35
+ <a href="files/lib/postful/template_document_rb.html">lib/postful/template_document.rb</a><br />
32
36
  <a href="files/lib/postful/util_rb.html">lib/postful/util.rb</a><br />
33
37
  </div>
34
38
  </div>
@@ -20,35 +20,64 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/Postful/Base.html#M000002">add_address (Postful::Base)</a><br />
24
- <a href="classes/Postful/Postcard.html#M000013">add_border (Postful::Postcard)</a><br />
25
- <a href="classes/Postful/Letter.html#M000018">add_html_document (Postful::Letter)</a><br />
26
- <a href="classes/Postful/Letter.html#M000019">add_html_document_from_file (Postful::Letter)</a><br />
27
- <a href="classes/Postful/Base.html#M000003">add_international_address (Postful::Base)</a><br />
28
- <a href="classes/Postful/Letter.html#M000024">add_open_office_document (Postful::Letter)</a><br />
29
- <a href="classes/Postful/Letter.html#M000025">add_open_office_document_from_file (Postful::Letter)</a><br />
30
- <a href="classes/Postful/Letter.html#M000028">add_pdf_document (Postful::Letter)</a><br />
31
- <a href="classes/Postful/Letter.html#M000029">add_pdf_document_from_file (Postful::Letter)</a><br />
32
- <a href="classes/Postful/Letter.html#M000022">add_rtf_document (Postful::Letter)</a><br />
33
- <a href="classes/Postful/Letter.html#M000023">add_rtf_document_from_file (Postful::Letter)</a><br />
34
- <a href="classes/Postful/Letter.html#M000026">add_text_document (Postful::Letter)</a><br />
35
- <a href="classes/Postful/Letter.html#M000027">add_text_document_from_file (Postful::Letter)</a><br />
36
- <a href="classes/Postful/Letter.html#M000020">add_word_document (Postful::Letter)</a><br />
37
- <a href="classes/Postful/Letter.html#M000021">add_word_document_from_file (Postful::Letter)</a><br />
38
- <a href="classes/Postful/Postcard.html#M000012">back_image_from_file= (Postful::Postcard)</a><br />
39
- <a href="classes/Postful/Order.html#M000009">cancel (Postful::Order)</a><br />
40
- <a href="classes/Postful/Service.html#M000016">cancel_order_by_id (Postful::Service)</a><br />
41
- <a href="classes/Postful/Base.html#M000006">errors (Postful::Base)</a><br />
42
- <a href="classes/Postful/Service.html#M000017">find_all_orders (Postful::Service)</a><br />
43
- <a href="classes/Postful/Service.html#M000015">find_order_by_id (Postful::Service)</a><br />
44
- <a href="classes/Postful/Postcard.html#M000011">front_image_from_file= (Postful::Postcard)</a><br />
45
- <a href="classes/Postful/Base.html#M000004">mail! (Postful::Base)</a><br />
46
- <a href="classes/Postful/Order.html#M000010">new (Postful::Order)</a><br />
47
- <a href="classes/Postful/Service.html#M000014">new (Postful::Service)</a><br />
48
- <a href="classes/Postful/Base.html#M000001">new (Postful::Base)</a><br />
49
- <a href="classes/Postful/Order.html#M000007">preview (Postful::Order)</a><br />
50
- <a href="classes/Postful/Order.html#M000008">refresh (Postful::Order)</a><br />
51
- <a href="classes/Postful/Base.html#M000005">valid? (Postful::Base)</a><br />
23
+ <a href="classes/Postful/Base.html#M000007">add_address (Postful::Base)</a><br />
24
+ <a href="classes/Postful/Postcard.html#M000025">add_border (Postful::Postcard)</a><br />
25
+ <a href="classes/Postful/Base.html#M000005">add_document (Postful::Base)</a><br />
26
+ <a href="classes/Postful/Letter.html#M000041">add_html_document (Postful::Letter)</a><br />
27
+ <a href="classes/Postful/Letter.html#M000042">add_html_document_from_file (Postful::Letter)</a><br />
28
+ <a href="classes/Postful/Letter.html#M000043">add_html_document_from_url (Postful::Letter)</a><br />
29
+ <a href="classes/Postful/Base.html#M000008">add_international_address (Postful::Base)</a><br />
30
+ <a href="classes/Postful/Letter.html#M000050">add_open_office_document (Postful::Letter)</a><br />
31
+ <a href="classes/Postful/Letter.html#M000051">add_open_office_document_from_file (Postful::Letter)</a><br />
32
+ <a href="classes/Postful/Letter.html#M000052">add_open_office_document_from_url (Postful::Letter)</a><br />
33
+ <a href="classes/Postful/Letter.html#M000056">add_pdf_document (Postful::Letter)</a><br />
34
+ <a href="classes/Postful/Letter.html#M000057">add_pdf_document_from_file (Postful::Letter)</a><br />
35
+ <a href="classes/Postful/Letter.html#M000058">add_pdf_document_from_url (Postful::Letter)</a><br />
36
+ <a href="classes/Postful/TemplateDocument.html#M000031">add_property (Postful::TemplateDocument)</a><br />
37
+ <a href="classes/Postful/Letter.html#M000047">add_rtf_document (Postful::Letter)</a><br />
38
+ <a href="classes/Postful/Letter.html#M000048">add_rtf_document_from_file (Postful::Letter)</a><br />
39
+ <a href="classes/Postful/Letter.html#M000049">add_rtf_document_from_url (Postful::Letter)</a><br />
40
+ <a href="classes/Postful/TemplateDocument.html#M000033">add_section (Postful::TemplateDocument)</a><br />
41
+ <a href="classes/Postful/Letter.html#M000053">add_text_document (Postful::Letter)</a><br />
42
+ <a href="classes/Postful/Letter.html#M000054">add_text_document_from_file (Postful::Letter)</a><br />
43
+ <a href="classes/Postful/Letter.html#M000055">add_text_document_from_url (Postful::Letter)</a><br />
44
+ <a href="classes/Postful/Letter.html#M000044">add_word_document (Postful::Letter)</a><br />
45
+ <a href="classes/Postful/Letter.html#M000045">add_word_document_from_file (Postful::Letter)</a><br />
46
+ <a href="classes/Postful/Letter.html#M000046">add_word_document_from_url (Postful::Letter)</a><br />
47
+ <a href="classes/Postful/Postcard.html#M000024">back_image_from_file= (Postful::Postcard)</a><br />
48
+ <a href="classes/Postful/Section.html#M000022">build_request (Postful::Section)</a><br />
49
+ <a href="classes/Postful/TemplateDocument.html#M000029">build_request (Postful::TemplateDocument)</a><br />
50
+ <a href="classes/Postful/SimpleDocument.html#M000001">build_request (Postful::SimpleDocument)</a><br />
51
+ <a href="classes/Postful/Order.html#M000015">cancel (Postful::Order)</a><br />
52
+ <a href="classes/Postful/Service.html#M000039">cancel_order_by_id (Postful::Service)</a><br />
53
+ <a href="classes/Postful/Document.html#M000028">do_upload (Postful::Document)</a><br />
54
+ <a href="classes/Postful/Section.html#M000021">do_upload (Postful::Section)</a><br />
55
+ <a href="classes/Postful/TemplateDocument.html#M000036">do_upload (Postful::TemplateDocument)</a><br />
56
+ <a href="classes/Postful/Base.html#M000006">document (Postful::Base)</a><br />
57
+ <a href="classes/Postful/Base.html#M000011">errors (Postful::Base)</a><br />
58
+ <a href="classes/Postful/Section.html#M000019">filename (Postful::Section)</a><br />
59
+ <a href="classes/Postful/Service.html#M000040">find_all_orders (Postful::Service)</a><br />
60
+ <a href="classes/Postful/Service.html#M000038">find_order_by_id (Postful::Service)</a><br />
61
+ <a href="classes/Postful/Postcard.html#M000023">front_image_from_file= (Postful::Postcard)</a><br />
62
+ <a href="classes/Postful/Base.html#M000009">mail! (Postful::Base)</a><br />
63
+ <a href="classes/Postful/Service.html#M000037">new (Postful::Service)</a><br />
64
+ <a href="classes/Postful/Document.html#M000026">new (Postful::Document)</a><br />
65
+ <a href="classes/Postful/Base.html#M000004">new (Postful::Base)</a><br />
66
+ <a href="classes/Postful/Order.html#M000016">new (Postful::Order)</a><br />
67
+ <a href="classes/Postful/Section.html#M000017">new (Postful::Section)</a><br />
68
+ <a href="classes/Postful/TemplateDocument.html#M000030">new (Postful::TemplateDocument)</a><br />
69
+ <a href="classes/Postful/Order.html#M000013">preview (Postful::Order)</a><br />
70
+ <a href="classes/Postful/TemplateDocument.html#M000032">property (Postful::TemplateDocument)</a><br />
71
+ <a href="classes/Postful/Order.html#M000014">refresh (Postful::Order)</a><br />
72
+ <a href="classes/Postful/SimpleDocument.html#M000002">requires_upload? (Postful::SimpleDocument)</a><br />
73
+ <a href="classes/Postful/TemplateDocument.html#M000035">requires_upload? (Postful::TemplateDocument)</a><br />
74
+ <a href="classes/Postful/Document.html#M000027">requires_upload? (Postful::Document)</a><br />
75
+ <a href="classes/Postful/Section.html#M000020">requires_upload? (Postful::Section)</a><br />
76
+ <a href="classes/Postful/TemplateDocument.html#M000034">section (Postful::TemplateDocument)</a><br />
77
+ <a href="classes/Postful/Section.html#M000018">text (Postful::Section)</a><br />
78
+ <a href="classes/Postful/SimpleDocument.html#M000003">upload (Postful::SimpleDocument)</a><br />
79
+ <a href="classes/Postful/Base.html#M000012">upload_assets (Postful::Base)</a><br />
80
+ <a href="classes/Postful/Base.html#M000010">valid? (Postful::Base)</a><br />
52
81
  </div>
53
82
  </div>
54
83
  </body>
@@ -1,6 +1,7 @@
1
1
  require 'builder'
2
2
  require File.join(File.dirname(__FILE__), 'order')
3
3
  require File.join(File.dirname(__FILE__), 'util')
4
+ require File.join(File.dirname(__FILE__), 'template_document')
4
5
 
5
6
  module Postful #:nodoc:
6
7
  class AuthorizationException < StandardError; end
@@ -17,6 +18,7 @@ module Postful #:nodoc:
17
18
  attr_accessor :tag2
18
19
  attr_accessor :tag3
19
20
  attr_accessor :return_address
21
+ attr_accessor :sections
20
22
 
21
23
  include Util
22
24
 
@@ -25,8 +27,19 @@ module Postful #:nodoc:
25
27
  @password = password
26
28
  @documents = []
27
29
  @addressees = []
30
+ @sections = []
28
31
  end
29
32
 
33
+ # Adds a new document to the request that should be customized by setting section properties
34
+ def add_document(name, options = {}, &block)
35
+ returning TemplateDocument.new(name, @email, @password) do |document|
36
+ document.instance_exec(&block) if block
37
+ document.source = options[:source] if options[:source]
38
+ @documents << document
39
+ end
40
+ end
41
+ alias_method :document, :add_document
42
+
30
43
  # Add a domestic recipient to a mailing
31
44
  def add_address(attributes = {})
32
45
  returning DomesticAddress.new do |address|
@@ -97,8 +110,15 @@ module Postful #:nodoc:
97
110
  def validate #:nodoc:
98
111
  errors << 'Requires at least one addressee' if @addressees.empty?
99
112
  end
113
+
114
+ def upload_assets
115
+ @documents.each do |document|
116
+ document.do_upload if document.requires_upload?
117
+ end
118
+ end
100
119
 
101
120
  def mail_without_validation! #:nodoc:
121
+ upload_assets
102
122
  xml = build_request
103
123
  send_request(xml)
104
124
  end
@@ -0,0 +1,18 @@
1
+ module Postful
2
+ class Document
3
+ include Util
4
+
5
+ def initialize(email, password)
6
+ @email = email
7
+ @password = password
8
+ end
9
+
10
+ def requires_upload?
11
+ false
12
+ end
13
+
14
+ def do_upload
15
+
16
+ end
17
+ end
18
+ end
@@ -2,6 +2,7 @@ require 'net/https'
2
2
  require 'builder'
3
3
  require File.join(File.dirname(__FILE__), 'base')
4
4
  require File.join(File.dirname(__FILE__), 'util')
5
+ require File.join(File.dirname(__FILE__), 'simple_document')
5
6
 
6
7
  module Postful
7
8
  # Builder for mailing letters with the Postful Web Service.
@@ -9,62 +10,92 @@ module Postful
9
10
  class Letter < Base
10
11
  # Add an HTML document to the request
11
12
  def add_html_document(text)
12
- add_document('html', text)
13
+ add_simple_document('html', text)
13
14
  end
14
15
 
15
16
  # Add an HTML document to the request
16
17
  def add_html_document_from_file(filename)
17
- add_document_from_file('html', filename)
18
+ add_simple_document_from_file('html', filename)
19
+ end
20
+
21
+ # Add an HTML document to the request
22
+ def add_html_document_from_url(url)
23
+ add_simple_document_from_url('html', url)
18
24
  end
19
25
 
20
26
  # Add a Microsoft Word document to the request
21
27
  def add_word_document(text)
22
- add_document('doc', text)
28
+ add_simple_document('doc', text)
23
29
  end
24
30
 
25
31
  # Add a Microsoft Word document to the request
26
32
  def add_word_document_from_file(filename)
27
- add_document_from_file('doc', filename)
33
+ add_simple_document_from_file('doc', filename)
34
+ end
35
+
36
+ # Add a Microsoft Word document to the request
37
+ def add_word_document_from_url(url)
38
+ add_simple_document_from_url('doc', url)
28
39
  end
29
40
 
30
41
  # Add a Rich Text Format document to the request
31
42
  def add_rtf_document(text)
32
- add_document('rtf', text)
43
+ add_simple_document('rtf', text)
33
44
  end
34
45
 
35
46
  # Add a Rich Text Format document to the request
36
47
  def add_rtf_document_from_file(filename)
37
- add_document_from_file('rtf', filename)
48
+ add_simple_document_from_file('rtf', filename)
49
+ end
50
+
51
+ # Add a Rich Text Format document to the request
52
+ def add_rtf_document_from_url(url)
53
+ add_simple_document_from_url('rtf', url)
38
54
  end
39
55
 
40
56
  # Add an Open Office document to the request
41
57
  def add_open_office_document(text)
42
- add_document('odt', text)
58
+ add_simple_document('odt', text)
43
59
  end
44
60
 
45
61
  # Add an Open Office document to the request
46
62
  def add_open_office_document_from_file(filename)
47
- add_document_from_file('odt', filename)
63
+ add_simple_document_from_file('odt', filename)
64
+ end
65
+
66
+ # Add an Open Office document to the request
67
+ def add_open_office_document_from_url(url)
68
+ add_simple_document_from_file('odt', url)
48
69
  end
49
70
 
50
71
  # Add a text document to the request
51
72
  def add_text_document(text)
52
- add_document('txt', text)
73
+ add_simple_document('txt', text)
53
74
  end
54
75
 
55
76
  # Add a text document to the request
56
77
  def add_text_document_from_file(filename)
57
- add_document_from_file('txt', filename)
78
+ add_simple_document_from_file('txt', filename)
79
+ end
80
+
81
+ # Add a text document to the request
82
+ def add_text_document_from_url(url)
83
+ add_simple_document_from_url('txt', url)
58
84
  end
59
85
 
60
86
  # Add a PDF document to the request
61
87
  def add_pdf_document(text)
62
- add_document('pdf', text)
88
+ add_simple_document('pdf', text)
63
89
  end
64
90
 
65
91
  # Add a PDF document to the request
66
92
  def add_pdf_document_from_file(filename)
67
- add_document_from_file('pdf', filename)
93
+ add_simple_document_from_file('pdf', filename)
94
+ end
95
+
96
+ # Add a PDF document to the request
97
+ def add_pdf_document_from_url(url)
98
+ add_simple_document_from_url('pdf', url)
68
99
  end
69
100
 
70
101
  protected
@@ -87,52 +118,28 @@ module Postful
87
118
  end
88
119
  end
89
120
 
90
- def add_document(format, content)
91
- returning Document.new(@email, @password) do |document|
121
+ def add_simple_document_from_url(format, url)
122
+ returning SimpleDocument.new(@email, @password) do |document|
123
+ document.format = format
124
+ document.url = url
125
+ @documents << document
126
+ end
127
+ end
128
+
129
+ def add_simple_document(format, content)
130
+ returning SimpleDocument.new(@email, @password) do |document|
92
131
  document.format = format
93
132
  document.content = content
94
133
  @documents << document
95
134
  end
96
135
  end
97
136
 
98
- def add_document_from_file(format, filename)
137
+ def add_simple_document_from_file(format, filename)
99
138
  content = open(filename, "rb") do |io|
100
139
  io.read
101
140
  end
102
- add_document(format, content)
141
+ add_simple_document(format, content)
103
142
  end
104
143
 
105
- class Document #:nodoc:
106
- include Util
107
-
108
- attr_accessor :format
109
- attr_accessor :content
110
- attr_accessor :attachment_name
111
-
112
- def initialize(email, password)
113
- @email = email
114
- @password = password
115
- end
116
-
117
- def build_request(builder)
118
- builder.document do
119
- builder.type format
120
- builder.attachment attachment_name
121
- end
122
- end
123
-
124
- def upload
125
- headers = {
126
- 'Content-Type' => 'application/octet-stream',
127
- 'Content-Length' => content.size.to_s
128
- }
129
- response = post_request_on_path('/service/upload', content, @email, @password, headers)
130
- if response.is_a?(Net::HTTPOK) && response.body =~ /<id>(.*)<\/id>/
131
- self.attachment_name = $1
132
- else
133
- # raise stuff
134
- end
135
- end
136
- end
137
144
  end
138
145
  end
@@ -105,6 +105,10 @@ module Postful
105
105
  @sections = []
106
106
  end
107
107
 
108
+ def requires_upload?
109
+ false
110
+ end
111
+
108
112
  def build_request(builder)
109
113
  builder.document do
110
114
  builder.template do
@@ -0,0 +1,46 @@
1
+ module Postful
2
+ class Section
3
+ include Util
4
+
5
+ def initialize(name, email, password)
6
+ @name = name
7
+ @email = email
8
+ @password = password
9
+ @requires_upload = false
10
+ end
11
+
12
+ def text(text)
13
+ @text = text
14
+ end
15
+
16
+ def filename(filename)
17
+ raise "File '#{filename}' not found" unless File.exist? filename
18
+ @requires_upload = true
19
+ @filename = filename
20
+ end
21
+
22
+ def requires_upload?
23
+ @requires_upload
24
+ end
25
+
26
+ def do_upload
27
+ content = open(@filename, "rb") { |io| io.read }
28
+ headers = { 'Content-Type' => 'application/octet-stream', 'Content-Length' => content.size.to_s }
29
+ response = post_request_on_path('/service/upload', content, @email, @password, headers)
30
+ if response.is_a?(Net::HTTPOK) && response.body =~ /<id>(.*)<\/id>/
31
+ @attachment = $1
32
+ else
33
+ raise 'Attachment name not found in response'
34
+ end
35
+ end
36
+
37
+ def build_request(builder)
38
+ builder.section do
39
+ builder.name @name
40
+ builder.text @text if @text
41
+ builder.attachment @attachment if @attachment
42
+ end
43
+ end
44
+
45
+ end
46
+ end