Skip to content

Commit

Permalink
Create an api router for v2 endpoints. #98
Browse files Browse the repository at this point in the history
  • Loading branch information
paul121 committed Mar 4, 2021
1 parent 6b4293f commit eafb84f
Show file tree
Hide file tree
Showing 26 changed files with 68 additions and 43 deletions.
Empty file.
1 change: 1 addition & 0 deletions backend/app/app/core/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

class Settings(BaseSettings):
API_V1_STR: str = "/api/v1"
API_V2_STR: str = "/api/v2"

SECRET_KEY: str = secrets.token_urlsafe(32)

Expand Down
5 changes: 3 additions & 2 deletions backend/app/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from starlette.middleware.cors import CORSMiddleware
from starlette.requests import Request

from app.api.api_v1.api import api_router
from app.routers import api_v1, api_v2
from app.core.config import settings

# Configure logging. Change INFO to DEBUG for development logging.
Expand All @@ -27,4 +27,5 @@
allow_headers=["*"],
),

app.include_router(api_router, prefix=settings.API_V1_STR)
app.include_router(api_v1.router, prefix=settings.API_V1_STR)
app.include_router(api_v2.router, prefix=settings.API_V2_STR)
File renamed without changes.
1 change: 1 addition & 0 deletions backend/app/app/routers/api_v1/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .api import router
Original file line number Diff line number Diff line change
Expand Up @@ -2,65 +2,65 @@

from fastapi import APIRouter, Depends, Security

from app.api.api_v1.endpoints import login, users, utils, api_key
from app.api.api_v1.endpoints.farms import farms, info, logs, assets, terms, areas
from app.api.utils.security import get_farm_access, get_current_active_superuser
from app.routers.api_v1.endpoints import login, users, utils, api_key
from app.routers.api_v1.endpoints.farms import farms, info, logs, assets, terms, areas
from app.routers.utils.security import get_farm_access, get_current_active_superuser

logger = logging.getLogger(__name__)

api_router = APIRouter()
api_router.include_router(login.router, tags=["login"])
api_router.include_router(users.router, prefix="/users", tags=["users"])
api_router.include_router(utils.router, prefix="/utils", tags=["utils"])
router = APIRouter()
router.include_router(login.router, tags=["login"])
router.include_router(users.router, prefix="/users", tags=["users"])
router.include_router(utils.router, prefix="/utils", tags=["utils"])

