Skip to content

Commit d86d44a

Browse files
committed
add random number route
Signed-off-by: Bradley Reynolds <[email protected]>
1 parent f4a8f87 commit d86d44a

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

docs/source/changelog.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
Changelog
55
=========
66

7+
- :release:`1.6.0 <09th March 2023>`
8+
- :feature:`21` Add random number generation
9+
710
- :release:`1.5.0 <28th February 2023>`
811
- :feature:`17` Pin the Docker image to a specific SHA-256 digest to help with reproducible builds
912

src/api/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Public API for our projects"""
22

3-
__version__ = "1.5.0"
3+
__version__ = "1.6.0"

src/api/server.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""API server definition"""
22

33
from os import getenv
4+
from random import randint
45

56
import sentry_sdk
67
from fastapi import APIRouter, FastAPI
@@ -31,6 +32,13 @@ class TextModel(BaseModel):
3132
text: str
3233

3334

35+
class Numbers(BaseModel):
36+
"""Model to hold a list of numbers"""
37+
38+
numbers: list[int]
39+
total: int
40+
41+
3442
app = FastAPI(
3543
title="Let's Build A API",
3644
description="An API to host Let's Build A's projects",
@@ -60,4 +68,11 @@ async def uwuify_route(text: TextModel):
6068
return {"text": uwuify(text.text)}
6169

6270

71+
@router_fun.get("/random-numbers/{quantity}/{range_high}")
72+
async def random_numbers(quantity: int, range_high: int) -> Numbers:
73+
"""Generate bulk random numbers"""
74+
numbers = [randint(1, range_high) for _ in range(quantity)]
75+
return Numbers(numbers=numbers, total=sum(numbers))
76+
77+
6378
app.include_router(router_fun)

tests/test_server.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,12 @@ def test_read_main():
1515
"message": "Welcome to the API",
1616
"version": __version__,
1717
}
18+
19+
20+
def test_read_random_numbers():
21+
response = client.get("/fun/random-numbers/1/1")
22+
assert response.status_code == 200
23+
assert response.json() == {
24+
"numbers": [1],
25+
"total": 1,
26+
}

0 commit comments

Comments
 (0)