internal

package
v0.1.26 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 6, 2023 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var HttpGet = http.Get

Functions

This section is empty.

Types

type APODResponse

type APODResponse struct {
	ServiceVersion string `json:"service_version"`
	Title          string `json:"title"`
	Date           string `json:"date"`
	Explanation    string `json:"explanation"`
	Type           string `json:"media_type"`
	Copyright      string `json:"copyright"`
	URL            string `json:"url"`
	Thumbnail      string `json:"thumbnail_url"`
}

type HttpGetter

type HttpGetter func(path string) (*http.Response, error)

type ImageEncoder

type ImageEncoder func(w io.Writer, i image.Image) error
var EncodeImage ImageEncoder = png.Encode

type ImageOfTheDayGetter

type ImageOfTheDayGetter func(apiKey, date string) (string, error)
var GetImageOfTheDay ImageOfTheDayGetter = func(apiKey, date string) (string, error) {
	url := fmt.Sprintf("https://api.nasa.gov/planetary/apod?api_key=%s&thumbs=true&date=%s", apiKey, date)
	res, err := HttpGet(url)
	if err != nil {
		return "", fmt.Errorf("failed to query image of the day (%s): %w", url, err)
	}

	if res.StatusCode != http.StatusOK {
		return "", fmt.Errorf("failed to request image of the day: %s: %w", http.StatusText(res.StatusCode), err)
	}

	body, err := io.ReadAll(res.Body)
	if err != nil {
		return "", fmt.Errorf("failed to read image of the day response: %w", err)
	}

	var response APODResponse
	err = json.Unmarshal(body, &response)
	if err != nil {
		return "", fmt.Errorf("failed to decode image of the day response: %w", err)
	}

	if response.Type == "image" {
		return response.URL, nil
	} else if response.Type == "video" {
		return response.Thumbnail, nil
	}

	return "", fmt.Errorf("unexpected image type %s", response.Type)
}

type ImageProcessor

type ImageProcessor func(url string, width, height int) (image.Image, error)
var ProcessImage ImageProcessor = func(url string, width, height int) (image.Image, error) {
	imageConfig := &imageConf.Config{
		Source: url,
		Scale:  imageConf.ScaleCover,
	}
	return imageConfig.GenerateImage(width, height)
}

type ImageWriter

type ImageWriter func(file string, i image.Image) error
var WriteImage ImageWriter = func(file string, i image.Image) error {
	f, err := os.Create(file)
	if err != nil {
		return err
	}
	err = EncodeImage(f, i)
	if err != nil {
		return err
	}
	return f.Close()
}

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL