dhl_memnosyne 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []