gun_accessory_supply 0.0.5 → 1.0.0
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 +4 -4
- data/gun_accessory_supply.gemspec +3 -2
- data/lib/gun_accessory_supply/base.rb +23 -16
- data/lib/gun_accessory_supply/order.rb +1 -4
- data/lib/gun_accessory_supply/po.rb +39 -0
- data/lib/gun_accessory_supply/tracking.rb +21 -22
- data/lib/gun_accessory_supply/version.rb +1 -1
- data/lib/gun_accessory_supply.rb +7 -2
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e62de40dc12dccc647ef63845db30843ffebcc34dc972b983902386d41f4f12a
|
4
|
+
data.tar.gz: 23f95cfda894bb0476cb8a96074e714ba973fa081cae653fce88c530acec842f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1faa623eafd0163d25e2c40dde87cd29f40f4691a2bac13d151c4023dc51b8ebc2fb2dd9a6a434c217349124f9d4fc5823dfc7966d7cc8ccb5d6ae6dff5b70c
|
7
|
+
data.tar.gz: a3d45f7e90194b901f9a8d48fc51b7eb9d2a21bf6b87e7d987eef5f2f9baa6fa1600525ffde72fc906948094e37ad8eec66ac0c1a31baac51036ab039e4985db
|
@@ -6,8 +6,8 @@ require 'gun_accessory_supply/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "gun_accessory_supply"
|
8
8
|
spec.version = GunAccessorySupply::VERSION
|
9
|
-
spec.authors = ["Tony Beninate"]
|
10
|
-
spec.email = ["tonybeninate@icloud.com"]
|
9
|
+
spec.authors = ["Tony Beninate", "Jeffrey Dill"]
|
10
|
+
spec.email = ["tonybeninate@icloud.com", "jeffdill2@gmail.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{Ruby library for Gun Accessory Supply}
|
13
13
|
spec.description = %q{}
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.add_runtime_dependency "activesupport", ">= 5", "< 7"
|
25
25
|
spec.add_runtime_dependency "net-sftp"
|
26
|
+
spec.add_runtime_dependency "cxml"
|
26
27
|
|
27
28
|
spec.add_development_dependency "bundler", ">= 1.15"
|
28
29
|
spec.add_development_dependency "rake", "~> 12.3.0"
|
@@ -37,9 +37,7 @@ module GunAccessorySupply
|
|
37
37
|
# Instance methods become class methods through inheritance
|
38
38
|
def connect(options)
|
39
39
|
self.class.connect(options) do |sftp|
|
40
|
-
|
41
|
-
yield(sftp)
|
42
|
-
end
|
40
|
+
yield(sftp)
|
43
41
|
end
|
44
42
|
end
|
45
43
|
|
@@ -53,27 +51,36 @@ module GunAccessorySupply
|
|
53
51
|
end
|
54
52
|
end
|
55
53
|
|
56
|
-
def get_file(filename, file_directory=nil)
|
54
|
+
def get_file(filename, file_directory = nil)
|
57
55
|
connect(@options) do |sftp|
|
58
|
-
|
59
|
-
tempfile = Tempfile.new
|
56
|
+
tempfile = Tempfile.new
|
60
57
|
|
61
|
-
|
58
|
+
sftp.download!(File.join(file_directory, filename), tempfile.path)
|
62
59
|
|
63
|
-
|
64
|
-
end
|
60
|
+
return tempfile
|
65
61
|
end
|
66
62
|
end
|
67
63
|
|
68
|
-
def
|
69
|
-
filenames = []
|
70
|
-
|
64
|
+
def get_full_filenames(filename_regexes = [], file_directory = nil)
|
71
65
|
connect(@options) do |sftp|
|
72
|
-
sftp.dir.
|
73
|
-
|
66
|
+
filenames = sftp.dir.entries(file_directory).map(&:name)
|
67
|
+
full_regex = Regexp.union(*filename_regexes)
|
74
68
|
|
75
|
-
|
76
|
-
|
69
|
+
return filenames.select { |filename| filename =~ full_regex }
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def get_most_recent_file(file_prefix, file_directory = nil)
|
74
|
+
connect(@options) do |sftp|
|
75
|
+
filename = sftp.
|
76
|
+
dir.
|
77
|
+
entries(file_directory).
|
78
|
+
map(&:name).
|
79
|
+
select { |filename| filename.include?(file_prefix) }.
|
80
|
+
sort.
|
81
|
+
last
|
82
|
+
|
83
|
+
return get_file(filename, file_directory)
|
77
84
|
end
|
78
85
|
end
|
79
86
|
|
@@ -73,28 +73,25 @@ module GunAccessorySupply
|
|
73
73
|
xml.Credential(domain: GunAccessorySupply.config.xml_domain) do
|
74
74
|
xml.Identity GunAccessorySupply.config.xml_domain
|
75
75
|
xml.SharedSecret GunAccessorySupply.config.xml_secret
|
76
|
-
xml.OrderID @po_number
|
77
76
|
end
|
78
77
|
end
|
79
78
|
xml.To do
|
80
79
|
xml.Credential(domain: GunAccessorySupply.config.xml_domain) do
|
81
80
|
xml.Identity GunAccessorySupply.config.xml_domain
|
82
81
|
xml.SharedSecret GunAccessorySupply.config.xml_secret
|
83
|
-
xml.OrderID @po_number
|
84
82
|
end
|
85
83
|
end
|
86
84
|
xml.Sender do
|
87
85
|
xml.Credential(domain: GunAccessorySupply.config.xml_domain) do
|
88
86
|
xml.Identity GunAccessorySupply.config.xml_domain
|
89
87
|
xml.SharedSecret GunAccessorySupply.config.xml_secret
|
90
|
-
xml.OrderID @po_number
|
91
88
|
end
|
92
89
|
end
|
93
90
|
end
|
94
91
|
|
95
92
|
xml.Request do
|
96
93
|
xml.OrderRequest do
|
97
|
-
xml.OrderRequestHeader(orderDate: Time.now, type: 'new') do
|
94
|
+
xml.OrderRequestHeader(orderDate: Time.now, type: 'new', orderID: @po_number) do
|
98
95
|
xml.ShipTo do
|
99
96
|
xml.Address(addressID: @ship_to_id) do
|
100
97
|
xml.Name @recipient[:dealer_name]
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module GunAccessorySupply
|
2
|
+
class PO < Base
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
requires!(options, :username, :password)
|
6
|
+
|
7
|
+
@options = options
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.file_names(options = {}, po_numbers = [])
|
11
|
+
requires!(options, :username, :password)
|
12
|
+
|
13
|
+
new(options).file_names(po_numbers)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.file_data(options = {}, filename)
|
17
|
+
requires!(options, :username, :password)
|
18
|
+
|
19
|
+
new(options).download(filename)
|
20
|
+
end
|
21
|
+
|
22
|
+
def file_names(po_numbers = [])
|
23
|
+
filename_regexes = if po_numbers.empty?
|
24
|
+
[/#{GunAccessorySupply.config.po_filename_prefix}.*.xml/]
|
25
|
+
else
|
26
|
+
po_numbers.map do |po_number|
|
27
|
+
/#{GunAccessorySupply.config.po_filename_prefix}.*#{po_number}.xml/
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
get_full_filenames(filename_regexes, 'out')
|
32
|
+
end
|
33
|
+
|
34
|
+
def file_data(filename)
|
35
|
+
CXML::Parser.new.parse(get_file(filename, 'out').read)
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -1,39 +1,38 @@
|
|
1
1
|
module GunAccessorySupply
|
2
2
|
class Tracking < Base
|
3
3
|
|
4
|
-
BASE_TRACKING_FILE_DIRECTORY = "%s-TRACK".freeze
|
5
|
-
BASE_TRACKING_FILE_NAME = "%s_PackageTracking.csv".freeze
|
6
|
-
CARRIER = 'UPS'.freeze
|
7
|
-
|
8
4
|
def initialize(options = {})
|
9
|
-
requires!(options, :username, :password
|
5
|
+
requires!(options, :username, :password)
|
10
6
|
|
11
7
|
@options = options
|
12
|
-
@dealer_number = options[:dealer_number]
|
13
8
|
end
|
14
9
|
|
15
|
-
def self.
|
16
|
-
requires!(options, :username, :password
|
10
|
+
def self.file_names(options = {}, po_numbers = [])
|
11
|
+
requires!(options, :username, :password)
|
17
12
|
|
18
|
-
new(options).
|
13
|
+
new(options).file_names(po_numbers)
|
19
14
|
end
|
20
15
|
|
21
|
-
def
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
16
|
+
def self.file_data(options = {}, filename)
|
17
|
+
requires!(options, :username, :password)
|
18
|
+
|
19
|
+
new(options).download(filename)
|
20
|
+
end
|
21
|
+
|
22
|
+
def file_names(po_numbers = [])
|
23
|
+
filename_regexes = if po_numbers.empty?
|
24
|
+
[/#{GunAccessorySupply.config.tracking_filename_prefix}.*.xml/]
|
25
|
+
else
|
26
|
+
po_numbers.map do |po_number|
|
27
|
+
/#{GunAccessorySupply.config.tracking_filename_prefix}.*#{po_number}.xml/
|
28
|
+
end
|
32
29
|
end
|
33
30
|
|
34
|
-
|
31
|
+
get_full_filenames(filename_regexes, 'out')
|
32
|
+
end
|
35
33
|
|
36
|
-
|
34
|
+
def file_data(filename)
|
35
|
+
CXML::Parser.new.parse(get_file(filename, 'out').read)
|
37
36
|
end
|
38
37
|
|
39
38
|
end
|
data/lib/gun_accessory_supply.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
|
-
require '
|
1
|
+
require 'active_support/all'
|
2
2
|
require 'csv'
|
3
|
+
require 'cxml'
|
3
4
|
require 'net/sftp'
|
4
5
|
require 'tempfile'
|
5
|
-
|
6
|
+
|
7
|
+
require 'gun_accessory_supply/version'
|
6
8
|
require 'gun_accessory_supply/base'
|
7
9
|
require 'gun_accessory_supply/catalog'
|
8
10
|
require 'gun_accessory_supply/category'
|
9
11
|
require 'gun_accessory_supply/inventory'
|
12
|
+
require 'gun_accessory_supply/po'
|
10
13
|
require 'gun_accessory_supply/order'
|
11
14
|
require 'gun_accessory_supply/tracking'
|
12
15
|
require 'gun_accessory_supply/user'
|
@@ -33,6 +36,8 @@ module GunAccessorySupply
|
|
33
36
|
sftp_host
|
34
37
|
sftp_port
|
35
38
|
inventory_filename_prefix
|
39
|
+
po_filename_prefix
|
40
|
+
tracking_filename_prefix
|
36
41
|
xml_domain
|
37
42
|
xml_secret
|
38
43
|
proxy_host
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gun_accessory_supply
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Beninate
|
8
|
+
- Jeffrey Dill
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date: 2022-
|
12
|
+
date: 2022-10-14 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: activesupport
|
@@ -44,6 +45,20 @@ dependencies:
|
|
44
45
|
- - ">="
|
45
46
|
- !ruby/object:Gem::Version
|
46
47
|
version: '0'
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: cxml
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: bundler
|
49
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,6 +104,7 @@ dependencies:
|
|
89
104
|
description: ''
|
90
105
|
email:
|
91
106
|
- tonybeninate@icloud.com
|
107
|
+
- jeffdill2@gmail.com
|
92
108
|
executables: []
|
93
109
|
extensions: []
|
94
110
|
extra_rdoc_files: []
|
@@ -108,6 +124,7 @@ files:
|
|
108
124
|
- lib/gun_accessory_supply/category.rb
|
109
125
|
- lib/gun_accessory_supply/inventory.rb
|
110
126
|
- lib/gun_accessory_supply/order.rb
|
127
|
+
- lib/gun_accessory_supply/po.rb
|
111
128
|
- lib/gun_accessory_supply/tracking.rb
|
112
129
|
- lib/gun_accessory_supply/user.rb
|
113
130
|
- lib/gun_accessory_supply/version.rb
|