package auth

import (
	"errors"
	"net/http"
	"strings"
)

// GetAPIKey extracts an API Key from
// the headers of an HTTP request
// Example:
// Authorization: ApiKey {user-api-key}
func GetAPIKey(headers http.Header) (string, error) {
	auth_header := headers.Get("Authorization")
	if auth_header == "" {
		return "", errors.New("no authentication info found")
	}

	header_parts := strings.Split(auth_header, " ")
	if len(header_parts) != 2 {
		return "", errors.New("malformed auth header")
	}
	if header_parts[0] != "ApiKey" {
		return "", errors.New("malformed first part of auth header")
	}

	return header_parts[1], nil
}
