const http = require('http')

const port = 8889

const database = {}

const requestHandler = (request, response) => {
  response.setHeader('Content-Type', 'application/json')
  if (request.method === 'POST') {
    let body = ''
    request.on('data', (chunk) => {
      body += chunk.toString() // convert Buffer to string
    })
    request.on('end', () => {
      const { key, data } = JSON.parse(body)

      database[key] = data
      response.setHeader('Access-Control-Allow-Headers', '*')
      response.end('ok')
    })
  } else if (request.method === 'GET') {
    const key = new URL(request.url, 'https://example.org/').searchParams.get(
      'key',
    )
    response.setHeader('Access-Control-Allow-Headers', '*')
    response.end(JSON.stringify(database[key] || ''))
  } else {
    response.end('unknown request')
  }
}

const server = http.createServer(requestHandler)

server.listen(port, (err) => {
  if (err) {
    console.log('mock 3box server error: ', err)
  }
})
