|
2 years ago | |
---|---|---|
.vscode | ||
src | 2 years ago | |
.gitignore | 2 years ago | |
Dockerfile | 2 years ago | |
LICENSE | ||
Makefile | 2 years ago | |
README.md | 2 years ago |
README.md
Code Challenge - Top100 popular iTunes Podcasts
Erstelle einen HTTP Server mit den folgenden beiden Endpunkten in Golang
-
Der Endpunkt /update lädt beim Aufruf die Liste der 100 populärsten Podcasts für 5 verschiedene Länder und schreibt diese in geeigneter Form in eine Datenbank Die 100 populärsten Podcasts lassen sich von iTunes über die folgende URL als JSON abrufen: https://itunes.apple.com/{cc}/rss/topaudiopodcasts/limit=100/json ({cc} = Country Code) Die iTunesID ist im JSON unter dem Pfad "feed > entry > id > attribute > im:id“ zu finden Die 5 Länder mit den dazugehörigen Country-Codes sind: USA (us), Deutschland (de), Frankreich (fr), Italien (it) und Spanien (es) Die Datenbank sollte entweder MySQL, PostgreSQL oder SQLite sein
-
Der Endpunkt /rank erfordert die iTunesID als Eingabe-Parameter und liefert eine Liste von Land/Position-Tupeln zurück In dem Tupel ist das Land (der "Country Code”) und die Position innerhalb der Top-100 enthalten Die Server-Antwort soll mit Hilfe der Daten aus der Datenbank erstellt werden Ist die iTunesID unbekannt, so soll eine leere Liste zurück gegeben werden Die Antwort soll als JSON zurück gegeben werden
Distribution
Der Server soll als Docker-Image ausgeliefert werden, d.h. ein entsprechendes Dockerfile soll vorhanden sein. Die Integration in eine CI/CD ist nicht notwendig.
FAQ
Gibt es eine Präferenz bzw. direkte Vorgaben zu bestimmten Frameworks?
Beispiel: soll die DB-Umsetzung mit plain „idiomatic“ db/sql erledigt werden oder darf auf GORM zurückgegriffen werden?
Keine Einschränkung.
Darf minimal auf eigene (!) Codeschnipsel zurückgegriffen werden?
Da gibt es keine Einschränkungen.
Wird eine geschwindigkeitsoptimierte Lösung erwartet?
Lesbarkeit ist hier wichtiger als Geschwindigkeit.
Sind Golang test cases erwünscht?
Freie Wahl.
Wie soll der Ablauf stattfinden?
- keine Stoppuhr
- Nachvollziehbarkeit vor Bestzeit
Fazit
Challenge durchgeführt.
make docker
make start
sollte auf Port 80 einen Webserver starten.
- /update führt das DB-Update aus
- /rank/:id gibt im json-Format die Top100 Platzierungen in den genannten Ländern us,de,fr,it,es zurück => Test: /rank/659155419 sollte 3 Länderpositionen zurückliefern.