Skip to content
3 changes: 3 additions & 0 deletions app/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
from flask import Flask
from .routes.planet_routes import planets_bp


def create_app(test_config=None):
app = Flask(__name__)

app.register_blueprint(planets_bp)

return app
Empty file added app/models/__init__.py
Empty file.
18 changes: 18 additions & 0 deletions app/models/planet.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
class Planet:
def __init__(self, id, name, description):
self.id = id
self.name = name
self.description = description

def to_dict(self):
return dict(
id=self.id,
name=self.name,
description=self.description
)

planets = [
Planet(1, "Mars", "The red planet"),
Planet(2, "Earth", "The green planet"),
Planet(3, "Jupiter", "The largest planet")
]
Empty file added app/routes/__init__.py
Empty file.
30 changes: 30 additions & 0 deletions app/routes/planet_routes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from flask import Blueprint, abort, make_response
from app.models.planet import planets

planets_bp = Blueprint("planets_bp", __name__, url_prefix="/planets")

@planets_bp.get("")
def get_all_planets():
planets_response = []
for planet in planets:
planets_response.append(planet.to_dict())
return planets_response

@planets_bp.get("/<planet_id>")
def get_one_planet(planet_id):
planet = validate_planet(planet_id)
return planet.to_dict(), 200

def validate_planet(planet_id):
try:
planet_id = int(planet_id)
except ValueError:
abort(make_response({"message":f"Planet id {planet_id} is invalid"}, 400))

for planet in planets:
if planet.id == planet_id:
return planet

abort(make_response({"message":f"Planet id {planet_id} is not found"}, 404))