fedexws 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5c88e58f8dd61778640e3c7f8e88d1fc6ad1fdc74c0dfcd76e1fd2349781656c
4
+ data.tar.gz: 9a06f2db1c31940f0eddf4bbc5a4eacc144feb19cc9f9a59b7a47f8c4be060d0
5
+ SHA512:
6
+ metadata.gz: bc145c5bf3197d4760388c14b9eb4694b2a0c9e2d6a278c90b6b0a6ad608cbafb97e069c50b3a3da56c16aeb5dc1d7be5eef1d6d93bc530c597b1c3840a03d26
7
+ data.tar.gz: c2ba2cb1d8f4e2cbd4671a1be5e54814c7ee9e63ecd6098b44285aae41e51191f9cce468925620a34b6557aae66af0e9174ca2bfbba51e9b5efdfbe15a2f5494
data/README.md ADDED
@@ -0,0 +1 @@
1
+ # A GEM TO USE THE FedEx Web Services
@@ -0,0 +1,22 @@
1
+ module Fedexws
2
+ class Configuration
3
+ # FedEx API params
4
+ attr_accessor :api_key, :api_secret, :api_account_number, :api_meter_number
5
+
6
+ def initialize
7
+ load_parameters
8
+ end
9
+
10
+ private
11
+
12
+ def load_parameters
13
+ initializer_file = Rails.root.join('config', 'initializers', 'fedexws.rb')
14
+ config = File.read(initializer_file)
15
+ @api_key = ENV["#{config.match(/config\.api_key\s*=\s*ENV\['([^']+)'\]/)&.captures.first}"]
16
+ @api_secret = ENV["#{config.match(/config\.api_secret\s*=\s*ENV\['([^']+)'\]/)&.captures.first}"]
17
+ @api_account_number = ENV["#{config.match(/config\.api_account_number\s*=\s*ENV\['([^']+)'\]/)&.captures.first}"]
18
+ @api_meter_number = ENV["#{config.match(/config\.api_meter_number\s*=\s*ENV\['([^']+)'\]/)&.captures.first}"]
19
+ @credentials = [@api_key, @api_secret, @api_account_number, @api_meter_number]
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,114 @@
1
+ require 'net/http'
2
+ require 'rspec'
3
+
4
+ module Fedexws
5
+ class Rates
6
+ def initialize
7
+ #FedEx Credentials
8
+ @credentials = Fedexws::Configuration.new
9
+ end
10
+
11
+ def get(shipping_params)
12
+
13
+ @shipping_params = shipping_params
14
+ puts "#{shipping_params}"
15
+
16
+ gem_spec = Gem.loaded_specs['fedexws']
17
+ gem_dir = gem_spec.gem_dir
18
+ puts "TEMPLATE DIRECTORY #{gem_dir}/lib/templates/xml_soap"
19
+ xml_template = File.read(File.join(gem_dir, 'lib/templates/xml_soap'))
20
+
21
+ xml_template_insert_fedex_params = fedex_params_for_request(xml_template)
22
+ puts "REPLACE FEDEX CREDENTIALS #{xml_template_insert_fedex_params}"
23
+ xml_template_insert_shipping_params = shipping_params_for_request(xml_template_insert_fedex_params)
24
+ puts "REPLACE FEDEX PACKAGE INFOSS #{xml_template_insert_shipping_params}"
25
+
26
+ url = URI("https://wsbeta.fedex.com/xml")
27
+
28
+ request = Net::HTTP::Post.new(url)
29
+ request["Content-Type"] = "application/xml"
30
+
31
+ request.body = xml_template_insert_shipping_params
32
+
33
+ response = Net::HTTP.start(url.hostname, url.port, use_ssl: true) do |http|
34
+ http.request(request)
35
+ end
36
+
37
+ begin
38
+ response.body
39
+ rescue Exception => e
40
+ puts "An exception occurred: #{e.message}"
41
+ puts e.backtrace.inspect
42
+ end
43
+ end
44
+
45
+ def fedex_params_for_request(xml_template)
46
+ fedex_params.each do |key, value|
47
+ xml_template.gsub!(key, value)
48
+ end
49
+ return xml_template
50
+ end
51
+
52
+ def shipping_params_for_request(xml_template)
53
+ puts "ECCOCCI QUI SIAMO DENTRO IL METODO: shipping_params_for_reuqest"
54
+ puts "abbiamo xml_template da modificare"
55
+ puts "#{xml_template}"
56
+ puts "abbiamo xml_template da modificare"
57
+ puts "#{shipping_params_values}"
58
+ i = 0
59
+ shipping_params_values.each do |key, value|
60
+ puts "#{i}"
61
+ puts "#{key} #{value}"
62
+ xml_template.gsub!(key, value)
63
+ i += 1
64
+ end
65
+ puts "ECCOCCI QUA"
66
+ puts "#{xml_template}"
67
+ return xml_template
68
+ end
69
+
70
+ def fedex_params
71
+ fedex_credentials = {
72
+ "API_KEY" => @credentials.api_key,
73
+ "API_SECRET" => @credentials.api_secret,
74
+ "API_ACCOUNT_NUMBER" => @credentials.api_account_number,
75
+ "API_METER_NUMBER" => @credentials.api_meter_number
76
+ }
77
+ end
78
+
79
+ def shipping_params_values
80
+
81
+ if @shipping_params.is_a?(Hash)
82
+
83
+ shipping_values = {
84
+ "ZIPCODE_FROM" => @shipping_params[:address_from][:zip],
85
+ "COUNTRY_FROM" => @shipping_params[:address_from][:country],
86
+ "ZIPCODE_TO" => @shipping_params[:address_to][:zip],
87
+ "COUNTRY_TO" => @shipping_params[:address_to][:country],
88
+ "MASS_UNIT" => @shipping_params[:package][:mass_unit].upcase,
89
+ "WEIGTH_SIZE" => @shipping_params[:package][:weigth],
90
+ "LENGTH_SIZE" => @shipping_params[:package][:length].to_i.to_s,
91
+ "WIDTH_SIZE" => @shipping_params[:package][:width].to_i.to_s,
92
+ "HEIGTH_SIZE" => @shipping_params[:package][:heigth].to_i.to_s,
93
+ "DISTANCE_UNIT" => @shipping_params[:package][:distance_unit].upcase
94
+ }
95
+ else
96
+
97
+ shipping_values = {
98
+ "ZIPCODE_FROM" => "64000",
99
+ "COUNTRY_FROM" => "MX",
100
+ "ZIPCODE_TO" => "64000",
101
+ "COUNTRY_TO" => "MX",
102
+ "MASS_UNIT" => "KG",
103
+ "WEIGTH_SIZE" => "6.5",
104
+ "LENGTH_SIZE" => "25",
105
+ "WIDTH_SIZE" => "28",
106
+ "HEIGTH_SIZE" => "46",
107
+ "DISTANCE_UNIT" => "CM"
108
+ }
109
+
110
+ end
111
+ end
112
+
113
+ end
114
+ end
data/lib/fedexws.rb ADDED
@@ -0,0 +1,12 @@
1
+ require 'fedexws/configuration'
2
+ require 'fedexws/rates'
3
+
4
+ module Fedexws
5
+ def self.configuration
6
+ @configuration ||= Configuration.new
7
+ end
8
+
9
+ def self.configure(&block)
10
+ yield(configuration)
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ module Fedexws
2
+ class FedexwsGenerator < Rails::Generators::Base
3
+ source_root File.expand_path('templates', __dir__)
4
+
5
+ def create_initializer_file
6
+ copy_file 'initializer.rb', 'config/initializers/fedexws.rb'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ Fedexws.configure do |config|
2
+ config.api_key = ENV['YOUR_FedEx_API_KEY_USERNAME']
3
+ config.api_secret = ENV['YOUR_FedEx_API_SECRET_PASSWORD']
4
+ config.api_account_number = ENV['YOUR_FedEx_API_ACCOUNT_NUMBER']
5
+ config.api_meter_number = ENV['YOUR_FedEx_API_METER_NUMBER']
6
+ end
@@ -0,0 +1,64 @@
1
+ <RateRequest xmlns="http://fedex.com/ws/rate/v13">
2
+ <WebAuthenticationDetail>
3
+ <UserCredential>
4
+ <Key>API_KEY</Key>
5
+ <Password>API_SECRET</Password>
6
+ </UserCredential>
7
+ </WebAuthenticationDetail>
8
+ <ClientDetail>
9
+ <AccountNumber>API_ACCOUNT_NUMBER</AccountNumber>
10
+ <MeterNumber>API_METER_NUMBER</MeterNumber>
11
+ <Localization>
12
+ <LanguageCode>es</LanguageCode>
13
+ <LocaleCode>mx</LocaleCode>
14
+ </Localization>
15
+ </ClientDetail>
16
+ <Version>
17
+ <ServiceId>crs</ServiceId>
18
+ <Major>13</Major>
19
+ <Intermediate>0</Intermediate>
20
+ <Minor>0</Minor>
21
+ </Version>
22
+ <ReturnTransitAndCommit>true</ReturnTransitAndCommit>
23
+ <RequestedShipment>
24
+ <DropoffType>REGULAR_PICKUP</DropoffType>
25
+ <PackagingType>YOUR_PACKAGING</PackagingType>
26
+ <Shipper>
27
+ <Address>
28
+ <StreetLines></StreetLines>
29
+ <City></City>
30
+ <StateOrProvinceCode>XX</StateOrProvinceCode>
31
+ <PostalCode>ZIPCODE_FROM</PostalCode>
32
+ <CountryCode>COUNTRY_FROM</CountryCode>
33
+ </Address>
34
+ </Shipper>
35
+ <Recipient>
36
+ <Address>
37
+ <StreetLines></StreetLines>
38
+ <City></City>
39
+ <StateOrProvinceCode>XX</StateOrProvinceCode>
40
+ <PostalCode>ZIPCODE_TO</PostalCode>
41
+ <CountryCode>COUNTRY_TO</CountryCode>
42
+ <Residential>false</Residential>
43
+ </Address>
44
+ </Recipient>
45
+ <ShippingChargesPayment>
46
+ <PaymentType>SENDER</PaymentType>
47
+ </ShippingChargesPayment>
48
+ <RateRequestTypes>ACCOUNT</RateRequestTypes>
49
+ <PackageCount>1</PackageCount>
50
+ <RequestedPackageLineItems>
51
+ <GroupPackageCount>1</GroupPackageCount>
52
+ <Weight>
53
+ <Units>MASS_UNIT</Units>
54
+ <Value>WEIGTH_SIZE</Value>
55
+ </Weight>
56
+ <Dimensions>
57
+ <Length>LENGTH_SIZE</Length>
58
+ <Width>WIDTH_SIZE</Width>
59
+ <Height>HEIGTH_SIZE</Height>
60
+ <Units>DISTANCE_UNIT</Units>
61
+ </Dimensions>
62
+ </RequestedPackageLineItems>
63
+ </RequestedShipment>
64
+ </RateRequest>
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fedexws
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Astr0Surf3r
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-04-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 6.0.0
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 6.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: net/http
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.1.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.9.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.9.0
69
+ description: A library to use FedEx Web Services
70
+ email: astr0surf3r@gmail.com
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - README.md
76
+ - lib/fedexws.rb
77
+ - lib/fedexws/configuration.rb
78
+ - lib/fedexws/rates.rb
79
+ - lib/generators/fedexws_generator.rb
80
+ - lib/generators/templates/initializer.rb
81
+ - lib/templates/xml_soap
82
+ homepage: https://github.com/Astr0surf3r/fedexws
83
+ licenses:
84
+ - MIT
85
+ metadata: {}
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubygems_version: 3.2.3
102
+ signing_key:
103
+ specification_version: 4
104
+ summary: FedEx Web Services
105
+ test_files: []