in lambda/go/play-podcast/main.go [34:63]
func (h *Handler) Handle(ctx context.Context, input events.APIGatewayV2HTTPRequest) (
*events.APIGatewayV2HTTPResponse, error,
) {
log.Printf("Request:\n%#v", input)
// Get Episode ID from HTTP URL Path
episodeID, ok := input.PathParameters["id"]
if !ok || episodeID == "" {
return workshop.NewBadRequestErrorResponse("Episode id not provided")
}
// Get content to be returned from query string parameter
contentType, err := parseEpisodeContentKind(input.QueryStringParameters["content"])
if !ok || episodeID == "" {
return workshop.NewBadRequestErrorResponse(err.Error())
}
// Get the S3 Object key for the episode and content
mediaKey, err := h.getEpisodeMediaKey(ctx, contentType, episodeID)
if err != nil {
return nil, fmt.Errorf("failed to get episode %v content %v key, %v",
episodeID, contentType, err)
}
if resp, err := h.checkMediaExists(ctx, mediaKey); err != nil || resp != nil {
return resp, err
}
return h.respondRedirect(ctx, mediaKey)
}