diff --git a/.gitignore b/.gitignore index c9607a3..e8f34bb 100644 --- a/.gitignore +++ b/.gitignore @@ -2,10 +2,8 @@ .env .env.* -lib/ - bin/ **/__pycache__/ -.unlimiter/ \ No newline at end of file +**/unlimiter.config* diff --git a/Dockerfile b/Dockerfile index dcf4d9e..43dedb0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ WORKDIR /usr/src/core-services-api RUN mkdir -p /root/.unlimiter -COPY ./.unlimiter/config.yaml /root/.unlimiter/config.yaml +COPY /config/unlimiter.config.yaml /root/.unlimiter/config.yaml COPY --from=requirements-stage /tmp/requirements.txt /usr/src/core-services-api/requirements.txt diff --git a/README.md b/README.md index 7e14ee7..46b0fae 100644 --- a/README.md +++ b/README.md @@ -47,3 +47,4 @@ in the project root and _[follow the directions for authentication and configura |---|---| | `bash index.sh` | This command builds and starts the Core Services API inside a Docker container.| + diff --git a/app/__init__.py b/api/controller/__init__.py similarity index 100% rename from app/__init__.py rename to api/controller/__init__.py diff --git a/api/controller/loupe_controller.py b/api/controller/loupe_controller.py new file mode 100644 index 0000000..306695b --- /dev/null +++ b/api/controller/loupe_controller.py @@ -0,0 +1,12 @@ +from api.lib.services import benchling_service + +class LoupeController: + def __init__(self): + pass + + + @classmethod + def get_all_projects(self): + result = benchling_service.get_all_projects() + return result + \ No newline at end of file diff --git a/api/lib/__init__.py b/api/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/lib/services/__init__.py b/api/lib/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/main.py b/api/lib/services/benchling_service.py similarity index 62% rename from app/main.py rename to api/lib/services/benchling_service.py index 41c3984..9c66418 100644 --- a/app/main.py +++ b/api/lib/services/benchling_service.py @@ -1,11 +1,8 @@ -from fastapi import FastAPI - from unlimiter.data.api import BenchlingV2APIConnection -app = FastAPI() +import pprint -@app.get('/') -async def root(): +def get_all_projects(): with BenchlingV2APIConnection() as benchling: projects = benchling.projects.list_projects() - return projects \ No newline at end of file + return projects \ No newline at end of file diff --git a/api/main.py b/api/main.py new file mode 100644 index 0000000..94c26b0 --- /dev/null +++ b/api/main.py @@ -0,0 +1,16 @@ +from functools import lru_cache +from fastapi import FastAPI +from .routes.loupe import loupe_v1 +from starlette.middleware.cors import CORSMiddleware + +app = FastAPI() + +app.add_middleware( + CORSMiddleware, + allow_origins= ['http://localhost:3000'], + allow_credentials=True, + allow_methods=["GET"], + allow_headers=["*"], +) + +app.include_router(loupe_v1.router) \ No newline at end of file diff --git a/api/routes/loupe/loupe_v1.py b/api/routes/loupe/loupe_v1.py new file mode 100644 index 0000000..37d7ae5 --- /dev/null +++ b/api/routes/loupe/loupe_v1.py @@ -0,0 +1,12 @@ + +from fastapi import APIRouter +from starlette import responses +from api.controller.loupe_controller import LoupeController + + +router = APIRouter() + +@router.get('/v1/loupe/projects') +async def get_all_projects(): + responses = LoupeController.get_all_projects() + return responses \ No newline at end of file diff --git a/api/routes/wfvt.py b/api/routes/wfvt.py new file mode 100644 index 0000000..e69de29 diff --git a/config/api_settings.py b/config/api_settings.py new file mode 100644 index 0000000..98fb382 --- /dev/null +++ b/config/api_settings.py @@ -0,0 +1,7 @@ +from pydantic import BaseSettings + +class Settings(BaseSettings): + app_name: str = "Core Services API" + + class Config: + env_file = '.env.dev' \ No newline at end of file diff --git a/config/unlimiter.config.yaml b/config/unlimiter.config.yaml new file mode 100644 index 0000000..5a8188a --- /dev/null +++ b/config/unlimiter.config.yaml @@ -0,0 +1,21 @@ +asana_v1: + dev: + url: https://app.asana.com/api/1.0 + auth: + method: bearer + token: +benchling_v2: + dev: + url: https://abscitest.benchling.com/api/v2 + auth: + method: basic + username: sk_mAqh8a9o8ipbAIWTCyIQumeIX7LQQ + password: '' +benchling_warehouse: + dev: + scheme: postgresql + url: postgres-warehouse.abscidev.benchling.com:5432/warehouse + auth: + method: basic + username: + password: \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index fed0a2f..dced320 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -9,7 +9,7 @@ services: BENCHLING_API_KEY: ${BENCHLING_API_KEY} GITHUB_TOKEN: ${GITHUB_TOKEN} container_name: core_api - command: uvicorn app.main:app --reload --workers 1 --host 0.0.0.0 --port 5000 + command: uvicorn api.main:app --reload --workers 1 --host 0.0.0.0 --port 5000 ports: - 5002:5000 environment: