postful 0.2.0 → 0.3.1

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.
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