# Include /api-keys endpoint, require superuser to access.
api_router.include_router(
router.include_router(
api_key.router,
prefix="/api-keys",
tags=["api keys"],
dependencies=[Security(get_current_active_superuser)]
)

# Include /farms endpoints.
api_router.include_router(
router.include_router(
farms.router,
prefix="/farms",
tags=["farms"],
)

# Include /farms/info endpoint.
api_router.include_router(
router.include_router(
info.router,
prefix="/farms/info",
tags=["farm info"],
)

# Include /farms/logs endpoints.
api_router.include_router(
router.include_router(
logs.router,
prefix="/farms/logs",
tags=["farm logs"],
dependencies=[Security(get_farm_access, scopes=['farm:read', 'farm.logs'])]
)

# Include /farms/assets endpoints.
api_router.include_router(
router.include_router(
assets.router,
prefix="/farms/assets",
tags=["farm assets"],
dependencies=[Security(get_farm_access, scopes=['farm:read', 'farm.assets'])]
)

# Include /farms/terms endpoints.
api_router.include_router(
router.include_router(
terms.router,
prefix="/farms/terms",
tags=["farm terms"],
dependencies=[Security(get_farm_access, scopes=['farm:read', 'farm.terms'])]
)

# Include /farms/areas endpoints.
api_router.include_router(
router.include_router(
areas.router,
prefix="/farms/areas",
tags=["farm areas"],
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from sqlalchemy.orm import Session

from app import crud
from app.api.utils.db import get_db
from app.routers.utils.db import get_db
from app.schemas.api_key import ApiKey, ApiKeyCreate, ApiKeyUpdate

logger = logging.getLogger(__name__)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
from pydantic import BaseModel
from sqlalchemy.orm import Session

from app.api.utils.db import get_db
from app.api.utils.farms import get_active_farms_url_or_list, get_farm_client, ClientError
from app.routers.utils.db import get_db
from app.routers.utils.farms import get_active_farms_url_or_list, get_farm_client, ClientError
from app.schemas.farm import Farm

router = APIRouter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
from pydantic import BaseModel
from sqlalchemy.orm import Session

from app.api.utils.db import get_db
from app.api.utils.farms import get_active_farms_url_or_list, get_farm_client, ClientError
from app.routers.utils.db import get_db
from app.routers.utils.farms import get_active_farms_url_or_list, get_farm_client, ClientError
from app.schemas.farm import Farm

router = APIRouter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

from app import crud
from app.utils import get_settings
from app.api.utils.db import get_db
from app.api.utils.farms import get_farms_url_or_list, get_farm_by_id, admin_alert_email
from app.api.utils.security import get_farm_access, get_farm_access_allow_public
from app.routers.utils.db import get_db
from app.routers.utils.farms import get_farms_url_or_list, get_farm_by_id, admin_alert_email
from app.routers.utils.security import get_farm_access, get_farm_access_allow_public
from app.schemas.farm import Farm, AllFarmInfo, FarmCreate, FarmUpdate

router = APIRouter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@


from app import crud
from app.api.utils.db import get_db
from app.api.utils.farms import get_farm_client, ClientError, get_farms_url_or_list
from app.api.utils.security import get_farm_access
from app.routers.utils.db import get_db
from app.routers.utils.farms import get_farm_client, ClientError, get_farms_url_or_list
from app.routers.utils.security import get_farm_access
from app.schemas.farm import Farm
from app.schemas.farm_info import FarmInfo

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from pydantic import BaseModel
from sqlalchemy.orm import Session

from app.api.utils.db import get_db
from app.api.utils.farms import get_active_farms_url_or_list, get_farm_client, ClientError
from app.routers.utils.db import get_db
from app.routers.utils.farms import get_active_farms_url_or_list, get_farm_client, ClientError
from app.schemas.farm import Farm

router = APIRouter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
from pydantic import BaseModel
from sqlalchemy.orm import Session

from app.api.utils.db import get_db
from app.api.utils.farms import get_active_farms_url_or_list, get_farm_client, ClientError
from app.routers.utils.db import get_db
from app.routers.utils.farms import get_active_farms_url_or_list, get_farm_client, ClientError
from app.schemas.farm import Farm

router = APIRouter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from sqlalchemy.orm import Session

from app import crud
from app.api.utils.db import get_db
from app.api.utils.security import get_current_user
from app.routers.utils.db import get_db
from app.routers.utils.security import get_current_user
from app.core.jwt import create_access_token
from app.core.security import get_password_hash
from app.models.user import User as DBUser
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from sqlalchemy.orm import Session

from app import crud
from app.api.utils.db import get_db
from app.api.utils.security import get_current_active_superuser, get_current_active_user
from app.routers.utils.db import get_db
from app.routers.utils.security import get_current_active_superuser, get_current_active_user
from app.models.user import User as DBUser
from app.schemas.user import User, UserCreate, UserInDB, UserUpdate
from app.utils import get_settings, send_new_account_email
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
from farmOS import farmOS

from app import crud
from app.api.utils.db import get_db
from app.routers.utils.db import get_db
from app.schemas.msg import Msg
from app.schemas.farm import Farm
from app.schemas.farm_token import FarmTokenCreate, FarmAuthorizationParams
from app.api.utils.farms import get_farm_by_id, get_oauth_token, get_farm_client, handle_ping_farms
from app.api.utils.security import get_farm_access, get_farm_access_allow_public
from app.routers.utils.farms import get_farm_by_id, get_oauth_token, get_farm_client, handle_ping_farms
from app.routers.utils.security import get_farm_access, get_farm_access_allow_public
from app.utils import (
get_settings,
generate_farm_registration_link,
Expand Down
1 change: 1 addition & 0 deletions backend/app/app/routers/api_v2/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .api import router
21 changes: 21 additions & 0 deletions backend/app/app/routers/api_v2/api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import logging

from fastapi import APIRouter, Security

from app.routers.api_v1.endpoints import login, users, utils, api_key
from app.routers.utils.security import get_current_active_superuser

logger = logging.getLogger(__name__)

router = APIRouter()
router.include_router(login.router, tags=["login"])
router.include_router(users.router, prefix="/users", tags=["users"])
router.include_router(utils.router, prefix="/utils", tags=["utils"])

# Include /api-keys endpoint, require superuser to access.
router.include_router(
api_key.router,
prefix="/api-keys",
tags=["api keys"],
dependencies=[Security(get_current_active_superuser)]
)
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@
from farmOS.config import ClientConfig

from app import crud
from app.api.utils.db import get_db
from app.routers.utils.db import get_db
from app.schemas.farm_token import FarmTokenBase, FarmTokenCreate
from app.crud.farm_token import create_farm_token, update_farm_token
from app.schemas.farm import Farm, FarmUpdate
from app.schemas.token import FarmAccess
from app.api.utils.security import get_farm_access
from app.routers.utils.security import get_farm_access
from app.utils import get_settings, send_admin_alert_email


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from app import crud
from app.utils import get_settings
from app.api.utils.db import get_db
from app.routers.utils.db import get_db
from app.core.jwt import ALGORITHM
from app.models.user import User
from app.schemas.token import TokenData, FarmAccess
Expand Down
2 changes: 1 addition & 1 deletion backend/app/app/tests/api/api_v1/test_farm_authorize.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from app.core.config import settings
from app.schemas.farm_token import FarmAuthorizationParams
from app.tests.utils.utils import random_lower_string, get_scope_token_headers
from app.api.utils.security import _validate_token
from app.routers.utils.security import _validate_token


@pytest.fixture
Expand Down
2 changes: 1 addition & 1 deletion backend/app/app/tests/crud/test_api_token.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from app.core.jwt import create_farm_api_token
from app.api.utils.security import _validate_token
from app.routers.utils.security import _validate_token


def test_create_api_token():
Expand Down

0 comments on commit eafb84f

Please sign in to comment.