mirror of https://github.com/pelias/api.git
Alex Loyko
8 years ago
25 changed files with 277 additions and 49 deletions
@ -0,0 +1,12 @@
|
||||
version: 2 |
||||
jobs: |
||||
build: |
||||
working_directory: /app |
||||
docker: |
||||
- image: docker:17.05.0-ce-git |
||||
steps: |
||||
- checkout |
||||
- setup_remote_docker |
||||
- run: |
||||
name: Build and push image to Docker Hub |
||||
command: sh .circleci/docker.sh |
@ -0,0 +1,30 @@
|
||||
#!/bin/bash |
||||
set -u |
||||
|
||||
# collect params from ENV vars |
||||
DATE=`date +%Y-%m-%d` |
||||
DOCKER_REPOSITORY="pelias" |
||||
DOCKER_PROJECT="${DOCKER_REPOSITORY}/${CIRCLE_PROJECT_REPONAME}" |
||||
|
||||
# the name of the image that represents the "branch", that is an image that will be updated over time with the git branch |
||||
# the production branch is changed to "latest", otherwise the git branch becomes the name of the version |
||||
if [[ "${CIRCLE_BRANCH}" == "production" ]]; then |
||||
DOCKER_BRANCH_IMAGE_VERSION="latest" |
||||
else |
||||
DOCKER_BRANCH_IMAGE_VERSION="${CIRCLE_BRANCH}" |
||||
fi |
||||
DOCKER_BRANCH_IMAGE_NAME="${DOCKER_PROJECT}:${DOCKER_BRANCH_IMAGE_VERSION}" |
||||
|
||||
# the name of the image that represents the "tag", that is an image that is named with the date and git commit and will never be changed |
||||
DOCKER_TAG_IMAGE_VERSION="${CIRCLE_BRANCH}-${DATE}-${CIRCLE_SHA1}" |
||||
DOCKER_TAG_IMAGE_NAME="${DOCKER_PROJECT}:${DOCKER_TAG_IMAGE_VERSION}" |
||||
|
||||
# build image and login to docker hub |
||||
docker build -t $DOCKER_PROJECT . |
||||
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" |
||||
|
||||
# copy the image to each of the two tags, and push |
||||
docker tag $DOCKER_PROJECT $DOCKER_BRANCH_IMAGE_NAME |
||||
docker tag $DOCKER_PROJECT $DOCKER_TAG_IMAGE_NAME |
||||
docker push $DOCKER_BRANCH_IMAGE_NAME |
||||
docker push $DOCKER_TAG_IMAGE_NAME |
@ -0,0 +1,51 @@
|
||||
# Logs |
||||
logs |
||||
*.log |
||||
npm-debug.log* |
||||
yarn-debug.log* |
||||
yarn-error.log* |
||||
|
||||
# Runtime data |
||||
pids |
||||
*.pid |
||||
*.seed |
||||
*.pid.lock |
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover |
||||
lib-cov |
||||
|
||||
# Coverage directory used by tools like istanbul |
||||
coverage |
||||
|
||||
# nyc test coverage |
||||
.nyc_output |
||||
|
||||
# node-waf configuration |
||||
.lock-wscript |
||||
|
||||
# Compiled binary addons (http://nodejs.org/api/addons.html) |
||||
build/Release |
||||
|
||||
# Dependency directories |
||||
node_modules/ |
||||
|
||||
# Typescript v1 declaration files |
||||
typings/ |
||||
|
||||
# Optional npm cache directory |
||||
.npm |
||||
|
||||
# Optional eslint cache |
||||
.eslintcache |
||||
|
||||
# Optional REPL history |
||||
.node_repl_history |
||||
|
||||
# Output of 'npm pack' |
||||
*.tgz |
||||
|
||||
# Yarn Integrity file |
||||
.yarn-integrity |
||||
|
||||
# Git |
||||
.git |
@ -1,18 +0,0 @@
|
||||
{ |
||||
"esclient": { |
||||
"hosts": [ |
||||
{ |
||||
"env": "production", |
||||
"protocol": "http", |
||||
"host": "pelias-data-container", |
||||
"port": 9200 |
||||
}, |
||||
{ |
||||
"env": "production", |
||||
"protocol": "http", |
||||
"host": "pelias-data-container", |
||||
"port": 9300 |
||||
} |
||||
] |
||||
} |
||||
} |
@ -0,0 +1,12 @@
|
||||
// set up routes that are outside any particular API version
|
||||
function addRoutes(app) { |
||||
function redirectToV1(req, res, next) { |
||||
res.redirect(301, '/v1'); |
||||
} |
||||
|
||||
// default root URL traffic to V1 root
|
||||
// which has a link to the readme and other helpful info
|
||||
app.get('/', redirectToV1); |
||||
} |
||||
|
||||
module.exports.addRoutes = addRoutes; |
@ -0,0 +1,15 @@
|
||||
// this sanitizer exists solely to allow `lang` as a request parameter
|
||||
function _sanitize( raw, clean ){ |
||||
// error & warning messages
|
||||
return { errors: [], warnings: [] }; |
||||
} |
||||
|
||||
function _expected(){ |
||||
return [{ 'name': 'lang' }]; |
||||
} |
||||
|
||||
// export function
|
||||
module.exports = () => ({ |
||||
sanitize: _sanitize, |
||||
expected: _expected |
||||
}); |
@ -0,0 +1,35 @@
|
||||
const sanitizer = require('../../../sanitizer/_request_language')(); |
||||
|
||||
module.exports.tests = {}; |
||||
|
||||
module.exports.tests.do_nothing = (test, common) => { |
||||
test('sanitize should return empty warnings/erros', t => { |
||||
const messages = sanitizer.sanitize(); |
||||
|
||||
t.deepEquals(messages.errors, [], 'no errors'); |
||||
t.deepEquals(messages.warnings, [], 'no warnings'); |
||||
t.end(); |
||||
|
||||
}); |
||||
|
||||
}; |
||||
|
||||
module.exports.tests.expected = (test, common) => { |
||||
test('expected should contain only \'lang\'', t => { |
||||
const expected = sanitizer.expected(); |
||||
|
||||
t.deepEquals(expected, [{'name': 'lang'}]); |
||||
t.end(); |
||||
|
||||
}); |
||||
}; |
||||
|
||||
module.exports.all = (tape, common) => { |
||||
function test(name, testFunction) { |
||||
return tape(`SANITIZE _request_language: ${name}`, testFunction); |
||||
} |
||||
|
||||
for( const testCase in module.exports.tests ){ |
||||
module.exports.tests[testCase](test, common); |
||||
} |
||||
}; |
Loading…
Reference in new issue