This commit is contained in:
Steve Androulakis
2025-02-14 11:45:23 -08:00
parent aa0fd19c20
commit a1a1180a89
2 changed files with 15 additions and 71 deletions

View File

@@ -115,6 +115,21 @@ poetry run uvicorn api.main:app --reload
``` ```
Access the API at `/docs` to see the available endpoints. Access the API at `/docs` to see the available endpoints.
### Python Search Trains API
Required to search and book trains!
```bash
poetry run python thirdparty/train_api.py
```
### .NET (enterprise) Backend ;)
We have activities written in C# to call the train APIs.
```bash
cd enterprise
dotnet build # ensure you brew install dotnet@8 first!
dotnet run
```
If you're running your train API above on a different host/port then change the API URL in `Program.cs`.
### React UI ### React UI
Start the frontend: Start the frontend:
```bash ```bash

View File

@@ -1,77 +1,6 @@
import requests
import os
from dotenv import load_dotenv
def search_trains(args: dict) -> dict: def search_trains(args: dict) -> dict:
raise NotImplementedError("TODO implement :)") raise NotImplementedError("TODO implement :)")
def book_trains(args: dict) -> dict: def book_trains(args: dict) -> dict:
raise NotImplementedError("TODO implement :)") raise NotImplementedError("TODO implement :)")
# todo clean this up
# BASE_URL = "http://localhost:8080/"
# def book_trains(args: dict) -> dict:
# load_dotenv(override=True)
# train_ids = args.get("train_ids")
# if not train_ids:
# return {"error": "Train IDs is required."}
# book_url = f"{BASE_URL}/api/book/{train_ids}"
# response = requests.post(book_url)
# if response.status_code != 200:
# return {"error": "Failed to book ticket."}
# booking_data = response.json()
# return booking_data
# Example usage
if __name__ == "__main__":
search_args = {
"origin": "London Gatwick",
"destination": "Manchester",
"outbound_time": "2025-03-15T14:00",
"return_time": "2025-03-20T14:00",
}
search_results = search_trains(search_args)
print(search_results)
book_args = {
"train_ids": "12345",
}
booking_results = book_trains(book_args)
print(booking_results)
# def search_trains(args: dict) -> dict:
# load_dotenv(override=True)
# origin = args.get("origin")
# destination = args.get("destination")
# outbound_time = args.get("outbound_time")
# return_time = args.get("return_time")
# if not origin or not destination or not outbound_time or not return_time:
# return {"error": "Origin, destination, outbound_time and return_time are required."}
# search_url = f'{BASE_URL}/api/search'
# params = {
# 'from': origin,
# 'to': destination,
# 'outbound_time': outbound_time,
# 'return_time': return_time,
# }
# response = requests.get(search_url, params=params)
# if response.status_code != 200:
# print(response.content)
# return {"error": "Failed to fetch journey data."}
# journey_data = response.json()
# return journey_data