Skip to content

Commit 6e2ff13

Browse files
Adding diving controller (#54)
* Adding diving controller
1 parent 7b239e6 commit 6e2ff13

File tree

4 files changed

+68
-7
lines changed

4 files changed

+68
-7
lines changed

.github/workflows/docker-dev.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ jobs:
1313
- name: Checkout code
1414
uses: actions/checkout@v3
1515

16+
- name: Extract branch name
17+
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '-')" >> $GITHUB_ENV
18+
1619
- name: Login to DockerHub
1720
uses: docker/login-action@v3
1821
with:
@@ -24,4 +27,6 @@ jobs:
2427
with:
2528
context: .
2629
push: true
27-
tags: themranderson/conversionapi:latest
30+
tags: |
31+
themranderson/conversionapi:latest
32+
themranderson/conversionapi:${{ env.BRANCH_NAME }}

src/app.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ app.use(limiter);
2929
require('./controllers/v2/area')(app);
3030
require('./controllers/v2/capacity')(app);
3131
require('./controllers/v2/distance')(app);
32+
require('./controllers/v2/diving')(app);
3233
require('./controllers/v2/electricity')(app);
3334
require('./controllers/v2/gearing')(app);
3435
require('./controllers/v2/hydraulic')(app);

src/controllers/v2/diving.js

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,99 @@
1+
function absolutePressureAtDepthImperial(feetSeaWater) {
2+
return ((feetSeaWater / 33) + 1);
3+
}
4+
5+
function absolutePressureAtDepthMetric(metersSeaWater) {
6+
return ((metersSeaWater / 10) + 1);
7+
}
8+
19
module.exports = (app) => {
210
app.get('/api/v2/Diving/AbsolutePressureAtDepth/Imperial/:feetSeaWater', (req, res) => {
11+
// #swagger.tags = ['Diving']
312
const { feetSeaWater } = req.params;
413
res.json({
5-
result: (feetSeaWater + 33) / 33
14+
result: absolutePressureAtDepthImperial(feetSeaWater).toFixed(2)
615
})
716
})
817

918
app.get('/api/v2/Diving/AbsolutePressureAtDepth/Metric/:metersSeaWater', (req, res) => {
19+
// #swagger.tags = ['Diving']
1020
const { metersSeaWater } = req.params;
1121
res.json({
12-
result: (metersSeaWater + 10) / 10
22+
result: absolutePressureAtDepthMetric(metersSeaWater).toFixed(2)
1323
})
1424
})
1525

1626
app.get('/api/v2/Diving/PartialPressureOfO2AtDepth/Imperial/:feetSeaWater/:fO2', (req,res) => {
27+
// #swagger.tags = ['Diving']
1728
const { feetSeaWater } = req.params;
1829
const { fO2 } = req.params;
1930
res.json({
20-
result: ((feetSeaWater / 33) + 1) * fO2
31+
result: (absolutePressureAtDepthImperial(feetSeaWater) * fO2).toFixed(2)
32+
})
33+
})
34+
35+
app.get('/api/v2/Diving/PartialPressureOfO2AtDepth/Metric/:metersSeaWater/:fO2', (req, res) => {
36+
// #swagger.tags = ['Diving']
37+
const { metersSeaWater } = req.params;
38+
const { fO2 } = req.params;
39+
res.json({
40+
result: (absolutePressureAtDepthMetric(metersSeaWater) * fO2).toFixed(2)
2141
})
2242
})
2343

2444
app.get('/api/v2/Diving/MaximumOperatingDepth/Imperial/:ppO2/:fO2', (req, res) => {
45+
// #swagger.tags = ['Diving']
46+
const { ppO2 } = req.params;
47+
const { fO2 } = req.params;
48+
res.json({
49+
result: (((ppO2 / fO2) - 1) * 33).toFixed(2)
50+
})
51+
})
52+
53+
app.get('/api/v2/Diving/MaximumOperatingDepth/Metric/:ppO2/:fO2', (req, res) => {
54+
// #swagger.tags = ['Diving']
2555
const { ppO2 } = req.params;
2656
const { fO2 } = req.params;
2757
res.json({
28-
result: ((ppO2 / fO2) - 1) * 33
58+
result: (((ppO2 / fO2) - 1) * 10).toFixed(2)
2959
})
3060
})
3161

3262
app.get('/api/v2/Diving/BestFO2Mix/Imperial/:feetSeaWater/:ppO2', (req, res) => {
63+
// #swagger.tags = ['Diving']
3364
const { feetSeaWater } = req.params;
3465
const { ppO2 } = req.params;
3566
res.json({
36-
result: (ppO2 / ((feetSeaWater / 33) + 1))
67+
result: (ppO2 / (absolutePressureAtDepthImperial(feetSeaWater))).toFixed(2)
68+
})
69+
})
70+
71+
app.get('/api/v2/Diving/BestFO2Mix/Metric/:metersSeaWater/:ppO2', (req, res) => {
72+
// #swagger.tags = ['Diving']
73+
const { metersSeaWater } = req.params;
74+
const { ppO2 } = req.params;
75+
res.json({
76+
result: (ppO2 / (absolutePressureAtDepthMetric(metersSeaWater))).toFixed(2)
3777
})
3878
})
3979

4080
app.get('/api/v2/Diving/EquivalentAirDepth/Imperial/:feetSeaWater/:n2/:fn2', (req, res) => {
81+
// #swagger.tags = ['Diving']
4182
const { feetSeaWater } = req.params;
4283
const { n2 } = req.params;
4384
const { fn2 } = req.params;
4485
res.json({
45-
result: (((feetSeaWater + 33) * n2)/ fn2) - 33
86+
result: ((((feetSeaWater + 33) * n2) / fn2) - 33).toFixed(2)
87+
})
88+
})
89+
90+
app.get('/api/v2/Diving/EquivalentAirDepth/Metric/:metersSeaWater/:n2/:fn2', (req, res) => {
91+
// #swagger.tags = ['Diving']
92+
const { metersSeaWater } = req.params;
93+
const { n2 } = req.params;
94+
const { fn2 } = req.params;
95+
res.json({
96+
result: ((((metersSeaWater + 10) * n2) / fn2) - 10).toFixed(2)
4697
})
4798
})
4899
};

src/swagger.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ const doc = {
3333
name: 'Distance',
3434
description: 'Convert distance'
3535
},
36+
{
37+
name: 'Diving',
38+
description: 'Perform diving calculations'
39+
},
3640
{
3741
name: 'Electricity',
3842
description: 'Perform electricity calculations'

0 commit comments

Comments
 (0)