bsb 1.2.0 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.release-please-manifest.json +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +14 -0
- data/README.md +14 -2
- data/config/bsb_bank_list.json +2 -2
- data/config/bsb_db.json +1843 -1447
- data/lib/bsb/bank_list_generator.rb +1 -3
- data/lib/bsb/base_generator.rb +0 -6
- data/lib/bsb/database_generator.rb +1 -3
- data/lib/bsb/version.rb +1 -1
- data/lib/tasks/bsb_tasks.rake +3 -14
- metadata +3 -5
- data/.github/workflows/update-database.yml +0 -30
- data/lib/auspaynet/client.rb +0 -32
@@ -6,10 +6,8 @@ require 'bsb/base_generator'
|
|
6
6
|
module BSB
|
7
7
|
class BankListGenerator < BaseGenerator
|
8
8
|
def self.load_file(filename)
|
9
|
-
client = ::Auspaynet::Client.new('bsb.hostedftp.com')
|
10
|
-
content = client.get('~auspaynetftp/BSB', filename)
|
11
9
|
hash = {}
|
12
|
-
CSV.
|
10
|
+
CSV.foreach(filename) do |row|
|
13
11
|
row[2].split(', ').each do |prefix|
|
14
12
|
prefix = prefix.chomp.rjust(2, '0')
|
15
13
|
hash[prefix] = row[1]
|
data/lib/bsb/base_generator.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'json'
|
4
|
-
require 'auspaynet/client'
|
5
4
|
|
6
5
|
module BSB
|
7
6
|
class BaseGenerator
|
@@ -12,10 +11,5 @@ module BSB
|
|
12
11
|
def json
|
13
12
|
JSON.pretty_generate(@hash)
|
14
13
|
end
|
15
|
-
|
16
|
-
def self.latest_file(matching_filename:, file_format:)
|
17
|
-
client = ::Auspaynet::Client.new('bsb.hostedftp.com')
|
18
|
-
client.list(dir: '~auspaynetftp/BSB', matching_filename: matching_filename, file_format: file_format)&.last
|
19
|
-
end
|
20
14
|
end
|
21
15
|
end
|
@@ -5,10 +5,8 @@ require 'bsb/base_generator'
|
|
5
5
|
module BSB
|
6
6
|
class DatabaseGenerator < BaseGenerator
|
7
7
|
def self.load_file(filename)
|
8
|
-
client = ::Auspaynet::Client.new('bsb.hostedftp.com')
|
9
|
-
content = client.get('~auspaynetftp/BSB', filename)
|
10
8
|
hash = {}
|
11
|
-
|
9
|
+
File.foreach(filename) do |line|
|
12
10
|
next if line[3] != '-'
|
13
11
|
|
14
12
|
bsb = line[0, 3] + line[4, 3]
|
data/lib/bsb/version.rb
CHANGED
data/lib/tasks/bsb_tasks.rake
CHANGED
@@ -2,21 +2,10 @@
|
|
2
2
|
|
3
3
|
namespace :bsb do
|
4
4
|
desc 'Sync config/*.json.'
|
5
|
-
task :sync do
|
5
|
+
task :sync, [:keyfile, :bsbfile] do |_t, args|
|
6
6
|
require 'bsb/base_generator'
|
7
|
-
bank_list_filename =
|
8
|
-
|
9
|
-
file_format: '.csv'
|
10
|
-
)
|
11
|
-
db_list_filename = BSB::BaseGenerator.latest_file(
|
12
|
-
matching_filename: 'BSBDirectory',
|
13
|
-
file_format: '.txt'
|
14
|
-
)
|
15
|
-
|
16
|
-
raise 'No bank list or bsb found' unless bank_list_filename || db_list_filename
|
17
|
-
|
18
|
-
puts "Bank list file: '#{bank_list_filename}'"
|
19
|
-
puts "DB file: '#{db_list_filename}'"
|
7
|
+
bank_list_filename = args[:keyfile]
|
8
|
+
db_list_filename = args[:bsbfile]
|
20
9
|
|
21
10
|
if bank_list_filename
|
22
11
|
require 'bsb/bank_list_generator'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bsb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Zhou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -33,7 +33,6 @@ extra_rdoc_files: []
|
|
33
33
|
files:
|
34
34
|
- ".github/workflows/ci.yml"
|
35
35
|
- ".github/workflows/release.yml"
|
36
|
-
- ".github/workflows/update-database.yml"
|
37
36
|
- ".gitignore"
|
38
37
|
- ".release-please-manifest.json"
|
39
38
|
- ".rubocop.yml"
|
@@ -46,7 +45,6 @@ files:
|
|
46
45
|
- bsb.gemspec
|
47
46
|
- config/bsb_bank_list.json
|
48
47
|
- config/bsb_db.json
|
49
|
-
- lib/auspaynet/client.rb
|
50
48
|
- lib/bsb.rb
|
51
49
|
- lib/bsb/bank_list_generator.rb
|
52
50
|
- lib/bsb/base_generator.rb
|
@@ -77,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
75
|
- !ruby/object:Gem::Version
|
78
76
|
version: '0'
|
79
77
|
requirements: []
|
80
|
-
rubygems_version: 3.5.
|
78
|
+
rubygems_version: 3.5.11
|
81
79
|
signing_key:
|
82
80
|
specification_version: 4
|
83
81
|
summary: BSB number validator with built-in database.
|
@@ -1,30 +0,0 @@
|
|
1
|
-
name: Update BSB Database
|
2
|
-
|
3
|
-
on:
|
4
|
-
schedule:
|
5
|
-
# https://crontab.guru/every-month
|
6
|
-
# At 00:00 on day-of-month 1.
|
7
|
-
- cron: "0 0 1 * *"
|
8
|
-
workflow_dispatch:
|
9
|
-
|
10
|
-
jobs:
|
11
|
-
build:
|
12
|
-
name: Update BSB Database & Version
|
13
|
-
runs-on: ubuntu-latest
|
14
|
-
steps:
|
15
|
-
- uses: actions/checkout@v4
|
16
|
-
- name: Set up Ruby
|
17
|
-
uses: ruby/setup-ruby@v1
|
18
|
-
with:
|
19
|
-
bundler-cache: true
|
20
|
-
- name: Update BSB Database & Version
|
21
|
-
run: bundle exec rake bsb:sync
|
22
|
-
- id: get-date
|
23
|
-
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
|
24
|
-
- uses: peter-evans/create-pull-request@v6
|
25
|
-
id: raise-pr
|
26
|
-
with:
|
27
|
-
branch: "bot/${{ steps.get-date.outputs.date }}"
|
28
|
-
base: master
|
29
|
-
title: "fix: ${{ steps.get-date.outputs.date }} periodic update of config/*.json database files."
|
30
|
-
delete-branch: true
|
data/lib/auspaynet/client.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'net/ftp'
|
4
|
-
|
5
|
-
module Auspaynet
|
6
|
-
class Client
|
7
|
-
def initialize(host)
|
8
|
-
@host = host
|
9
|
-
@ftp = Net::FTP.new(@host)
|
10
|
-
@ftp.login
|
11
|
-
@ftp.passive = true
|
12
|
-
end
|
13
|
-
|
14
|
-
def get(dir, filename)
|
15
|
-
@ftp.chdir(dir)
|
16
|
-
@ftp.gettextfile(filename, nil)
|
17
|
-
ensure
|
18
|
-
@ftp.chdir('/')
|
19
|
-
end
|
20
|
-
|
21
|
-
def list(dir:, matching_filename:, file_format: 'csv')
|
22
|
-
@ftp.chdir(dir)
|
23
|
-
files = @ftp.nlst.select do |f|
|
24
|
-
f.include?(matching_filename) && f.end_with?(file_format)
|
25
|
-
end
|
26
|
-
|
27
|
-
files.sort_by { |fname| @ftp.mtime(fname) }
|
28
|
-
ensure
|
29
|
-
@ftp.chdir('/')
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|