func()

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)
}