spoty

command module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Apr 12, 2022 License: Apache-2.0 Imports: 3 Imported by: 0

README

spoty 🎵

Go Doc Release Conventional Commits License

Spoty provides simple REST API endpoints to query the current playing track on Spotify.

Contents

Getting started

  1. Download the corresponding binary for your operating system and architecture from the releases page.

  2. Create a Spotify application here.

    Take note of the Client ID and Client Secret for use in the next step.

  3. Setup the proper environment variables (Check the configuration section for references)

    Example from .env.dist:

    SERVICE_NAME=spoty
    PROD=false
    SPOTIFY_CLIENT_ID=111fedce236f4d34a607711a7ac4a606
    SPOTIFY_CLIENT_SECRET=fb4d98819b912dfd90d5803bb668ad24
    HTTP_SERVER_HOST=localhost
    HTTP_SERVER_PORT=13337
    CACHE_MAX_KEYS=64
    CACHE_MAX_COST=1000000
    JAEGER_ENDPOINT=http://localhost:14268/api/traces
    AMQP_URI=amqp://guest:guest@localhost:5672
    
  4. Edit the Redirect URIs setting of your Spotify application to match the environment variables:

    Example:

    http://<HOST>:<PORT>/api/callback
    
  5. Run the service:

    $ ./spoty serve
    

    You can also run the service in production mode by setting the PROD environment variable to true.

  6. Authenticate against Spotify by heading to /api/authenticate route. You should be redirected to the Spotify login page if you not already logged in on Spotify. After logging in, you should be redirected back to the service with the following success message:

    {
        "message": "welcome, you are now authenticated!"
    }
    
  7. Head to the /api (health-check) route and expect a similar json response with a HTTP status code 200:

    Example:

    {
        "status": "up",
        "details": {
            "spoty": {
                "status": "up",
                "timestamp": "2022-03-31T08:10:31.534317878Z"
            }
        }
    }
    

API Documentation

Consult the swagger ui page at the /swagger/index.html route:

Example:

http://<HOST>:<PORT>/swagger/index.html

Configuration

ENV Description Required Default
SERVICE_NAME Name of microservice No spoty
PROD Whether running in PROD or DEBUG mode No false
SPOTIFY_CLIENT_ID Client ID of app created on Spotify Yes empty
SPOTIFY_CLIENT_SECRET Client Secret of app created on Spotify Yes empty
HTTP_SERVER_HOST Host/IP for HTTP server No localhost
HTTP_SERVER_PORT Port for HTTP server No 13337
CACHE_MAX_KEYS Maximum number of keys for cache No 64
CACHE_MAX_COST Maximum size of cache (in bytes) No 1000000
JAEGER_ENDPOINT Jaeger collector endpoint No http://localhost:14268/api/traces
AMQP_URI AMQP 0-9-1 Uniform Resource Identifier No amqp://guest:guest@localhost:5672

About the project

This project was inspired by arwinneil/spotify_chroma and was initially coded in a similar regard as the latter: a fun PoC. However, this project will be maintained until it is deemed feature complete and bug free by the author/maintainer(s) 😊

Stability

This project follows SemVer strictly and is not yet v1.

Breaking changes might be introduced until v1 is released.

This project follows the Go Release Policy. Each major version of Go is supported until there are two newer major releases.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag
transport

Jump to

Keyboard shortcuts

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