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
@@ -0,0 +1,38 @@
1
+ require File.join(File.dirname(__FILE__), 'document')
2
+
3
+ module Postful
4
+ class SimpleDocument < Document
5
+
6
+ attr_accessor :format
7
+ attr_accessor :content
8
+ attr_accessor :attachment_name
9
+ attr_accessor :url
10
+
11
+ def build_request(builder)
12
+ builder.document do
13
+ builder.type format
14
+ builder.attachment attachment_name if attachment_name
15
+ builder.url url if url
16
+ end
17
+ end
18
+
19
+ def requires_upload?
20
+ true if !url
21
+ end
22
+
23
+ def upload
24
+ if requires_upload?
25
+ headers = {
26
+ 'Content-Type' => 'application/octet-stream',
27
+ 'Content-Length' => content.size.to_s
28
+ }
29
+ response = post_request_on_path('/service/upload', content, @email, @password, headers)
30
+ if response.is_a?(Net::HTTPOK) && response.body =~ /<id>(.*)<\/id>/
31
+ self.attachment_name = $1
32
+ else
33
+ # raise stuff
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,66 @@
1
+ require File.join(File.dirname(__FILE__), 'document')
2
+ require File.join(File.dirname(__FILE__), 'section')
3
+
4
+ module Postful
5
+ class TemplateDocument < Document
6
+ def build_request(builder)
7
+ builder.document do
8
+ builder.template do
9
+ builder.source source
10
+ builder.name name
11
+ end
12
+ builder.sections do
13
+ sections.each do |section|
14
+ section.build_request(builder)
15
+ end
16
+ end if sections.any?
17
+ builder.properties do
18
+ properties.each_pair do |key, value|
19
+ builder.property do
20
+ builder.key key
21
+ builder.value value
22
+ end
23
+ end
24
+ end if properties.keys.any?
25
+ end
26
+ end
27
+
28
+ def initialize(name, email, password)
29
+ super(email, password)
30
+ @name = name
31
+ @source = 'gallery'
32
+ @sections = []
33
+ @properties = {}
34
+ end
35
+
36
+ attr_accessor :source
37
+ attr_accessor :name
38
+ attr :sections
39
+ attr :properties
40
+
41
+ def add_property(key, value)
42
+ @properties[key] = value
43
+ end
44
+
45
+ alias_method :property, :add_property
46
+
47
+ def add_section(name, &block)
48
+ returning Section.new(name, @email, @password) do |section|
49
+ section.instance_exec(&block) if block
50
+ sections << section
51
+ end
52
+ end
53
+
54
+ alias_method :section, :add_section
55
+
56
+ def requires_upload?
57
+ !(sections.find { |section| section.requires_upload? }).nil?
58
+ end
59
+
60
+ def do_upload
61
+ sections.each do |section|
62
+ section.do_upload if section.requires_upload?
63
+ end
64
+ end
65
+ end
66
+ end
@@ -1,8 +1,25 @@
1
1
  module Postful
2
- module Util #:nodoc:
3
- HOST = 'www.postful.com'
4
- PORT = 443
2
+ HOST = 'www.postful.com'
3
+ PORT = 443
4
+
5
+ def self.host=(host)
6
+ @host = host
7
+ end
8
+
9
+ def self.host
10
+ @host || HOST
11
+ end
5
12
 
13
+ def self.port=(port)
14
+ @port = port
15
+ end
16
+
17
+ def self.port
18
+ @port || PORT
19
+ end
20
+
21
+ module Util #:nodoc:
22
+
6
23
  protected
7
24
 
8
25
  def build_error_message_from_response(response)
@@ -13,27 +30,27 @@ module Postful
13
30
  end
14
31
  errors.join("\n")
15
32
  end
16
-
33
+
17
34
  def authorization_header(email, password)
18
35
  'Basic ' + ["#{email}:#{password}"].pack('m').delete("\r\n")
19
36
  end
20
37
 
21
38
  def process_standard_responses(response)
22
39
  case response.code
