postalmethods 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,95 @@
1
+ module PostalMethods
2
+
3
+ module SendPostcard
4
+
5
+ def send_postcard_and_address_advanced(opts)
6
+ raise PostalMethods::NoPreparationException unless self.prepared
7
+ #Add in any default settings
8
+ opts = get_settings().merge(opts)
9
+ rv = @rpc_driver.sendPostcardAndAddress(opts)
10
+
11
+ #Handle the return value
12
+ status_code = rv.sendPostcardAndAddressResult.to_i
13
+ if status_code > 0
14
+ return status_code
15
+ elsif API_STATUS_CODES.has_key?(status_code)
16
+ instance_eval("raise APIStatusCode#{status_code.to_s.gsub(/( |\-)/,'')}Exception")
17
+ end
18
+ end
19
+
20
+ def send_postcard_and_address(image_side_filename, address_side_filename, address, description="Sent at #{Time.now()}", work_mode = "Default")
21
+ raise PostalMethods::NoPreparationException unless self.prepared
22
+
23
+ if( image_side_filename.index("MyFile:") )
24
+ is_name = image_side_filename
25
+ else
26
+ is_name = upload_file(image_side_filename)
27
+ end
28
+ if(address_side_filename.index("MyFile:") )
29
+ as_name = address_side_filename
30
+ else
31
+ as_name = upload_file(address_side_filename)
32
+ end
33
+
34
+ ## push a postcard over the api
35
+ opts = {
36
+ :MyDescription => description,
37
+ :ImageSideFileType => is_name,
38
+ :AddressSideFileType => as_name
39
+ }
40
+
41
+ opts.merge!(address)
42
+ return send_postcard_and_address_advanced(opts)
43
+ end
44
+
45
+ def get_settings
46
+ return {
47
+ :APIKey=> self.api_key,
48
+ :WorkMode => self.work_mode,
49
+ :ImageSideScaling => self.imageSideScaling,
50
+ :PrintColor=>self.printColor,
51
+ :PostcardSize=>self.postcardSize,
52
+ :MailingPriority=>self.mailingPriority
53
+ }
54
+ end
55
+
56
+ def upload_file(doc, description="", overwrite=true, work_mode="")
57
+ if doc.class == String
58
+ opts = upload_file_options_with_strings(doc, description, overwrite, work_mode)
59
+ else
60
+ opts = upload_file_options_with_hash(doc)
61
+ end
62
+
63
+ status_code = self.rpc_driver.uploadFile(opts).uploadFileResult
64
+
65
+ if status_code == "-3000"
66
+ return "MyFile:#{opts[:MyFileName]}"
67
+ elsif API_STATUS_CODES.has_key?(status_code)
68
+ instance_eval("raise APIStatusCode#{status_code.to_s.gsub(/( |\-)/,'')}Exception")
69
+ end
70
+ end
71
+
72
+ def upload_file_options_with_strings(doc_name, description="", overwrite=true, work_mode="")
73
+ file_name=File.basename(doc_name)
74
+ file_data = open(doc_name, "rb") {|io| io.read }
75
+ opts = {
76
+ :APIKey => self.api_key,
77
+ :MyFileName => file_name,
78
+ :FileBinaryData => file_data,
79
+ :Permissions => self.permissions,
80
+ :MyDescription => description,
81
+ :Overwrite => overwrite
82
+ }
83
+ return opts
84
+ end
85
+
86
+ def upload_file_options_with_hash(user_opts)
87
+ #Add in the api key
88
+ user_opts.merge!({:APIKey=> self.api_key})
89
+ return user_opts
90
+ end
91
+
92
+
93
+ end
94
+
95
+ end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{postalmethods}
3
- s.version = "1.1.3"
3
+ s.version = "1.1.4"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
6
  s.authors = ["James Cox", "Joe Fair"]
@@ -8,7 +8,14 @@ Gem::Specification.new do |s|
8
8
  s.description = %q{API wrapper library for the postal methods api.}
9
9
  s.email = ["joe@bodkinconsulting.com"]
10
10
  s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "README.txt"]
