Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Diplomatic fix #20

Merged
merged 3 commits into from
Feb 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions app.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,5 +87,11 @@ def process_resource():
def return_cache(hashwithextension):
return send_from_directory("cache", hashwithextension)

@app.route('/api/v1/docs/', defaults={'path': None})
@app.route("/api/v1/docs/<path:path>", methods=['GET'])
def send_docs(path):
path = path if path else "index.html"
return send_from_directory('static/docs', path)

if __name__ == "__main__":
app.run(debug=True, port=5000)
4 changes: 4 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,16 @@ services:
- 5000:5000
volumes:
- ../lbp-print-cache:/usr/src/app/cache
environment:
- REDIS_DOCKER=True
queue-worker:
build: .
command: python3 worker.py
depends_on:
- redis
volumes:
- ../lbp-print-cache:/usr/src/app/cache
environment:
- REDIS_DOCKER=True
redis:
image: "redis:alpine"
6 changes: 4 additions & 2 deletions processor.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import logging

import os
import urllib

from redis import Redis
Expand All @@ -13,7 +13,9 @@

logger = logging.getLogger()
lbp_config.cache_dir = "cache"
redis_connection = Redis(host="redis")
redis_endpoint = "redis" if os.environ.get("REDIS_DOCKER") == "True" else "localhost"
logger.warning(f"Logging redis endpoint: {redis_endpoint}")
redis_connection = Redis(host=redis_endpoint)
q = Queue(connection=redis_connection)


Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ gunicorn==19.9.0
isodate==0.5.4
itsdangerous==1.1.0
Jinja2==2.10.1
-e git+https://github.com/stenskjaer/lbp_print.git@master#egg=lbp_print
-e git+https://github.com/lombardpress/lbp_print.git@upstream#egg=lbp_print
-e git+https://github.com/lombardpress/lbppy.git@f272e44429fcbd3f19384471c9cfb3903100fb30#egg=lbppy
lxml==4.4.1
MarkupSafe==1.1.1
Expand Down
Binary file added static/docs/favicon-16x16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/docs/favicon-32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
95 changes: 95 additions & 0 deletions static/docs/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" >
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
<style>
html
{
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after
{
box-sizing: inherit;
}

body {
margin:0;
background: #fafafa;
}
</style>
</head>

<body>

<svg xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink" style="position:absolute;width:0;height:0">
<defs>
<symbol viewBox="0 0 20 20" id="unlocked">
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
</symbol>

<symbol viewBox="0 0 20 20" id="locked">
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"/>
</symbol>

<symbol viewBox="0 0 20 20" id="close">
<path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"/>
</symbol>

<symbol viewBox="0 0 20 20" id="large-arrow">
<path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"/>
</symbol>

<symbol viewBox="0 0 20 20" id="large-arrow-down">
<path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"/>
</symbol>


<symbol viewBox="0 0 24 24" id="jump-to">
<path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"/>
</symbol>

<symbol viewBox="0 0 24 24" id="expand">
<path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
</symbol>

</defs>
</svg>

<div id="swagger-ui"></div>

<script src="./swagger-ui-bundle.js"> </script>
<script src="./swagger-ui-standalone-preset.js"> </script>
<script>
window.onload = function() {

// Build a system
const ui = SwaggerUIBundle({
url: "swagger.json",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
})

window.ui = ui
}
</script>
</body>

</html>
93 changes: 93 additions & 0 deletions static/docs/main.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions static/docs/main.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

57 changes: 57 additions & 0 deletions static/docs/oauth2-redirect.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<!doctype html>
<html lang="en-US">
<body onload="run()">
</body>
</html>
<script>
'use strict';
function run () {
var oauth2 = window.opener.swaggerUIRedirectOauth2;
var sentState = oauth2.state;
var redirectUrl = oauth2.redirectUrl;
var isValid, qp, arr;

if (/code|token|error/.test(window.location.hash)) {
qp = window.location.hash.substring(1);
} else {
qp = location.search.substring(1);
}

arr = qp.split("&")
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';})
qp = qp ? JSON.parse('{' + arr.join() + '}',
function (key, value) {
return key === "" ? value : decodeURIComponent(value)
}
) : {}

isValid = qp.state === sentState

if (oauth2.auth.schema.get("flow") === "accessCode" && !oauth2.auth.code) {
if (!isValid) {
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "warning",
message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"
});
}

if (qp.code) {
delete oauth2.state;
oauth2.auth.code = qp.code;
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
} else {
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "error",
message: "Authorization failed: no accessCode received from the server"
});
}
} else {
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
}
window.close();
}
</script>
87 changes: 87 additions & 0 deletions static/docs/swagger-ui-bundle.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions static/docs/swagger-ui-bundle.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions static/docs/swagger-ui-standalone-preset.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions static/docs/swagger-ui-standalone-preset.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions static/docs/swagger-ui.css

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions static/docs/swagger-ui.css.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions static/docs/swagger-ui.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions static/docs/swagger-ui.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

102 changes: 102 additions & 0 deletions static/docs/swagger.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
{
"swagger": "2.0",
"info": {
"description": "SCTA PRINT API",
"version": "1.0.0",
"title": "SCTA PRINT API",
"termsOfService": "https://swagger.io/terms/",
"contact": {
"email": "[email protected]"
},
"license": {
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
}
},
"host": "print.lombardpress.org",
"basePath": "/api/v1",
"schemes": [
"http",
"https"
],
"paths": {
"/resource": {
"get": {
"summary": "Initiate a request to process and xml text available at the supplied url",
"description": "",
"produces": [
"application/json"
],
"parameters": [
{
"in": "query",
"type": "string",
"name": "url",
"description": "The URL of an available xml text",
"required": false
}
],
"responses": {
"200": {
"description": "successful operation",
"schema": {
"$ref": "#/definitions/Response"
}
}
}
}
},
"/cache/{filename}": {
"get": {
"summary": "returns file",
"description": "",
"produces": [
"application/pdf"
],
"parameters": [
{
"in": "path",
"type": "string",
"name": "filename",
"description": "provides pdf",
"required": true
}
],
"responses": {
"200": {
"description": "A PDF file.",
"schema": {
"type": "file"
}
}
}
}
}
},
"definitions": {
"Response": {
"type": "object",
"required": [
"Status"
],
"properties": {
"Status": {
"type": "string",
"description": "indicates status of the process (e.g. started, converting, finished)"
},
"url": {
"type": "string",
"description": "a url where the processed PDF file can be found once finished"
},
"error": {
"type": "string",
"description": "reports error in processing"
}
}
}
},
"externalDocs": {
"description": "Find out more about the DLL Review Registry",
"url": "dll-review-registry.herokuapp.com/about"
}
}
2 changes: 0 additions & 2 deletions swagger.yaml → static/docs/swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ schemes:
paths:
'/resource':
get:
tags:
- Reviews
summary: Initiate a request to process and xml text available at the supplied url
description: ''
produces:
Expand Down
5 changes: 3 additions & 2 deletions worker.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
#!/usr/bin/env python
import sys

import os
from redis import Redis
from rq import Connection, Worker


def start_worker(queues: list = ["default"]):
redis_endpoint = "redis" if os.environ.get("REDIS_DOCKER") == "True" else "localhost"
with Connection():
w = Worker(queues, connection=Redis(host="redis"))
w = Worker(queues, connection=Redis(host=redis_endpoint))
w.work()


Expand Down