forex 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +1 -1
- data/lib/forex.rb +0 -1
- data/lib/forex/tabular_rates.rb +2 -2
- data/lib/forex/trader.rb +3 -1
- data/lib/forex/traders/jm/jmmb.rb +7 -13
- data/lib/forex/traders/jm/jnbs.rb +4 -5
- data/lib/forex/traders/jm/ncb.rb +7 -7
- data/lib/forex/version.rb +1 -1
- data/spec/rates/bns.yml +40 -40
- data/spec/rates/cok.yml +20 -20
- data/spec/rates/fgb.yml +16 -16
- data/spec/rates/fxtraders.yml +16 -16
- data/spec/rates/jmmb.yml +17 -22
- data/spec/rates/jnbs.yml +15 -15
- data/spec/rates/ncb.yml +21 -37
- data/spec/rates/sagicor.yml +16 -16
- data/spec/traders_spec.rb +1 -1
- data/spec/vcr/traders/bns.yml +34 -34
- data/spec/vcr/traders/cok.yml +24 -662
- data/spec/vcr/traders/fgb.yml +11 -5832
- data/spec/vcr/traders/fxtraders.yml +266 -611
- data/spec/vcr/traders/jmmb.yml +32 -1083
- data/spec/vcr/traders/jnbs.yml +22 -461
- data/spec/vcr/traders/ncb.yml +680 -282
- data/spec/vcr/traders/sagicor.yml +9 -1715
- metadata +3 -4
- data/lib/forex/client.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 22d0fe237e6625b35097f1241e18d6b12e18cb43ead901dc86fd736d78c78422
|
4
|
+
data.tar.gz: 97a2f4e7c023344bd4d2805b6588542a34ec5cd340921d8b1177fb259b7318d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 951a54966ac9e69322fb3147063aee24cc831238c11b4b267d49b2f1771d9365c0e90c291dd139b58c64b4a69a07acc66f13dcc0658d3f35b8d9800e28d42817
|
7
|
+
data.tar.gz: 54cfbfefe037504c1e7ff175bd8b8b7eb93f4482f5ba180cab447dcd34a89721bffaebb2d842ff563353d449b3a414bd13d904af83673ca626f71e70fb33917e
|
data/.travis.yml
CHANGED
data/lib/forex.rb
CHANGED
data/lib/forex/tabular_rates.rb
CHANGED
@@ -45,7 +45,8 @@ module Forex
|
|
45
45
|
def parse_currency_code(table_row, translations)
|
46
46
|
return if table_row.empty?
|
47
47
|
|
48
|
-
|
48
|
+
content = table_row[currency_column.to_i].content.gsub(/\A[[:space:]]*(.*?)[[:space:]]*\z/) { $1 }
|
49
|
+
currency_code = CurrencyCode.new(content, translations)
|
49
50
|
return if currency_code.invalid? ||
|
50
51
|
cached_currencies.has_key?(parsed_currency_string = currency_code.to_s)
|
51
52
|
|
@@ -105,4 +106,3 @@ module Forex
|
|
105
106
|
end
|
106
107
|
end
|
107
108
|
end
|
108
|
-
|
data/lib/forex/trader.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
1
3
|
module Forex
|
2
4
|
CannotRedefineTrader = Class.new(StandardError)
|
3
5
|
|
@@ -38,7 +40,7 @@ module Forex
|
|
38
40
|
|
39
41
|
# doc built from the endpoint
|
40
42
|
def doc
|
41
|
-
Nokogiri::HTML(
|
43
|
+
@doc ||= open(endpoint) { |f| Nokogiri::HTML(f.read) }
|
42
44
|
end
|
43
45
|
|
44
46
|
reset
|
@@ -2,29 +2,23 @@ Forex::Trader.define "JMMB" do |t|
|
|
2
2
|
t.base_currency = "JMD"
|
3
3
|
t.name = "Jamaica Money Market Brokers"
|
4
4
|
t.twitter_handle = "@JMMBGROUP"
|
5
|
-
t.endpoint =
|
5
|
+
t.endpoint = 'https://jm.jmmb.com/rates-fees'
|
6
6
|
|
7
7
|
t.rates_parser = ->(doc) do # doc is a nokogiri document
|
8
8
|
|
9
9
|
options = {
|
10
10
|
currency_code: 0,
|
11
11
|
buy_cash: 1,
|
12
|
-
buy_draft:
|
13
|
-
sell_cash:
|
14
|
-
sell_draft:
|
15
|
-
}
|
16
|
-
|
17
|
-
translations = {
|
18
|
-
'US$' => 'USD',
|
19
|
-
'TT$' => 'TTD',
|
12
|
+
buy_draft: 2,
|
13
|
+
sell_cash: 3,
|
14
|
+
sell_draft: 3
|
20
15
|
}
|
21
16
|
|
22
17
|
table =
|
23
|
-
doc.search("[text()*='FX
|
24
|
-
ancestors('
|
18
|
+
doc.search("[text()*='FX Rates']").first. # Section with rates
|
19
|
+
ancestors('div').first. # Root table for section
|
25
20
|
css("table").first # Rates table
|
26
21
|
|
27
|
-
Forex::TabularRates.new(table, options).parse_rates
|
22
|
+
Forex::TabularRates.new(table, options).parse_rates
|
28
23
|
end
|
29
24
|
end
|
30
|
-
|
@@ -1,8 +1,8 @@
|
|
1
1
|
Forex::Trader.define "JNBS" do |t|
|
2
2
|
t.base_currency = "JMD"
|
3
|
-
t.name =
|
3
|
+
t.name = 'JN Bank'
|
4
4
|
t.twitter_handle = "@JamaicaNational"
|
5
|
-
t.endpoint =
|
5
|
+
t.endpoint = 'https://www.jnbank.com/fx-rates/'
|
6
6
|
|
7
7
|
t.rates_parser = ->(doc) do # doc is a nokogiri document
|
8
8
|
|
@@ -12,9 +12,8 @@ Forex::Trader.define "JNBS" do |t|
|
|
12
12
|
buy_draft: 1,
|
13
13
|
}
|
14
14
|
|
15
|
-
|
15
|
+
tbody = doc.css('#fx-big-table tbody').first
|
16
16
|
|
17
|
-
Forex::TabularRates.new(
|
17
|
+
Forex::TabularRates.new(tbody, options).parse_rates
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
data/lib/forex/traders/jm/ncb.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
Forex::Trader.define "NCB" do |t|
|
2
2
|
t.base_currency = "JMD"
|
3
3
|
t.name = "National Commercial Bank"
|
4
|
-
t.endpoint = "
|
4
|
+
t.endpoint = "https://www.jncb.com/Support/Help-Resources/Foreign-Exchange-Services"
|
5
5
|
t.twitter_handle = "@ncbja"
|
6
6
|
|
7
7
|
t.rates_parser = ->(doc) do # doc is a nokogiri document
|
8
8
|
|
9
9
|
options = {
|
10
|
-
currency_code:
|
11
|
-
sell_cash:
|
12
|
-
buy_cash:
|
13
|
-
buy_draft:
|
10
|
+
currency_code: 0,
|
11
|
+
sell_cash: 1,
|
12
|
+
buy_cash: 3,
|
13
|
+
buy_draft: 2,
|
14
14
|
}
|
15
15
|
|
16
|
-
|
16
|
+
tbody = doc.css("tbody.FxRContainer").first
|
17
17
|
|
18
|
-
Forex::TabularRates.new(
|
18
|
+
Forex::TabularRates.new(tbody, options).parse_rates
|
19
19
|
end
|
20
20
|
end
|
data/lib/forex/version.rb
CHANGED
data/spec/rates/bns.yml
CHANGED
@@ -1,51 +1,51 @@
|
|
1
1
|
---
|
2
2
|
USD:
|
3
|
-
:buy_cash:
|
4
|
-
:buy_draft:
|
5
|
-
:sell_cash:
|
6
|
-
:sell_draft:
|
3
|
+
:buy_cash: 114.33
|
4
|
+
:buy_draft: 126.73
|
5
|
+
:sell_cash: 131.34
|
6
|
+
:sell_draft: 131.34
|
7
7
|
GBP:
|
8
|
-
:buy_cash:
|
9
|
-
:buy_draft:
|
10
|
-
:sell_cash:
|
11
|
-
:sell_draft:
|
8
|
+
:buy_cash: 167.87
|
9
|
+
:buy_draft: 170.88
|
10
|
+
:sell_cash: 175.9
|
11
|
+
:sell_draft: 175.9
|
12
12
|
CAD:
|
13
|
-
:buy_cash:
|
14
|
-
:buy_draft:
|
15
|
-
:sell_cash:
|
16
|
-
:sell_draft:
|
13
|
+
:buy_cash: 95.38
|
14
|
+
:buy_draft: 97.82
|
15
|
+
:sell_cash: 101.05
|
16
|
+
:sell_draft: 101.05
|
17
17
|
EUR:
|
18
|
-
:buy_cash:
|
19
|
-
:buy_draft:
|
20
|
-
:sell_cash:
|
21
|
-
:sell_draft:
|
18
|
+
:buy_cash: 145.91
|
19
|
+
:buy_draft: 149.2
|
20
|
+
:sell_cash: 155.43
|
21
|
+
:sell_draft: 155.43
|
22
22
|
BBD:
|
23
|
-
:buy_cash:
|
24
|
-
:buy_draft:
|
25
|
-
:sell_cash:
|
26
|
-
:sell_draft:
|
23
|
+
:buy_cash: 51.23
|
24
|
+
:buy_draft:
|
25
|
+
:sell_cash: 68.32
|
26
|
+
:sell_draft: 68.32
|
27
27
|
KYD:
|
28
|
-
:buy_cash:
|
29
|
-
:buy_draft:
|
30
|
-
:sell_cash:
|
31
|
-
:sell_draft:
|
28
|
+
:buy_cash: 137.69
|
29
|
+
:buy_draft: 143.43
|
30
|
+
:sell_cash: 155.9
|
31
|
+
:sell_draft: 155.9
|
32
32
|
XCD:
|
33
|
-
:buy_cash:
|
34
|
-
:buy_draft:
|
35
|
-
:sell_cash:
|
36
|
-
:sell_draft:
|
33
|
+
:buy_cash: 43.27
|
34
|
+
:buy_draft: 45.55
|
35
|
+
:sell_cash: 50.61
|
36
|
+
:sell_draft: 50.61
|
37
37
|
JPY:
|
38
|
-
:buy_cash:
|
39
|
-
:buy_draft:
|
40
|
-
:sell_cash: 1.
|
41
|
-
:sell_draft: 1.
|
38
|
+
:buy_cash: 1.0655
|
39
|
+
:buy_draft: 1.1216
|
40
|
+
:sell_cash: 1.206
|
41
|
+
:sell_draft: 1.206
|
42
42
|
CHF:
|
43
|
-
:buy_cash:
|
44
|
-
:buy_draft:
|
45
|
-
:sell_cash:
|
46
|
-
:sell_draft:
|
43
|
+
:buy_cash: 121.25
|
44
|
+
:buy_draft: 125.64
|
45
|
+
:sell_cash: 135.83
|
46
|
+
:sell_draft: 135.83
|
47
47
|
TTD:
|
48
|
-
:buy_cash:
|
49
|
-
:buy_draft:
|
50
|
-
:sell_cash:
|
51
|
-
:sell_draft:
|
48
|
+
:buy_cash:
|
49
|
+
:buy_draft: 18.58
|
50
|
+
:sell_cash: 22.08
|
51
|
+
:sell_draft: 22.08
|
data/spec/rates/cok.yml
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
---
|
2
2
|
USD:
|
3
|
-
:buy_cash:
|
4
|
-
:buy_draft:
|
5
|
-
:sell_cash:
|
6
|
-
:sell_draft:
|
3
|
+
:buy_cash: 122.1
|
4
|
+
:buy_draft: 119.5
|
5
|
+
:sell_cash: 128.9
|
6
|
+
:sell_draft: 133.5
|
7
7
|
CAD:
|
8
|
-
:buy_cash:
|
9
|
-
:buy_draft:
|
10
|
-
:sell_cash:
|
11
|
-
:sell_draft:
|
8
|
+
:buy_cash: 91.25
|
9
|
+
:buy_draft: 88.1
|
10
|
+
:sell_cash: 98.25
|
11
|
+
:sell_draft: 104.8
|
12
12
|
GBP:
|
13
|
-
:buy_cash:
|
14
|
-
:buy_draft:
|
15
|
-
:sell_cash:
|
16
|
-
:sell_draft:
|
13
|
+
:buy_cash: 160.85
|
14
|
+
:buy_draft: 157.1
|
15
|
+
:sell_cash: 169.85
|
16
|
+
:sell_draft: 175.1
|
17
17
|
KYD:
|
18
|
-
:buy_cash:
|
19
|
-
:buy_draft:
|
20
|
-
:sell_cash:
|
21
|
-
:sell_draft:
|
18
|
+
:buy_cash: 125.25
|
19
|
+
:buy_draft: 122.85
|
20
|
+
:sell_cash: 138.0
|
21
|
+
:sell_draft: 142.5
|
22
22
|
EUR:
|
23
|
-
:buy_cash:
|
24
|
-
:buy_draft:
|
25
|
-
:sell_cash:
|
26
|
-
:sell_draft:
|
23
|
+
:buy_cash: 138.5
|
24
|
+
:buy_draft: 133.5
|
25
|
+
:sell_cash: 148.85
|
26
|
+
:sell_draft: 152.5
|
data/spec/rates/fgb.yml
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
---
|
2
2
|
USD:
|
3
|
-
:buy_cash:
|
4
|
-
:buy_draft:
|
5
|
-
:sell_cash:
|
6
|
-
:sell_draft:
|
3
|
+
:buy_cash: 114.6
|
4
|
+
:buy_draft: 127.7
|
5
|
+
:sell_cash: 131.8
|
6
|
+
:sell_draft: 131.8
|
7
7
|
CAD:
|
8
|
-
:buy_cash:
|
9
|
-
:buy_draft:
|
10
|
-
:sell_cash:
|
11
|
-
:sell_draft:
|
8
|
+
:buy_cash: 90.7
|
9
|
+
:buy_draft: 94.7
|
10
|
+
:sell_cash: 101.5
|
11
|
+
:sell_draft: 101.5
|
12
12
|
GBP:
|
13
|
-
:buy_cash:
|
14
|
-
:buy_draft:
|
15
|
-
:sell_cash:
|
16
|
-
:sell_draft:
|
13
|
+
:buy_cash: 160.3
|
14
|
+
:buy_draft: 164.3
|
15
|
+
:sell_cash: 176.0
|
16
|
+
:sell_draft: 176.0
|
17
17
|
EUR:
|
18
|
-
:buy_cash:
|
19
|
-
:buy_draft:
|
20
|
-
:sell_cash:
|
21
|
-
:sell_draft:
|
18
|
+
:buy_cash: 140.2
|
19
|
+
:buy_draft: 144.2
|
20
|
+
:sell_cash: 155.5
|
21
|
+
:sell_draft: 155.5
|
data/spec/rates/fxtraders.yml
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
---
|
2
2
|
USD:
|
3
|
-
:buy_cash:
|
4
|
-
:buy_draft:
|
5
|
-
:sell_cash:
|
6
|
-
:sell_draft:
|
3
|
+
:buy_cash: 122.0
|
4
|
+
:buy_draft: 0.0
|
5
|
+
:sell_cash: 129.0
|
6
|
+
:sell_draft: 0.0
|
7
7
|
CAD:
|
8
|
-
:buy_cash:
|
9
|
-
:buy_draft:
|
10
|
-
:sell_cash:
|
11
|
-
:sell_draft:
|
8
|
+
:buy_cash: 92.95
|
9
|
+
:buy_draft: 0.0
|
10
|
+
:sell_cash: 98.65
|
11
|
+
:sell_draft: 0.0
|
12
12
|
GBP:
|
13
|
-
:buy_cash:
|
14
|
-
:buy_draft:
|
15
|
-
:sell_cash: 170.
|
16
|
-
:sell_draft:
|
13
|
+
:buy_cash: 162.7
|
14
|
+
:buy_draft: 0.0
|
15
|
+
:sell_cash: 170.3
|
16
|
+
:sell_draft: 0.0
|
17
17
|
KYD:
|
18
|
-
:buy_cash:
|
18
|
+
:buy_cash: 128.4
|
19
19
|
:buy_draft: 0.0
|
20
|
-
:sell_cash:
|
20
|
+
:sell_cash: 138.4
|
21
21
|
:sell_draft: 0.0
|
22
22
|
EUR:
|
23
|
-
:buy_cash:
|
23
|
+
:buy_cash: 142.95
|
24
24
|
:buy_draft: 0.0
|
25
|
-
:sell_cash:
|
25
|
+
:sell_cash: 149.45
|
26
26
|
:sell_draft: 0.0
|
data/spec/rates/jmmb.yml
CHANGED
@@ -1,26 +1,21 @@
|
|
1
1
|
---
|
2
2
|
USD:
|
3
|
-
:buy_cash:
|
4
|
-
:buy_draft:
|
5
|
-
:sell_cash:
|
6
|
-
:sell_draft:
|
7
|
-
TTD:
|
8
|
-
:buy_cash: 14.55
|
9
|
-
:buy_draft: 15.01
|
10
|
-
:sell_cash: 16.92
|
11
|
-
:sell_draft: 16.92
|
12
|
-
GBP:
|
13
|
-
:buy_cash: 167.74
|
14
|
-
:buy_draft: 168.74
|
15
|
-
:sell_cash: 174.53
|
16
|
-
:sell_draft: 174.53
|
3
|
+
:buy_cash: 122.5
|
4
|
+
:buy_draft: 127.7
|
5
|
+
:sell_cash: 131.3
|
6
|
+
:sell_draft: 131.3
|
17
7
|
EUR:
|
18
|
-
:buy_cash:
|
19
|
-
:buy_draft:
|
20
|
-
:sell_cash:
|
21
|
-
:sell_draft:
|
8
|
+
:buy_cash: 143.5
|
9
|
+
:buy_draft: 149.5
|
10
|
+
:sell_cash: 155.0
|
11
|
+
:sell_draft: 155.0
|
12
|
+
GBP:
|
13
|
+
:buy_cash: 164.7
|
14
|
+
:buy_draft: 170.7
|
15
|
+
:sell_cash: 175.1
|
16
|
+
:sell_draft: 175.1
|
22
17
|
CAD:
|
23
|
-
:buy_cash:
|
24
|
-
:buy_draft:
|
25
|
-
:sell_cash: 100.
|
26
|
-
:sell_draft: 100.
|
18
|
+
:buy_cash: 92.4
|
19
|
+
:buy_draft: 98.4
|
20
|
+
:sell_cash: 100.7
|
21
|
+
:sell_draft: 100.7
|
data/spec/rates/jnbs.yml
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
---
|
2
2
|
USD:
|
3
|
-
:buy_cash:
|
4
|
-
:buy_draft:
|
5
|
-
:sell_cash:
|
3
|
+
:buy_cash: 111.5
|
4
|
+
:buy_draft: 124.0
|
5
|
+
:sell_cash: 130.15
|
6
6
|
GBP:
|
7
|
-
:buy_cash:
|
8
|
-
:buy_draft:
|
9
|
-
:sell_cash: 173.
|
10
|
-
|
11
|
-
:buy_cash:
|
12
|
-
:buy_draft:
|
13
|
-
:sell_cash:
|
7
|
+
:buy_cash: 160.0
|
8
|
+
:buy_draft: 163.57
|
9
|
+
:sell_cash: 173.89
|
10
|
+
CDN:
|
11
|
+
:buy_cash: 90.0
|
12
|
+
:buy_draft: 94.1
|
13
|
+
:sell_cash: 100.07
|
14
14
|
KYD:
|
15
|
-
:buy_cash:
|
15
|
+
:buy_cash: 112.7
|
16
16
|
:buy_draft:
|
17
|
-
:sell_cash:
|
17
|
+
:sell_cash: 138.05
|
18
18
|
EUR:
|
19
|
-
:buy_cash:
|
20
|
-
:buy_draft:
|
21
|
-
:sell_cash:
|
19
|
+
:buy_cash: 137.72
|
20
|
+
:buy_draft: 139.72
|
21
|
+
:sell_cash: 153.81
|