dhl_memnosyne 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.
@@ -0,0 +1,12 @@
1
+ # This is the main class. To get the shipment details user has to call
2
+ # DHLMemnosyne.track method. DHLMemnosyne.track method receives 3 arguments. First argument is tracking number of a shipment.
3
+ # second argument is DHL id provided by DHL. Third argument is Password provided by DHL. DHL id and password can be specified in
4
+ # rails_root/config/dhl_config.yml. User can also can the track method by directly providing DHL id and password as second
5
+ # and third argument to track method.
6
+ class DHLRuby
7
+ #require 'dhl_memnosyne/credentials/credentials'
8
+ def self.track(tracking_number, dhl_id, dhl_password)
9
+ require 'dhl_memnosyne/web_interface/dhl_call'
10
+ DhlCall.response(tracking_number, dhl_id, dhl_password)
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ require 'yaml'
2
+ begin
3
+ CONFIGURATION = YAML.load_file("#{Rails.root}/config/dhl_config.yml")[RAILS_ENV]
4
+ rescue
5
+ puts "Confuration file not found. Run rake install_dhl_memosyne."
6
+ end
@@ -0,0 +1,40 @@
1
+ module DhlCall
2
+ require 'uri'
3
+ require 'net/http'
4
+ require 'net/https'
5
+ require 'openssl'
6
+
7
+ # This method gets called by main class DHLMemnosyne.
8
+ # It makes actual http request to get the shipment details.
9
+ def self.response(tracking_number,dhl_id,dhl_password)
10
+ uri = URI.parse 'HTTPS://eCommerce.airborne.com/ApiLanding.asp'
11
+ http = Net::HTTP.new uri.host, uri.port
12
+ http.use_ssl, http.verify_mode = use_ssl?(uri)
13
+ request = dhl_request(tracking_number,dhl_id,dhl_password)
14
+ return http.post(uri.path, request).body
15
+ end
16
+
17
+ def self.dhl_request(tracking_number,dhl_id,dhl_password)
18
+ require 'rubygems'
19
+ require 'nokogiri'
20
+ xml_request = Nokogiri::XML::Builder.new do |xml|
21
+ xml.ECommerce('action' => 'Request', 'version' => '1.1') {
22
+ xml.Requestor {
23
+ xml.ID_ dhl_id
24
+ xml.Password_ dhl_password
25
+ }
26
+ xml.Track('action' => 'Get', 'version' => '1.0'){
27
+ xml.Shipment{
28
+ xml.TrackingNbr_ tracking_number
29
+ }
30
+ }
31
+ }
32
+ end
33
+ xml_request.to_xml
34
+ end
35
+
36
+ def self.use_ssl?(uri)
37
+ uri.port == 443 ?
38
+ (return true, OpenSSL::SSL::VERIFY_NONE) : (return false, OpenSSL::SSL::VERIFY_NONE)
39
+ end
40
+ end
@@ -0,0 +1,9 @@
1
+ development:
2
+ dhl_id: your_dhl_id
3
+ dhl_password: your_dhl_password
4
+
5
+ production:
6
+ inherit: development
7
+
8
+ test:
9
+ inherit: development
@@ -0,0 +1,3 @@
1
+ task :install_dhl_memnosyne do
2
+ FileUtils.cp "dhl_config.yml", "#{Rails.root}/config/dhl_config.yml"
3
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dhl_memnosyne
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Pratik Ganvir
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: 1.5.2
21
+ none: false
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.5.2
27
+ none: false
28
+ prerelease: false
29
+ type: :runtime
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0.9'
37
+ none: false
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0.9'
43
+ none: false
44
+ prerelease: false
45
+ type: :runtime
46
+ description: Track DHL shipment.
47
+ email: pratikganvir@yahoo.in
48
+ executables: []
49
+ extensions: []
50
+ extra_rdoc_files: []
51
+ files:
52
+ - lib/dhl_memnosyne.rb
53
+ - lib/dhl_memnosyne/credentials/credentials.rb
54
+ - lib/dhl_memnosyne/web_interface/dhl_call.rb
55
+ - lib/tasks/rakefile.rb
56
+ - lib/tasks/dhl_config.yml
57
+ homepage: http://rubygems.org/gems/dhl_memnosyne
58
+ licenses: []
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ none: false
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ none: false
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 1.8.24
78
+ signing_key:
79
+ specification_version: 3
80
+ summary: Gem for DHL api.
81
+ test_files: []