endpost 0.0.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.
- checksums.yaml +7 -0
- data/lib/endpost.rb +116 -0
- metadata +101 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8bf9043d140d78f5f95241d4b089c9556e257d55
|
4
|
+
data.tar.gz: 42399bd50aa7ceca0859b88d6fbd68e3386ade41
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fa4f78634ecf3dc7ee4c3285b6a39feed40a66ab7e4dc5a3cbec6826dd1958033123e513ca5ffe474e650146c8a10719edabb2ca3ce8a32f9d0e208577a10a6e
|
7
|
+
data.tar.gz: 347f0d9a0ad291b55cf2b17462af43259b375247d5b5d564bb1cda83fb5bd6fd5d6f931f580132667db0abe71c5e91a59a3b40397cd1037196d53fcdbf7f323b
|
data/lib/endpost.rb
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require 'restclient'
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
class Endpost
|
6
|
+
BASE_URL = 'https://elstestserver.endicia.com/LabelService/EwsLabelService.asmx'
|
7
|
+
|
8
|
+
class << self
|
9
|
+
attr_accessor :test, :requester_id, :account_id, :password
|
10
|
+
|
11
|
+
def change_pass_phrase(old_password, new_password)
|
12
|
+
xml = %!
|
13
|
+
<ChangePassPhraseRequest>
|
14
|
+
<RequesterID>#{requester_id}</RequesterID>
|
15
|
+
<RequestID>0</RequestID>
|
16
|
+
<CertifiedIntermediary>
|
17
|
+
<AccountID>#{account_id}</AccountID>
|
18
|
+
<PassPhrase>#{old_password}</PassPhrase>
|
19
|
+
</CertifiedIntermediary>
|
20
|
+
<NewPassPhrase>#{new_password}</NewPassPhrase>
|
21
|
+
</ChangePassPhraseRequest>!
|
22
|
+
|
23
|
+
response = RestClient.post "#{BASE_URL}/ChangePassPhraseXML", :changePassPhraseRequestXML => xml
|
24
|
+
|
25
|
+
response_xml = Nokogiri::XML(response.body)
|
26
|
+
status_node_xml = response_xml.css('ChangePassPhraseRequestResponse Status').first
|
27
|
+
endicia_response_code = status_node_xml ? status_node_xml.text : nil
|
28
|
+
|
29
|
+
unless endicia_response_code == '0'
|
30
|
+
error_message_node_xml = response_xml.css('ChangePassPhraseRequestResponse ErrorMessage').first
|
31
|
+
endicia_response_message = error_message_node_xml ? error_message_node_xml.text : 'Unknown error'
|
32
|
+
fail endicia_response_message
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_postage_label(args)
|
37
|
+
xml = %!
|
38
|
+
<LabelRequest Test="#{test ? 'YES' : 'NO'}" LabelType="Default" ImageFormat="PDF" LabelSize="4x6">
|
39
|
+
<RequesterID>#{requester_id}</RequesterID>
|
40
|
+
<AccountID>#{account_id}</AccountID>
|
41
|
+
<PassPhrase>#{password}</PassPhrase>
|
42
|
+
<MailClass>#{args[:mail_class]}</MailClass>
|
43
|
+
<MailpieceShape>#{args[:mailpiece_shape]}</MailpieceShape>
|
44
|
+
<SortType>#{args[:sort_type]}</SortType>
|
45
|
+
<DateAdvance>0</DateAdvance>
|
46
|
+
<WeightOz>#{args[:weight]}</WeightOz>
|
47
|
+
<Services DeliveryConfirmation="ON" SignatureConfirmation="OFF"/>
|
48
|
+
<ReferenceID>#{args[:order_number]}</ReferenceID>
|
49
|
+
<PartnerCustomerID>1</PartnerCustomerID>
|
50
|
+
<PartnerTransactionID>1</PartnerTransactionID>
|
51
|
+
<ToName>#{args[:to][:full_name]}</ToName>
|
52
|
+
<ToCompany>#{args[:to][:company]}</ToCompany>
|
53
|
+
<ToAddress1>#{args[:to][:address]}</ToAddress1>
|
54
|
+
<ToCity>#{args[:to][:city]}</ToCity>
|
55
|
+
<ToState>#{args[:to][:state]}</ToState>
|
56
|
+
<ToPostalCode>#{args[:to][:zip]}</ToPostalCode>
|
57
|
+
<ToPhone>#{args[:to][:phone]}</ToPhone>
|
58
|
+
<FromName>#{args[:from][:full_name]}</FromName>
|
59
|
+
<ReturnAddress1>#{args[:from][:address]}</ReturnAddress1>
|
60
|
+
<FromCity>#{args[:from][:city]}</FromCity>
|
61
|
+
<FromState>#{args[:from][:state]}</FromState>
|
62
|
+
<FromPostalCode>#{args[:from][:zip]}</FromPostalCode>
|
63
|
+
</LabelRequest>!
|
64
|
+
|
65
|
+
begin
|
66
|
+
response = RestClient.post "#{BASE_URL}/GetPostageLabelXML", :labelRequestXML => xml
|
67
|
+
|
68
|
+
response_xml = Nokogiri::XML(response.body)
|
69
|
+
status_node_xml = response_xml.css('LabelRequestResponse Status').first
|
70
|
+
endicia_response_code = status_node_xml ? status_node_xml.text : nil
|
71
|
+
|
72
|
+
unless endicia_response_code == '0'
|
73
|
+
error_message_node_xml = response_xml.css('LabelRequestResponse ErrorMessage').first
|
74
|
+
endicia_response_message = error_message_node_xml ? error_message_node_xml.text : 'Unknown error'
|
75
|
+
fail endicia_response_message
|
76
|
+
end
|
77
|
+
|
78
|
+
label_node_xml = response_xml.css('LabelRequestResponse Base64LabelImage').first
|
79
|
+
return label_node_xml.text
|
80
|
+
|
81
|
+
rescue => e
|
82
|
+
fail e.to_s
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def buy_postage(amount)
|
87
|
+
xml = %!
|
88
|
+
<RecreditRequest>
|
89
|
+
<RequesterID>#{requester_id}</RequesterID>
|
90
|
+
<RequestID>0</RequestID>
|
91
|
+
<CertifiedIntermediary>
|
92
|
+
<AccountID>#{account_id}</AccountID>
|
93
|
+
<PassPhrase>#{password}</PassPhrase>
|
94
|
+
</CertifiedIntermediary>
|
95
|
+
<RecreditAmount>#{amount}</RecreditAmount>
|
96
|
+
</RecreditRequest>!
|
97
|
+
|
98
|
+
begin
|
99
|
+
response = RestClient.post "#{BASE_URL}/BuyPostageXML", :recreditRequestXML => xml
|
100
|
+
|
101
|
+
response_xml = Nokogiri::XML(response.body)
|
102
|
+
status_node_xml = response_xml.css('RecreditRequestResponse Status').first
|
103
|
+
endicia_response_code = status_node_xml ? status_node_xml.text : nil
|
104
|
+
|
105
|
+
unless endicia_response_code == '0'
|
106
|
+
error_message_node_xml = response_xml.css('RecreditRequestResponse ErrorMessage').first
|
107
|
+
endicia_response_message = error_message_node_xml ? error_message_node_xml.text : 'Unknown error'
|
108
|
+
fail endicia_response_message
|
109
|
+
end
|
110
|
+
|
111
|
+
rescue => e
|
112
|
+
fail e.to_s
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
metadata
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: endpost
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alfonso Cora
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rest-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.6.7
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.6.7
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: nokogiri
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.6.6.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.6.6.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 5.6.1
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 5.6.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: vcr
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.9.3
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.9.3
|
69
|
+
description: Allows to generate shipping labels and to perform some of the Endicia
|
70
|
+
basic operations.
|
71
|
+
email: alfius@protonmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- lib/endpost.rb
|
77
|
+
homepage: https://github.com/alfonsocora/endpost
|
78
|
+
licenses:
|
79
|
+
- MIT
|
80
|
+
metadata: {}
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
requirements: []
|
96
|
+
rubyforge_project:
|
97
|
+
rubygems_version: 2.4.6
|
98
|
+
signing_key:
|
99
|
+
specification_version: 4
|
100
|
+
summary: A wrapper around Endicia web services.
|
101
|
+
test_files: []
|