You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.2 KiB

Code Challenge - Top100 popular iTunes Podcasts

Erstelle einen HTTP Server mit den folgenden beiden Endpunkten in Golang

  1. 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

  2. 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.