|
|
|
@ -1,4 +1,5 @@
@@ -1,4 +1,5 @@
|
|
|
|
|
#!/usr/bin/env python3 |
|
|
|
|
import sys |
|
|
|
|
import argparse |
|
|
|
|
import logging |
|
|
|
|
import pathlib |
|
|
|
@ -6,13 +7,14 @@ import asyncio
@@ -6,13 +7,14 @@ import asyncio
|
|
|
|
|
|
|
|
|
|
import time |
|
|
|
|
|
|
|
|
|
from .data import Data |
|
|
|
|
from .pointer import Pointer |
|
|
|
|
from .config import Config |
|
|
|
|
from .counter import Counter |
|
|
|
|
from .db import DB |
|
|
|
|
from .logger import setup_logging |
|
|
|
|
from .web import Web, SiteHandler |
|
|
|
|
from shortenit.data import Data |
|
|
|
|
from shortenit.pointer import Pointer |
|
|
|
|
from shortenit.config import Config |
|
|
|
|
from shortenit.shortener import Shortener |
|
|
|
|
from shortenit.db import DB |
|
|
|
|
from shortenit.logger import setup_logging |
|
|
|
|
from shortenit.web import Web, SiteHandler |
|
|
|
|
from shortenit.exceptions import DBConnectionFailed |
|
|
|
|
|
|
|
|
|
PROJECT_ROOT = pathlib.Path(__file__).parent.parent |
|
|
|
|
CONFIGURATION = f'{PROJECT_ROOT}/config/config.yaml' |
|
|
|
@ -34,28 +36,34 @@ def main() -> None:
@@ -34,28 +36,34 @@ def main() -> None:
|
|
|
|
|
db_config = config.get('CouchDB', None) |
|
|
|
|
server_config = config.get('Server', None) |
|
|
|
|
if db_config: |
|
|
|
|
with DB(db_config) as db: |
|
|
|
|
db.initialize_shortenit() |
|
|
|
|
|
|
|
|
|
handler = SiteHandler(db, shorten_url, lenghten_url) |
|
|
|
|
web = Web(handler, debug=debug) |
|
|
|
|
web.host = server_config.get('host', None) |
|
|
|
|
web.port = server_config.get('port', None) |
|
|
|
|
web.start_up() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def shorten_url(database: DB, data: str, ttl: time.time): |
|
|
|
|
counter = Counter(database.counter_db) |
|
|
|
|
data = Data(database.data_db, |
|
|
|
|
data=data) |
|
|
|
|
data.populate() |
|
|
|
|
pointer = Pointer(database.pointers_db, counter) |
|
|
|
|
pointer.generate_pointer( |
|
|
|
|
data.identifier, |
|
|
|
|
ttl |
|
|
|
|
) |
|
|
|
|
data.set_data(pointer.identifier) |
|
|
|
|
return pointer.identifier |
|
|
|
|
try: |
|
|
|
|
with DB(db_config) as db: |
|
|
|
|
db.initialize_shortenit() |
|
|
|
|
|
|
|
|
|
handler = SiteHandler(config, db, shorten_url, lenghten_url) |
|
|
|
|
web = Web(handler, debug=debug) |
|
|
|
|
web.host = server_config.get('host', None) |
|
|
|
|
web.port = server_config.get('port', None) |
|
|
|
|
web.start_up() |
|
|
|
|
except DBConnectionFailed as e: |
|
|
|
|
sys.exit(1) |
|
|
|
|
sys.exit(0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def shorten_url(configuration: dict, database: DB, |
|
|
|
|
data: str, ttl): |
|
|
|
|
shortener = Shortener(database.pointers_db, |
|
|
|
|
configuration.get('Shortener', None)) |
|
|
|
|
identifier = shortener.get_id() |
|
|
|
|
if identifier: |
|
|
|
|
_data = Data(database.data_db, |
|
|
|
|
data=data) |
|
|
|
|
_data.populate() |
|
|
|
|
pointer = Pointer(database.pointers_db, identifier) |
|
|
|
|
pointer.generate_pointer(_data.identifier, ttl) |
|
|
|
|
_data.set_data(pointer.identifier) |
|
|
|
|
return pointer.identifier |
|
|
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def lenghten_url(database: DB, identifier: str): |
|
|
|
@ -100,3 +108,7 @@ def verbosity(verbose: int):
@@ -100,3 +108,7 @@ def verbosity(verbose: int):
|
|
|
|
|
return logging.INFO |
|
|
|
|
elif verbose > 2: |
|
|
|
|
return logging.DEBUG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
|
main() |