11
- s.files = ["History.txt", "License.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "README.txt", "Rakefile", "config/hoe.rb", "config/requirements.rb", "lib/postalmethods.rb", "lib/postalmethods/document_processor.rb", "lib/postalmethods/exceptions.rb", "lib/postalmethods/get_letter_status.rb", "lib/postalmethods/send_letter.rb", "lib/postalmethods/utility.rb", "postalmethods.gemspec", "script/console", "script/destroy", "script/generate", "setup.rb", "spec/doc/WSDL-Output", "spec/doc/default.rb", "spec/doc/defaultMappingRegistry.rb", "spec/doc/sample.pdf", "spec/document_processor_spec.rb", "spec/get_letter_status_spec.rb", "spec/postalmethods_spec.rb", "spec/rcov.opts", "spec/send_letter_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/utility_spec.rb", "tasks/rspec.rake", "spec/doc/postcard_address_side_with_return_address.html", "spec/doc/postcard_image_side_with_return_address.html"]
11
+ s.files = ["History.txt", "License.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "README.txt", "Rakefile", "config/hoe.rb", "config/requirements.rb", "lib/postalmethods.wsdl", "lib/postalmethods.rb", "lib/postalmethods/document_processor.rb", "lib/postalmethods/exceptions.rb", "lib/postalmethods/get_letter_status.rb", "lib/postalmethods/send_letter.rb", "lib/postalmethods/send_postcard.rb", "lib/postalmethods/utility.rb", "postalmethods.gemspec", "script/console", "script/destroy", "script/generate", "setup.rb", "spec/doc/sample_image.jpg", "spec/doc/WSDL-Output", "spec/doc/default.rb", "spec/doc/defaultMappingRegistry.rb", "spec/doc/sample.pdf", "spec/document_processor_spec.rb", "spec/get_letter_status_spec.rb", "spec/postalmethods_spec.rb", "spec/rcov.opts", "spec/send_letter_spec.rb", "spec/send_postcard_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/utility_spec.rb", "tasks/rspec.rake", "spec/doc/postcard_address_side_with_return_address.html", "spec/doc/postcard_image_side_with_return_address.html",
12
+
13
+
14
+
15
+
16
+
17
+
18
+ ]
12
19
  s.has_rdoc = true
13
20
  s.homepage = 'http://www.postalmethods.com/resources/quickstart'
14
21
  s.post_install_message = %q{PostInstall.txt}
Binary file
@@ -0,0 +1,126 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "Send Postcard" do
4
+
5
+ before :each do
6
+ #Unique id - miliseconds
7
+ @time_id = (Time.now.to_f * 1000).to_i
8
+
9
+ @sample_image_name = "spec/doc/sample_image.jpg"
10
+ @doc = open(File.dirname(__FILE__) + '/doc/sample.pdf', 'rb'){|io| io.read}
11
+ @client = PostalMethods::Client.new(PM_OPTS)
12
+
13
+ @address_details = {
14
+ :AttentionLine1 => "The White House",
15
+ :Address1 => "1600 Pennsylvania Avenue NW",
16
+ :City => "Washington",
17
+ :State => "DC",
18
+ :PostalCode => "20500",
19
+ :Country => "USA"
20
+ }
21
+
22
+ end
23
+
24
+ it "should upload a file" do
25
+ @client.prepare!
26
+ @client.upload_file(@sample_image_name).should == "MyFile:#{File.basename(@sample_image_name)}"
27
+ end
28
+
29
+ it "should upload a file from local binary data" do
30
+ @client.prepare!
31
+ @sample_data = open(@sample_image_name, "rb") {|io| io.read }
32
+ @upload_details = {
33
+ :MyFileName => "sample_image_file.jpg",
34
+ :FileBinaryData => @sample_data,
35
+ :Permissions => "Account",
36
+ :Description => "Sample File #{@time_id}",
37
+ :Overwrite => true
38
+ }
39
+ filename = @client.upload_file(@upload_details)
40
+ filename.should == "MyFile:sample_image_file.jpg"
41
+ end
42
+
43
+ it "should upload a file from local binary data THEN send a postcard" do
44
+ @client.prepare!
45
+ @sample_data = IO.read(@sample_image_name)
46
+ @upload_details = {
47
+ :MyFileName => "sample_image_file.jpg",
48
+ :FileBinaryData => @sample_data,
49
+ :Permissions => "Account",
50
+ :Description => "Sample File #{@time_id}",
51
+ :Overwrite => true
52
+ }
53
+ filename = @client.upload_file(@upload_details)
54
+ filename.should == "MyFile:sample_image_file.jpg"
55
+ @client.send_postcard_and_address(filename, filename, @address_details).should > 0
56
+ end
57
+
58
+ it "should instantiate and send a postcard" do
59
+ @client.prepare!
60
+ @client.send_postcard_and_address(@sample_image_name, @sample_image_name, @address_details, "Sample Postcard at #{Time.now()}").should > 0
61
+ end
62
+
63
+ it "should upload a file THEN send a postcard" do
64
+ @client.prepare!
65
+ filename = @client.upload_file(@sample_image_name)
66
+ filename.should == "MyFile:#{File.basename(@sample_image_name)}"
67
+ @client.send_postcard_and_address(filename, filename, @address_details).should > 0
68
+ end
69
+
70
+ it "should refuse to send a postcard before prepare" do
71
+ lambda {@client.send_letter(@doc, "the long goodbye")}.should raise_error(PostalMethods::NoPreparationException)
72
+ end
73
+
74
+ it "should raise the proper exception when trying to send a missing file" do
75
+ @client.prepare!
76
+ lambda {@client.send_postcard_and_address("missing.jpg", "missing.jpg", @address_details)}.should raise_error(Errno::ENOENT)
77
+ end
78
+
79
+ it "should upload a template" do
80
+ @addr_template_filename = File.dirname(__FILE__) + '/../spec/doc/postcard_address_side_with_return_address.html'
81
+ @addr_template = open(@addr_template_filename, 'rb'){|io| io.read }
82
+ @client.prepare!
83
+ @client.upload_file(@addr_template_filename).should == "MyFile:#{File.basename(@addr_template_filename)}"
84
+ end
85
+
86
+ it "should send a postcard with two templates" do
87
+ @img_template_filename = File.dirname(__FILE__) + '/../spec/doc/postcard_image_side_with_return_address.html'
88
+ @img_template = open(@img_template_filename, 'rb'){|io| io.read }
89
+ @addr_template_filename = File.dirname(__FILE__) + '/../spec/doc/postcard_address_side_with_return_address.html'
90
+ @addr_template = open(@addr_template_filename, 'rb'){|io| io.read }
91
+ opts={}
92
+
93
+ #Prepare address side
94
+ opts[:AddressSideFileType]="HTML"
95
+ opts[:MyDescription]="Sending Two Template Postcard #{Time.now}"
96
+ opts[:AddressSideBinaryData]=@addr_template
97
+
98
+ #Prepare image side
99
+ opts[:ImageSideFileType]="HTML"
100
+ opts[:ImageSideBinaryData]=@img_template
101
+
102
+ opts.merge!@address_details
103
+ @client.prepare!
104
+ @client.send_postcard_and_address_advanced(opts).should > 0
105
+ end
106
+
107
+ it "should send a postcard with an image and template" do
108
+ @addr_template_filename = File.dirname(__FILE__) + '/../spec/doc/postcard_address_side_with_return_address.html'
109
+ @addr_template = open(@addr_template_filename, 'rb'){|io| io.read }
110
+ opts={}
111
+
112
+ #Prepare address side
113
+ opts[:AddressSideFileType]="HTML"
114
+ opts[:MyDescription]="Sending Template Postcard #{Time.now}"
115
+ opts[:AddressSideBinaryData]=@addr_template
116
+
117
+ #Prepare image side
118
+ opts[:ImageSideFileType]="jpg"
119
+ opts[:ImageSideBinaryData]=open(@sample_image_name){|io| io.read}
120
+
121
+ opts.merge!@address_details
122
+ @client.prepare!
123
+ @client.send_postcard_and_address_advanced(opts).should > 0
124
+ end
125
+
126
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postalmethods
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 3
10
- version: 1.1.3
9
+ - 4
10
+ version: 1.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - James Cox
@@ -75,17 +75,20 @@ files:
75
75
  - Rakefile
76
76
  - config/hoe.rb
77
77
  - config/requirements.rb
78
+ - lib/postalmethods.wsdl
78
79
  - lib/postalmethods.rb
79
80
  - lib/postalmethods/document_processor.rb
80
81
  - lib/postalmethods/exceptions.rb
81
82
  - lib/postalmethods/get_letter_status.rb
82
83
  - lib/postalmethods/send_letter.rb
84
+ - lib/postalmethods/send_postcard.rb
83
85
  - lib/postalmethods/utility.rb
84
86
  - postalmethods.gemspec
85
87
  - script/console
86
88
  - script/destroy
87
89
  - script/generate
88
90
  - setup.rb
91
+ - spec/doc/sample_image.jpg
89
92
  - spec/doc/WSDL-Output
90
93
  - spec/doc/default.rb
91
94
  - spec/doc/defaultMappingRegistry.rb
@@ -95,6 +98,7 @@ files:
95
98
  - spec/postalmethods_spec.rb
96
99
  - spec/rcov.opts
97
100
  - spec/send_letter_spec.rb
101
+ - spec/send_postcard_spec.rb
98
102
  - spec/spec.opts
99
103
  - spec/spec_helper.rb
100
104
  - spec/utility_spec.rb