mirror of https://github.com/harness/drone.git
62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
/*
|
|
* Copyright 2023 Harness, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
const express = require('express')
|
|
const fs = require('fs')
|
|
const app = express()
|
|
const path = require('path')
|
|
const PORT = 8080
|
|
|
|
function checkFileExistsSync(filepath) {
|
|
let flag = true
|
|
try {
|
|
fs.accessSync(filepath, fs.constants.F_OK)
|
|
} catch (e) {
|
|
flag = false
|
|
}
|
|
return flag
|
|
}
|
|
|
|
function getFile(req) {
|
|
const url = req.url.split('?')[0].replace(/^\/gateway/, '')
|
|
|
|
return path.resolve(__dirname, `fixtures${url}${req.method === 'POST' ? '.post' : ''}.json`)
|
|
}
|
|
|
|
app.all('*', (req, res) => {
|
|
if (req.get('Content-Type') === 'text/plain') {
|
|
res.setHeader('Content-Type', 'text/plain')
|
|
} else {
|
|
res.setHeader('Content-Type', 'application/json')
|
|
}
|
|
const file = getFile(req)
|
|
if (['POST', 'GET', 'PUT'].indexOf(req.method) > -1 && checkFileExistsSync(file)) {
|
|
res.end(fs.readFileSync(file))
|
|
} else {
|
|
res.end(
|
|
JSON.stringify({
|
|
correlationId: '',
|
|
data: {},
|
|
status: 'SUCCESS'
|
|
})
|
|
)
|
|
}
|
|
})
|
|
|
|
app.listen(PORT, () => {
|
|
console.log(`⚡️[server]: Server is running at http://localhost:${PORT}`)
|
|
})
|