2019-01-04 13:27:24 -08:00
|
|
|
"""First API, local access only"""
|
2019-01-04 15:34:42 -08:00
|
|
|
import json
|
|
|
|
|
2019-01-04 13:27:24 -08:00
|
|
|
import hug # type: ignore
|
|
|
|
import hug.types as T # type: ignore
|
|
|
|
|
2019-01-04 15:34:42 -08:00
|
|
|
from kython.org import append_org_entry
|
|
|
|
|
|
|
|
from config import CAPTURE_PATH
|
2019-01-04 13:27:24 -08:00
|
|
|
|
2019-01-04 15:34:42 -08:00
|
|
|
def empty(s) -> bool:
|
|
|
|
return s is None or len(s.strip()) == 0
|
2019-01-04 13:27:24 -08:00
|
|
|
|
2019-01-04 15:34:42 -08:00
|
|
|
def log(*things):
|
|
|
|
# TODO proper logging
|
|
|
|
print(*things)
|
|
|
|
|
|
|
|
# TODO allow to pass tags??
|
2019-01-04 13:27:24 -08:00
|
|
|
@hug.local()
|
|
|
|
@hug.post('/capture')
|
|
|
|
def capture(
|
|
|
|
url: T.text,
|
|
|
|
selection: T.Nullable(T.text),
|
|
|
|
comment: T.Nullable(T.text),
|
|
|
|
):
|
2019-01-04 15:34:42 -08:00
|
|
|
log("capturing", url, selection, comment)
|
|
|
|
|
|
|
|
parts = []
|
|
|
|
# TODO not sure, maybe add as org quote?
|
|
|
|
if not empty(selection):
|
|
|
|
parts.extend([
|
|
|
|
'Selection:',
|
|
|
|
selection,
|
|
|
|
])
|
|
|
|
if not empty(comment):
|
|
|
|
parts.extend([
|
|
|
|
'Comment:',
|
|
|
|
comment
|
|
|
|
])
|
|
|
|
body = None if len(parts) == 0 else '\n'.join(parts)
|
|
|
|
|
|
|
|
|
|
|
|
response = {
|
|
|
|
'file': str(CAPTURE_PATH),
|
|
|
|
}
|
|
|
|
try:
|
|
|
|
append_org_entry(
|
|
|
|
CAPTURE_PATH,
|
|
|
|
heading=url,
|
|
|
|
body=body,
|
|
|
|
tags=['grasp'],
|
|
|
|
todo=False,
|
|
|
|
)
|
|
|
|
response.update({
|
|
|
|
'status': 'ok',
|
|
|
|
})
|
|
|
|
except Exception as e:
|
|
|
|
log(str(e))
|
|
|
|
response.update({
|
|
|
|
'status': 'error',
|
|
|
|
'error' : str(e),
|
|
|
|
})
|
|
|
|
|
|
|
|
return json.dumps(response).encode('utf8')
|