Inlife/nexrender

View on GitHub
packages/nexrender-provider-s3/src/uri.js

Summary

Maintainability
A
1 hr
Test Coverage
const uriS3 = require('amazon-s3-uri')
const url = require('url')

function uriDigitalOcean(src) {
  const parsed = url.parse(src)
  const result = parsed.host.match(/(([^.]+)\.)?([^.]+)\.digitaloceanspaces\.com/)

  if (!result) {
    return {
        uri: parsed,
        region: null,
        bucket: null,
        key: null,
        isPathStyle: false
    }
  }

  const region = result[3]
  let bucket = result[2]
  let key
  let isPathStyle = false

  const pieces = parsed.pathname.split('/')
  if (!bucket) {
    bucket = pieces.slice(1, 2).join('/')
    key = pieces.slice(2, pieces.length).join('/')
    isPathStyle = true
  } else {
    key = pieces.slice(1, pieces.length).join('/')
    isPathStyle = false
  }

  return {
      uri: parsed,
      region,
      bucket,
      key,
      isPathStyle,
  }
}

function uri(src) {
    if (src.indexOf('digitaloceanspaces.com') !== -1) {
      return uriDigitalOcean(src)
    }
    return uriS3(src)
}

module.exports = uri