BnmAPI 0.1.1 → 0.2.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/.travis.yml +11 -1
- data/Gemfile.lock +16 -1
- data/README.md +79 -2
- data/bnmapi.gemspec +5 -3
- data/lib/bnmapi.rb +3 -0
- data/lib/bnmapi/daily_fx_turnover.rb +54 -0
- data/lib/bnmapi/data/fx_turnover.rb +16 -0
- data/lib/bnmapi/error/no_fx_turnover.rb +10 -0
- data/lib/bnmapi/version.rb +1 -1
- metadata +33 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1db572c75b9ac8f3c08255a25fe154b2d344851c12b57526ada5d0677de94c71
|
4
|
+
data.tar.gz: ae6ef3c73bd15f81899785ce867f7311e3daa96bd7d24df4453c9f1513d7a0f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82b24c23630970776788e7a5856ba1d96e0b5f4bbc6dcbe33bf0d5a191a65bcbc89a7342442217b88ee79caa939dfab265f964aa25ecae2a372f1b51da24236c
|
7
|
+
data.tar.gz: 1886ac4524a0f5ea6d725a4ca263dcfffdba7cce8617aec69b094badec05309751de74bbdcebcc9245fbbea8c7057671cb45e1d7413d7e276fb25259dd89f10a
|
data/.travis.yml
CHANGED
@@ -1,7 +1,17 @@
|
|
1
|
-
|
1
|
+
env:
|
2
|
+
global:
|
3
|
+
- CC_TEST_REPORTER_ID=eb717534daf85909a03c990170e4dbd849d1eef16cc9cc804cfa912b284df872
|
2
4
|
sudo: false
|
3
5
|
language: ruby
|
4
6
|
cache: bundler
|
5
7
|
rvm:
|
6
8
|
- 2.6.1
|
7
9
|
before_install: gem install bundler -v 1.17.2
|
10
|
+
before_script:
|
11
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
12
|
+
- chmod +x ./cc-test-reporter
|
13
|
+
- ./cc-test-reporter before-build
|
14
|
+
script:
|
15
|
+
- bundle exec rspec
|
16
|
+
after_script:
|
17
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/Gemfile.lock
CHANGED
@@ -1,17 +1,21 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
BnmAPI (0.
|
4
|
+
BnmAPI (0.2.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
addressable (2.6.0)
|
10
10
|
public_suffix (>= 2.0.2, < 4.0)
|
11
|
+
ansi (1.5.0)
|
11
12
|
crack (0.4.3)
|
12
13
|
safe_yaml (~> 1.0.0)
|
13
14
|
diff-lcs (1.3)
|
15
|
+
docile (1.3.1)
|
14
16
|
hashdiff (0.3.8)
|
17
|
+
hirb (0.7.3)
|
18
|
+
json (2.2.0)
|
15
19
|
public_suffix (3.0.3)
|
16
20
|
rake (10.5.0)
|
17
21
|
rspec (3.8.0)
|
@@ -28,6 +32,15 @@ GEM
|
|
28
32
|
rspec-support (~> 3.8.0)
|
29
33
|
rspec-support (3.8.0)
|
30
34
|
safe_yaml (1.0.5)
|
35
|
+
simplecov (0.16.1)
|
36
|
+
docile (~> 1.1)
|
37
|
+
json (>= 1.8, < 3)
|
38
|
+
simplecov-html (~> 0.10.0)
|
39
|
+
simplecov-console (0.4.2)
|
40
|
+
ansi
|
41
|
+
hirb
|
42
|
+
simplecov
|
43
|
+
simplecov-html (0.10.2)
|
31
44
|
vcr (4.0.0)
|
32
45
|
webmock (3.5.1)
|
33
46
|
addressable (>= 2.3.6)
|
@@ -42,6 +55,8 @@ DEPENDENCIES
|
|
42
55
|
bundler (~> 1.17)
|
43
56
|
rake (~> 10.0)
|
44
57
|
rspec (~> 3.0)
|
58
|
+
simplecov
|
59
|
+
simplecov-console
|
45
60
|
vcr
|
46
61
|
webmock
|
47
62
|
|
data/README.md
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
# Bnmapi
|
2
2
|
|
3
|
+
[](https://codeclimate.com/github/jibone/bnmapi/maintainability)
|
4
|
+
[](https://codeclimate.com/github/jibone/bnmapi/test_coverage)
|
6
|
+
|
3
7
|
Ruby wrapper for Bank Negara Malaysia Open API. Details and API disclaimer can
|
4
8
|
be found here [BNM Open API](https://api.bnm.gov.my/portal)
|
5
9
|
|
6
|
-
_Note:_ This gem is still in early
|
10
|
+
_Note:_ This gem is still in early development stages and not ready for use.
|
7
11
|
|
8
12
|
## Installation
|
9
13
|
|
@@ -68,7 +72,7 @@ details.
|
|
68
72
|
collection = BnmAPI::BaseRate.latest
|
69
73
|
|
70
74
|
collection.size
|
71
|
-
# 35 (number
|
75
|
+
# 35 (number of banks that the response return)
|
72
76
|
|
73
77
|
puts collection[0].bank_code
|
74
78
|
# BKKBMYKL
|
@@ -124,14 +128,87 @@ puts bank.last_updated.class
|
|
124
128
|
|
125
129
|
puts bank.last_updated.iso8601
|
126
130
|
# 2019-01-18T19:25:02+00:00
|
131
|
+
# it returns and DateTime object
|
127
132
|
|
128
133
|
puts bank.effective_date.class
|
129
134
|
# Date
|
130
135
|
|
131
136
|
puts bank.effective_date.iso8601
|
132
137
|
# 2019-04-05
|
138
|
+
# it returns and Date object
|
139
|
+
```
|
140
|
+
|
141
|
+
### Daily FX Turnover
|
142
|
+
|
143
|
+
Daily foreign exchange turnover for all currencies including interbank and
|
144
|
+
customer deals
|
145
|
+
|
146
|
+
#### (latest)
|
147
|
+
https://api.bnm.gov.my/portal#operation/DFXTLatest
|
148
|
+
|
149
|
+
Get the latest FX turnover.
|
150
|
+
|
151
|
+
```ruby
|
152
|
+
fx_turn_over = BnmAPI::DailyFXTurnover.latest
|
153
|
+
|
154
|
+
puts fx_turn_over.date.iso8601
|
155
|
+
# 2019-04-05
|
156
|
+
# it returns and Date object
|
157
|
+
|
158
|
+
puts fx_turn_over.total_sum
|
159
|
+
# 11.95
|
160
|
+
|
161
|
+
puts fx_turn_over.last_updated
|
162
|
+
# 2019-01-18T19:25:02+00:00
|
163
|
+
# it returns and DateTime object
|
164
|
+
```
|
165
|
+
|
166
|
+
#### (by date)
|
167
|
+
https://api.bnm.gov.my/portal#operation/DFXTDate
|
168
|
+
|
169
|
+
Get daily FX turnover for the date.
|
170
|
+
|
171
|
+
```ruby
|
172
|
+
# by an initialize Date object
|
173
|
+
date = Date.parse('10-4-2019')
|
174
|
+
fx_turn_over = BnmAPI::DailyFXTurnover.by_date(date)
|
175
|
+
|
176
|
+
# from a string that can be parse to a date
|
177
|
+
fx_turn_over = BnmAPI::DailyFXTurnover.by_date('10-4-2019')
|
178
|
+
|
179
|
+
puts fx_turn_over.date.iso8601
|
180
|
+
# 2019-04-05
|
181
|
+
# it returns and Date object
|
182
|
+
|
183
|
+
puts fx_turn_over.total_sum
|
184
|
+
# 11.95
|
185
|
+
|
186
|
+
puts fx_turn_over.last_updated
|
187
|
+
# 2019-01-18T19:25:02+00:00
|
188
|
+
# it returns and DateTime object
|
189
|
+
```
|
190
|
+
|
191
|
+
#### (by year and month)
|
192
|
+
https://api.bnm.gov.my/portal#operation/DFXTMonth
|
193
|
+
|
194
|
+
Get the list of daily FX turnover for the month
|
195
|
+
|
196
|
+
```ruby
|
197
|
+
fx_collection = BnmAPI::DailyFXTurnover.by_month(year: 2019, month: 4)
|
198
|
+
|
199
|
+
puts fx_collection[0].date.iso8601
|
200
|
+
# 2019-04-05
|
201
|
+
# it returns and Date object
|
202
|
+
|
203
|
+
puts fx_collection[0].total_sum
|
204
|
+
# 11.95
|
205
|
+
|
206
|
+
puts fx_collection[0].last_updated
|
207
|
+
# 2019-01-18T19:25:02+00:00
|
208
|
+
# it returns and DateTime object
|
133
209
|
```
|
134
210
|
|
211
|
+
|
135
212
|
## Development
|
136
213
|
|
137
214
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
data/bnmapi.gemspec
CHANGED
@@ -24,9 +24,11 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
spec.require_paths = ["lib"]
|
26
26
|
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
27
|
+
spec.add_development_dependency 'bundler', "~> 1.17"
|
28
|
+
spec.add_development_dependency 'rake', "~> 10.0"
|
29
|
+
spec.add_development_dependency 'rspec', "~> 3.0"
|
30
30
|
spec.add_development_dependency 'webmock'
|
31
31
|
spec.add_development_dependency 'vcr'
|
32
|
+
spec.add_development_dependency 'simplecov'
|
33
|
+
spec.add_development_dependency 'simplecov-console'
|
32
34
|
end
|
data/lib/bnmapi.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'bnmapi/version'
|
2
2
|
require 'bnmapi/http/client'
|
3
3
|
require 'bnmapi/data/bank_base_rate'
|
4
|
+
require 'bnmapi/data/fx_turnover'
|
4
5
|
require 'bnmapi/error/invalid_bank_code'
|
6
|
+
require 'bnmapi/error/no_fx_turnover'
|
5
7
|
require 'bnmapi/welcome'
|
6
8
|
require 'bnmapi/base_rate'
|
9
|
+
require 'bnmapi/daily_fx_turnover'
|
7
10
|
|
8
11
|
module BnmAPI
|
9
12
|
# Your code goes here...
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module BnmAPI
|
2
|
+
class DailyFXTurnover
|
3
|
+
ENDPOINT = '/fx-turn-over'
|
4
|
+
|
5
|
+
def self.latest
|
6
|
+
res = fetch_data(ENDPOINT)
|
7
|
+
present_data(res['data'], res['meta']['last_updated'])
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.by_date(date)
|
11
|
+
date_string = if date.is_a?(Date)
|
12
|
+
"#{date.year}-#{date.month}-#{date.day}"
|
13
|
+
else
|
14
|
+
d = Date.parse(date)
|
15
|
+
"#{d.year}-#{d.month}-#{d.day}"
|
16
|
+
end
|
17
|
+
|
18
|
+
res = fetch_data(ENDPOINT + '/date/' + date_string)
|
19
|
+
present_data(res['data'], res['meta']['last_updated'])
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.by_month(year:, month:)
|
23
|
+
res = fetch_data("#{ENDPOINT}/year/#{year}/month/#{month}")
|
24
|
+
|
25
|
+
collection = []
|
26
|
+
res['data'].each do |data|
|
27
|
+
collection << present_data(data, res['meta']['last_updated'])
|
28
|
+
end
|
29
|
+
|
30
|
+
collection
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def self.fetch_data(endpoint)
|
36
|
+
http = BnmAPI::HTTP::Client.new(endpoint: endpoint)
|
37
|
+
res = http.request
|
38
|
+
|
39
|
+
if res.code == '404'
|
40
|
+
raise BnmAPI::Error::NoFXTurnover.new(endpoint: endpoint)
|
41
|
+
end
|
42
|
+
|
43
|
+
JSON.parse(res.read_body)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.present_data(data, last_updated)
|
47
|
+
BnmAPI::Data::FXTurnover.new(
|
48
|
+
data['total_sum'],
|
49
|
+
data['date'],
|
50
|
+
last_updated
|
51
|
+
)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/bnmapi/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: BnmAPI
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- J Shamsul Bahri (jibone))
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,6 +80,34 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov-console
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
83
111
|
description:
|
84
112
|
email:
|
85
113
|
- jibone@gmail.com
|
@@ -103,8 +131,11 @@ files:
|
|
103
131
|
- bnmapi.gemspec
|
104
132
|
- lib/bnmapi.rb
|
105
133
|
- lib/bnmapi/base_rate.rb
|
134
|
+
- lib/bnmapi/daily_fx_turnover.rb
|
106
135
|
- lib/bnmapi/data/bank_base_rate.rb
|
136
|
+
- lib/bnmapi/data/fx_turnover.rb
|
107
137
|
- lib/bnmapi/error/invalid_bank_code.rb
|
138
|
+
- lib/bnmapi/error/no_fx_turnover.rb
|
108
139
|
- lib/bnmapi/http/client.rb
|
109
140
|
- lib/bnmapi/version.rb
|
110
141
|
- lib/bnmapi/welcome.rb
|