23
- when "500" then
24
- raise Postful::InternalServerError
25
- when "401" then
26
- raise Postful::AuthorizationException
27
- when "404" then
28
- raise Postful::NotFoundException
29
- else
30
- raise Postful::UnknownResponseException, response.code
40
+ when "500" then
41
+ raise Postful::InternalServerError
42
+ when "401" then
43
+ raise Postful::AuthorizationException
44
+ when "404" then
45
+ raise Postful::NotFoundException
46
+ else
47
+ raise Postful::UnknownResponseException, response.code
31
48
  end
32
49
  end
33
50
 
34
51
  def delete_request_on_path(path, email, password)
35
- http = Net::HTTP.new(HOST, PORT)
36
- http.use_ssl = true if PORT == 443
52
+ http = Net::HTTP.new(Postful.host, Postful.port)
53
+ http.use_ssl = true if Postful.port == 443
37
54
  silence_warnings do
38
55
  http.start() {|http|
39
56
  request = Net::HTTP::Delete.new(path)
@@ -42,10 +59,10 @@ module Postful
42
59
  }
43
60
  end
44
61
  end
45
-
62
+
46
63
  def get_request_on_path(path, email, password)
47
- http = Net::HTTP.new(HOST, PORT)
48
- http.use_ssl = true if PORT == 443
64
+ http = Net::HTTP.new(Postful.host, Postful.port)
65
+ http.use_ssl = true if Postful.port == 443
49
66
  silence_warnings do
50
67
  http.start() {|http|
51
68
  request = Net::HTTP::Get.new(path)
@@ -56,17 +73,49 @@ module Postful
56
73
  end
57
74
 
58
75
  def post_request_on_path(path, post, email, password, headers = {})
59
- http = Net::HTTP.new(HOST, PORT)
60
- http.use_ssl = true if PORT == 443
76
+ http = Net::HTTP.new(Postful.host, Postful.port)
77
+ http.use_ssl = true if Postful.port == 443
61
78
  headers.merge!({ 'Authorization' => authorization_header(email, password) })
62
79
  silence_warnings { http.post(path, post, headers) }
63
80
  end
64
-
81
+
65
82
  def silence_warnings
66
83
  old_verbose, $VERBOSE = $VERBOSE, nil
67
84
  yield
68
85
  ensure
69
86
  $VERBOSE = old_verbose
70
87
  end
71
- end
88
+
89
+ def returning(value)
90
+ yield(value)
91
+ value
92
+ end
93
+
94
+ unless defined? instance_exec # 1.9
95
+ module InstanceExecMethods #:nodoc:
96
+ end
97
+ include InstanceExecMethods
98
+
99
+ # Evaluate the block with the given arguments within the context of
100
+ # this object, so self is set to the method receiver.
101
+ #
102
+ # From Mauricio's http://eigenclass.org/hiki/bounded+space+instance_exec
103
+ def instance_exec(*args, &block)
104
+ begin
105
+ old_critical, Thread.critical = Thread.critical, true
106
+ n = 0
107
+ n += 1 while respond_to?(method_name = "__instance_exec#{n}")
108
+ InstanceExecMethods.module_eval { define_method(method_name, &block) }
109
+ ensure
110
+ Thread.critical = old_critical
111
+ end
112
+
113
+ begin
114
+ send(method_name, *args)
115
+ ensure
116
+ InstanceExecMethods.module_eval { remove_method(method_name) } rescue nil
117
+ end
118
+ end
119
+ end
120
+ end
72
121
  end
@@ -8,6 +8,66 @@ class TestBase < Test::Unit::TestCase
8
8
  @base = Postful::Base.new('email', 'password')
9
9
  end
10
10
 
11
+ def test_sections
12
+ assert_equal [], @base.sections
13
+ end
14
+
15
+ def test_add_document
16
+ document = @base.add_document 'Template #1'
17
+ assert document.is_a?(Postful::TemplateDocument)
18
+ assert_equal 'Template #1', document.name
19
+ end
20
+
21
+ def test_document_property
22
+ document = @base.document 'Template #1' do
23
+ property 'foo', 'bar'
24
+ end
25
+ @request = @base.send(:build_request)
26
+ assert_equal 'foo', fetch_tag('mail/documents/document/properties/property/key')
27
+ assert_equal 'bar', fetch_tag('mail/documents/document/properties/property/value')
28
+ end
29
+
30
+ def test_document_section
31
+ document = @base.document 'Template #1' do
32
+ section 'some_name' do
33
+ text 'Laszlo Jamf'
34
+ end
35
+ end
36
+ @request = @base.send(:build_request)
37
+ assert_equal 'Laszlo Jamf', fetch_tag('mail/documents/document/sections/section/text')
38
+ assert_equal 'some_name', fetch_tag('mail/documents/document/sections/section/name')
39
+ assert_equal false, document.sections.first.requires_upload?
40
+ end
41
+
42
+ def test_document_image_section
43
+ document = @base.document 'Template #1' do
44
+ section 'some_name' do
45
+ filename __FILE__
46
+ end
47
+ end
48
+ section = document.sections.first
49
+ assert_equal true, section.requires_upload?
50
+ name = register_upload
51
+ section.do_upload
52
+ assert_equal name, section.instance_variable_get("@attachment")
53
+ end
54
+
55
+ def test_image_upload
56
+ document = @base.document 'Template #1' do
57
+ section 'some_name' do
58
+ filename __FILE__
59
+ end
60
+ end
61
+ @base.add_address :name => 'John Doe', :address => '123 Main St', :city => 'Anytown', :state => 'AZ', :postal_code => '10000'
62
+ section = document.sections.first
63
+ assert_equal true, section.requires_upload?
64
+ assert_equal true, document.requires_upload?
65
+ name = register_upload
66
+ register_201
67
+ @base.mail!
68
+ assert_equal name, section.instance_variable_get("@attachment")
69
+ end
70
+
11
71
  def test_tags
12
72
  @base.tag1 = 'tag 1'
13
73
  @base.tag2 = 'tag 2'
@@ -122,6 +182,17 @@ class TestBase < Test::Unit::TestCase
122
182
  end
123
183
  end
124
184
 
185
+ def register_201
186
+ FakeWeb.register_uri('https://www.postful.com/service/mail', :string => fixture('201.xml'), :status => '201')
187
+ end
188
+
189
+ def register_upload
190
+ s = "290797321.waltershandy.2"
191
+ FakeWeb.register_uri('https://www.postful.com/service/upload',
192
+ :string => %(<?xml version="1.0" encoding="UTF-8"?><upload><id>#{s}</id></upload>))
193
+ s
194
+ end
195
+
125
196
  def fetch_tag(tag)
126
197
  @document ||= begin
127
198
  REXML::Document.new @request
@@ -7,6 +7,12 @@ class TestLetter < Test::Unit::TestCase
7
7
  @letter = Postful::Letter.new('email', 'password')
8
8
  end
9
9
 
10
+ def test_simple_document_from_url
11
+ document = @letter.add_html_document_from_url 'http://www.google.com'
12
+ xml = @letter.send(:build_request)
13
+ assert_equal %(<mail><documents><document><type>html</type><url>http://www.google.com</url></document></documents><addressees></addressees></mail>), xml
14
+ end
15
+
10
16
  def test_build_request_document
11
17
  document = @letter.add_html_document '<b>Hello, world!</b>'
12
18
  document.attachment_name = 'porcupine'
@@ -1,6 +1,6 @@
1
1
  require 'test/unit'
2
2
  require 'fake_web'
3
- require 'lib/postful/postcard'
3
+ require File.dirname(__FILE__) + '/../lib/postful/postcard'
4
4
 
5
5
  class TestPostcard < Test::Unit::TestCase
6
6
  include Postful
@@ -26,6 +26,18 @@ class TestPostcard < Test::Unit::TestCase
26
26
  @postcard.back_image = 'data'
27
27
  assert_equal Postcard::IMAGES, @postcard.send(:choose_template)
28
28
  end
29
+
30
+ def test_no_exceptions
31
+ @valid_postcard.front_image = 'data'
32
+ @valid_postcard.back_image = 'data'
33
+ @valid_postcard.send :instance_exec do
34
+ build_sections
35
+ upload_attachments
36
+ build_template_document
37
+ upload_assets
38
+ build_request
39
+ end
40
+ end
29
41
 
30
42
  def test_adding_no_border_chooses_fill
31
43
  @postcard.front_image = 'data'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postful, Inc
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-12 00:00:00 -07:00
12
+ date: 2009-01-29 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -32,11 +32,15 @@ extra_rdoc_files: []
32
32
 
33
33
  files:
34
34
  - lib/postful/base.rb
35
+ - lib/postful/document.rb
35
36
  - lib/postful/instance_exec_module.rb
36
37
  - lib/postful/letter.rb
37
38
  - lib/postful/order.rb
38
39
  - lib/postful/postcard.rb
40
+ - lib/postful/section.rb
39
41
  - lib/postful/service.rb
42
+ - lib/postful/simple_document.rb
43
+ - lib/postful/template_document.rb
40
44
  - lib/postful/util.rb
41
45
  - lib/postful.rb
42
46
  - test/suite.rb
@@ -48,54 +52,92 @@ files:
48
52
  - doc/classes/Postful/AuthorizationException.html
49
53
  - doc/classes/Postful/Base.html
50
54
  - doc/classes/Postful/Base.src
51
- - doc/classes/Postful/Base.src/M000001.html
52
- - doc/classes/Postful/Base.src/M000002.html
53
- - doc/classes/Postful/Base.src/M000003.html
54
55
  - doc/classes/Postful/Base.src/M000004.html
55
56
  - doc/classes/Postful/Base.src/M000005.html
56
- - doc/classes/Postful/Base.src/M000006.html
57
+ - doc/classes/Postful/Base.src/M000007.html
58
+ - doc/classes/Postful/Base.src/M000008.html
59
+ - doc/classes/Postful/Base.src/M000009.html
60
+ - doc/classes/Postful/Base.src/M000010.html
61
+ - doc/classes/Postful/Base.src/M000011.html
62
+ - doc/classes/Postful/Base.src/M000012.html
63
+ - doc/classes/Postful/Document.html
64
+ - doc/classes/Postful/Document.src
65
+ - doc/classes/Postful/Document.src/M000026.html
66
+ - doc/classes/Postful/Document.src/M000027.html
67
+ - doc/classes/Postful/Document.src/M000028.html
57
68
  - doc/classes/Postful/InternalServerError.html
58
69
  - doc/classes/Postful/Letter.html
59
70
  - doc/classes/Postful/Letter.src
60
- - doc/classes/Postful/Letter.src/M000018.html
61
- - doc/classes/Postful/Letter.src/M000019.html
62
- - doc/classes/Postful/Letter.src/M000020.html
63
- - doc/classes/Postful/Letter.src/M000021.html
64
- - doc/classes/Postful/Letter.src/M000022.html
65
- - doc/classes/Postful/Letter.src/M000023.html
66
- - doc/classes/Postful/Letter.src/M000024.html
67
- - doc/classes/Postful/Letter.src/M000025.html
68
- - doc/classes/Postful/Letter.src/M000026.html
69
- - doc/classes/Postful/Letter.src/M000027.html
70
- - doc/classes/Postful/Letter.src/M000028.html
71
- - doc/classes/Postful/Letter.src/M000029.html
71
+ - doc/classes/Postful/Letter.src/M000041.html
72
+ - doc/classes/Postful/Letter.src/M000042.html
73
+ - doc/classes/Postful/Letter.src/M000043.html
74
+ - doc/classes/Postful/Letter.src/M000044.html
75
+ - doc/classes/Postful/Letter.src/M000045.html
76
+ - doc/classes/Postful/Letter.src/M000046.html
77
+ - doc/classes/Postful/Letter.src/M000047.html
78
+ - doc/classes/Postful/Letter.src/M000048.html
79
+ - doc/classes/Postful/Letter.src/M000049.html
80
+ - doc/classes/Postful/Letter.src/M000050.html
81
+ - doc/classes/Postful/Letter.src/M000051.html
82
+ - doc/classes/Postful/Letter.src/M000052.html
83
+ - doc/classes/Postful/Letter.src/M000053.html
84
+ - doc/classes/Postful/Letter.src/M000054.html
85
+ - doc/classes/Postful/Letter.src/M000055.html
86
+ - doc/classes/Postful/Letter.src/M000056.html
87
+ - doc/classes/Postful/Letter.src/M000057.html
88
+ - doc/classes/Postful/Letter.src/M000058.html
72
89
  - doc/classes/Postful/NotFoundException.html
73
90
  - doc/classes/Postful/Order.html
74
91
  - doc/classes/Postful/Order.src
75
- - doc/classes/Postful/Order.src/M000007.html
76
- - doc/classes/Postful/Order.src/M000008.html
77
- - doc/classes/Postful/Order.src/M000009.html
78
- - doc/classes/Postful/Order.src/M000010.html
92
+ - doc/classes/Postful/Order.src/M000013.html
93
+ - doc/classes/Postful/Order.src/M000014.html
94
+ - doc/classes/Postful/Order.src/M000015.html
95
+ - doc/classes/Postful/Order.src/M000016.html
79
96
  - doc/classes/Postful/Postcard.html
80
97
  - doc/classes/Postful/Postcard.src
81
- - doc/classes/Postful/Postcard.src/M000011.html
82
- - doc/classes/Postful/Postcard.src/M000012.html
83
- - doc/classes/Postful/Postcard.src/M000013.html
98
+ - doc/classes/Postful/Postcard.src/M000023.html
99
+ - doc/classes/Postful/Postcard.src/M000024.html
100
+ - doc/classes/Postful/Postcard.src/M000025.html
101
+ - doc/classes/Postful/Section.html
102
+ - doc/classes/Postful/Section.src
103
+ - doc/classes/Postful/Section.src/M000017.html
104
+ - doc/classes/Postful/Section.src/M000018.html
105
+ - doc/classes/Postful/Section.src/M000019.html
106
+ - doc/classes/Postful/Section.src/M000020.html
107
+ - doc/classes/Postful/Section.src/M000021.html
108
+ - doc/classes/Postful/Section.src/M000022.html
84
109
  - doc/classes/Postful/Service.html
85
110
  - doc/classes/Postful/Service.src
86
- - doc/classes/Postful/Service.src/M000014.html
87
- - doc/classes/Postful/Service.src/M000015.html
88
- - doc/classes/Postful/Service.src/M000016.html
89
- - doc/classes/Postful/Service.src/M000017.html
111
+ - doc/classes/Postful/Service.src/M000037.html
112
+ - doc/classes/Postful/Service.src/M000038.html
113
+ - doc/classes/Postful/Service.src/M000039.html
114
+ - doc/classes/Postful/Service.src/M000040.html
115
+ - doc/classes/Postful/SimpleDocument.html
116
+ - doc/classes/Postful/SimpleDocument.src
117
+ - doc/classes/Postful/SimpleDocument.src/M000001.html
118
+ - doc/classes/Postful/SimpleDocument.src/M000002.html
119
+ - doc/classes/Postful/SimpleDocument.src/M000003.html
120
+ - doc/classes/Postful/TemplateDocument.html
121
+ - doc/classes/Postful/TemplateDocument.src
122
+ - doc/classes/Postful/TemplateDocument.src/M000029.html
123
+ - doc/classes/Postful/TemplateDocument.src/M000030.html
124
+ - doc/classes/Postful/TemplateDocument.src/M000031.html
125
+ - doc/classes/Postful/TemplateDocument.src/M000033.html
126
+ - doc/classes/Postful/TemplateDocument.src/M000035.html
127
+ - doc/classes/Postful/TemplateDocument.src/M000036.html
90
128
  - doc/classes/Postful/UnknownResponseException.html
91
129
  - doc/classes/Postful/ValidationException.html
92
130
  - doc/created.rid
93
131
  - doc/files/lib/postful/base_rb.html
132
+ - doc/files/lib/postful/document_rb.html
94
133
  - doc/files/lib/postful/instance_exec_module_rb.html
95
134
  - doc/files/lib/postful/letter_rb.html
96
135
  - doc/files/lib/postful/order_rb.html
97
136
  - doc/files/lib/postful/postcard_rb.html
137
+ - doc/files/lib/postful/section_rb.html
98
138
  - doc/files/lib/postful/service_rb.html
139
+ - doc/files/lib/postful/simple_document_rb.html
140
+ - doc/files/lib/postful/template_document_rb.html
99
141
  - doc/files/lib/postful/util_rb.html
100
142
  - doc/files/lib/postful_rb.html
101
143
  - doc/files/MIT-LICENSE.html