gotify

package module
v0.0.0-...-f9ceb6c Latest Latest
Warning

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

Go to latest
Published: May 9, 2020 License: Apache-2.0 Imports: 11 Imported by: 2

README

gotify Codacy Badge

gotify is the wrapper library for Spotify API

Requirements

  • Go 1.9 or later

Supported Authentication Flow

gotify supported Authorization Code Flow

Supported Endpoint

Endpoints that are not yet supported for optional parameters are also planned to be in order

albums
Endpoint Struct Method Optional param support
GET /v1/albums?ids={ids} Albums GetAlbums
GET /v1/albums/{id}/tracks AlbumsTracks GetAlbumsTracks
artists
Endpoint Struct Method Optional param support
GET /v1/artists?ids={ids} Artists GetArtists no option
GET /v1/artists/{id}/albums ArtistsAlbums GetArtistsAlbums
GET /v1/artists/{id}/top-tracks ArtistsTopTracks GetArtistsTopTracks no option
GET /v1/artists/{id}/related-artists ArtistsRelatedArtists GetArtistsRelatedArtists no option
browse
Endpoint Struct Method Optional param support
GET /v1/browse/featured-playlists BrowseFeaturedPlaylists GetBrowseFeaturedPlaylists
GET /v1/browse/new-releases BrowseNewReleases GetBrowseNewReleases
GET /v1/browse/categories BrowseCategories GetBrowseCategories
GET /v1/browse/categories/{id} BrowseCategory GetBrowseCategory
GET /v1/browse/categories/{id}/playlists BrowseCategorysPlaylists GetBrowseCategorysPlaylists
GET /v1/recommendations Recommendations GetRecomendations
following
Endpoint Struct Method Optional param support
GET /v1/me/following?type=artist FollowingArtists GetFollowingArtists
PUT /v1/me/following - FollowArtistsOrUsers
DELETE /v1/me/following - UnfollowArtistsOrUsers
GET /v1/me/following/contains CurrentFollowsArtistsOrUsers GetCurrentFollowsArtistsOrUsers
PUT /v1/users/{owner_id}/playlists/{playlist_id}/followers - FollowPlaylists
DELETE /v1/users/{owner_id}/playlists/{playlist_id}/followers - UnFollowPlaylists
GET /v1/users/{owner_id}/playlists/{playlist_id}/followers/contains FollowPlaylist CheckFollowPlaylist
library
Endpoint Struct Method Optional param support
PUT /v1/me/tracks - SaveTracks
GET /v1/me/tracks UsersSavedTracks GetUsersSavedTracks
DELETE /v1/me/tracks - RemoveUsersSavedTracks
GET /v1/me/tracks/contains FollowTracks CheckUsersSavedTracks no option
PUT /v1/me/albums?ids={ids} - SaveAlbums
GET /v1/me/albums UsersSavedAlbums GetUsersSavedAlbums
DELETE /v1/me/albums?ids={ids} - RemoveAlbumsForCurrentUser
GET /v1/me/albums/contains FollowAlbums CheckUsersSavedAlbums no option
personalization
Endpoint Struct Method Optional param support
GET /v1/me/player/recently-played RecentlyPlayedTracks GetRecentlyPlayedTracks
player
Endpoint Struct Method Optional param support
GET /v1/me/player/devices UsersAvailableDevices GetUsersAvailableDevices
PUT /v1/me/player - TransferUsersPlayback
PUT /v1/me/player/play - StartResumeUsersPlayback
PUT /v1/me/player/pause - PauseUsersPlayback
POST /v1/me/player/next - SkipUsersPlaybackToNext
POST /v1/me/player/previous - SkipUsersPlaybackToPrevious
PUT /v1/me/player/seek - SeekToPositionInCurrentlyPlayingTrack
PUT /v1/me/player/repeat - SetRepeatModeUsersPlayback
PUT /v1/me/player/volume - SetVolumeUsersPlayback
PUT /v1/me/player/shuffle - ToggleShuffleUsersPlayback
Endpoint Struct Method Optional param support
GET /v1/search?type=artist SearchArtists SearchArtists
GET /v1/search?type=album SearchAlbums SearchAlbums
GET /v1/search?type=playlist SearchPlaylists SearchPlaylists
GET /v1/search?type=track SearchTracks SearchTracks
tracks
Endpoint Struct Method Optional param support
GET /v1/tracks?ids={ids} Tracks GetTracks
GET /v1/audio-analysis/{id} AudioAnalysis GetAudioAnalysis no option
profiles
Endpoint Struct Method Optional param support
GET /v1/me CurrentUsersProfile GetCurrentUsersProfile no option
GET /v1/users/{user_id} UsersProfile GetUsersProfile no option
playlists
Endpoint Struct Method Optional param support
GET /v1/users/{user_id}/playlists UsersPlaylists GetUsersPlaylists
GET /v1/me/playlists CurrentUsersPlaylists GetCurrentUsersPlaylists

Installation

  1. Get the client ID and client secret of your application

  2. Run go get github.com/macaulay99/go_spotify_util

Usage

package handler

import (
	"net/http"

	"github.com/labstack/echo"

	"github.com/macaulay99/go_spotify_util"
)

var Auth gotify.OAuth
var Token gotify.Gotify

// Handler : Controller for https://localhost:3000/
func Handler(c echo.Context) error {
	Auth = gotify.Set(clientID, clientSecret, callbackURI) // Set and get the basic data for using Spotify API
	url := Auth.AuthURL() // Get the Redirect URL for authenticate
	return c.Redirect(301, url)
}

// CallbackHandler : Controller for https://localhost:3000/callback/
func CallbackHandler(c echo.Context) error {

	t, err := Auth.GetToken(c.Request()) // Get the token for using Spotify API
	if err != nil {
		return err
	}
	Token = t

	return c.String(http.StatusOK, "Authentication success")
}

// RefreshHandler : Controller for https://localhost:3000/refresh/
func RefreshHandler(c echo.Context) error {

	err := Token.Refresh() // Refreshing token for using Spotify API
	if err != nil {
		return err
	}

	return c.String(http.StatusOK, "AccessToken Refreshed")
}

Sample

Please see here for samples

go_spotify_util

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	ClientID     string
	ClientSecret string
	CallbackURI  string
}

Client : basic client data

func (*Client) AuthURL

func (c *Client) AuthURL() string

AuthURL : returns URL for authorizing app

func (*Client) GetToken

func (c *Client) GetToken(r *http.Request) (Gotify, error)

GetToken : returns Tokens object

type Gotify

type Gotify interface {
	// method for token
	Refresh() error
	// albums
	GetAlbums(albumIDs []string) (*models.Albums, error)
	GetAlbumsTracks(albumID string) (*models.AlbumsTracks, error)
	GetArtists(artistIDs []string) (*models.Artists, error)
	GetArtistsAlbums(artistID string) (*models.ArtistsAlbums, error)
	GetArtistsTopTracks(artistID string, country string) (*models.ArtistsTopTracks, error)
	GetArtistsRelatedArtists(artistID string) (*models.ArtistsRelatedArtists, error)
	// browse
	GetBrowseFeaturedPlaylists() (*models.BrowseFeaturedPlaylists, error)
	GetBrowseNewReleases() (*models.BrowseNewReleases, error)
	GetBrowseCategories() (*models.BrowseCategories, error)
	GetBrowseCategory(categoryID string) (*models.BrowseCategory, error)
	GetBrowseCategorysPlaylists(categoryID string) (*models.BrowseCategorysPlaylists, error)
	// recommendations
	GetRecommendations() (*models.Recommendations, error)
	// following
	GetFollowingArtists() (*models.FollowingArtists, error)
	FollowArtistsOrUsers(followType string, IDs []string) error
	UnfollowArtistsOrUsers(unfollowType string, IDs []string) error
	CurrentFollowsArtistsOrUsers(followType string, IDs []string) (*models.CurrentFollowsArtistsOrUsers, error)
	FollowPlaylist(userID string, playlistID string) error
	UnfollowPlaylist(userID string, playlistID string) error
	CheckFollowPlaylist(ownerID string, playlistID string, userIDs []string) (*models.FollowPlaylist, error)
	// library
	SaveTracks(trackIDs []string) error
	GetUsersSavedTracks() (*models.UsersSavedTracks, error)
	RemoveUsersSavedTracks(trackIDs []string) error
	CheckUsersSavedTracks(tracksIDs []string) (*models.FollowTracks, error)
	SaveAlbums(albumIDs []string) error
	GetUsersSavedAlbums() (*models.UsersSavedAlbums, error)
	RemoveAlbumsForCurrentUser(albumIDs []string) error
	CheckUsersSavedAlbums(albumIDs []string) (*models.FollowAlbums, error)
	// personalization
	GetRecentlyPlayedTracks() (*models.RecentlyPlayedTracks, error)

	// player
	GetUsersAvailableDevices() (*models.UsersAvailableDevices, error)
	// FIXME
	// GetInformationAboutUsersCurrentPlayback() (*models.InformationAboutUsersCurrentPlayback, error)
	// FIXME
	//GetUsersCurrentlyPlayingTrack() (*models.UsersCurrentlyPlayingTrack, error)
	TransferUsersPlayback(deviceIDs []string) error
	StartResumeUsersPlayback() error
	StartUsersTrackPlay(trackinfo []string, seekms int) error
	PauseUsersPlayback() error
	SkipUsersPlaybackToNext() error
	SkipUsersPlaybackToPrevious() error
	SeekToPositionInCurrentlyPlayingTrack(position int) error
	SetRepeatModeUsersPlayback(state string) error
	SetVolumeUsersPlayback(volumePercent int) error
	ToggleShuffleUsersPlayback(state bool) error
	// search
	SearchArtists(keywords string) (*models.SearchArtists, error)
	SearchAlbums(keywords string) (*models.SearchAlbums, error)
	SearchPlaylists(keywords string) (*models.SearchPlaylists, error)
	SearchTracks(keywords string) (*models.SearchTracks, error)
	// tracks
	GetTracks(trackIDs []string) (*models.Tracks, error)
	GetAudioAnalysis(trackID string) (*models.AudioAnalysis, error)
	// profile
	GetCurrentUsersProfile() (*models.CurrentUsersProfile, error)
	GetUsersProfile(userID string) (*models.UsersProfile, error)
	// playlists
	GetUsersPlaylists(userID string) (*models.UsersPlaylists, error)
	GetCurrentUsersPlaylists() (*models.CurrentUsersProfile, error)
}

Gotify : interface for each endpoint of Spotify API

type OAuth

type OAuth interface {
	AuthURL() string
	GetToken(*http.Request) (Gotify, error)
}

OAuth : interface for OAuth

func Set

func Set(clientID string, clientSecret string, callbackURI string) OAuth

Set : generates and returns Client object

type Tokens

type Tokens struct {
	AccessToken  string `json:"access_token"`
	TokenType    string `json:"token_type"`
	Scope        string `json:"scope"`
	ExpiresIn    int    `json:"expire_in"`
	RefreshToken string `json:"refresh_token"`
	// contains filtered or unexported fields
}

Tokens : tokens for using API

func (*Tokens) CheckFollowPlaylist

func (t *Tokens) CheckFollowPlaylist(ownerID string, playlistID string, userIDs []string) (*models.FollowPlaylist, error)

CheckFollowPlaylist : the method for GET https://api.spotify.com/v1/users/{owner_id}/playlists/{playlist_id}/followers/contains

func (*Tokens) CheckUsersSavedAlbums

func (t *Tokens) CheckUsersSavedAlbums(albumIDs []string) (*models.FollowAlbums, error)

CheckUsersSavedAlbums : the method for GET https://api.spotify.com/v1/me/albums/contains

func (*Tokens) CheckUsersSavedTracks

func (t *Tokens) CheckUsersSavedTracks(trackIDs []string) (*models.FollowTracks, error)

CheckUsersSavedTracks : the method for GET https://api.spotify.com/v1/me/tracks/contains

func (*Tokens) CurrentFollowsArtistsOrUsers

func (t *Tokens) CurrentFollowsArtistsOrUsers(followType string, IDs []string) (*models.CurrentFollowsArtistsOrUsers, error)

CurrentFollowsArtistsOrUsers : the method for GET https://api.spotify.com/v1/me/following/contains

func (*Tokens) FollowArtistsOrUsers

func (t *Tokens) FollowArtistsOrUsers(followType string, IDs []string) error

FollowArtistsOrUsers : the method for PUT https://api.spotify.com/v1/me/following

func (*Tokens) FollowPlaylist

func (t *Tokens) FollowPlaylist(ownerID string, playlistID string) error

FollowPlaylist : the method for PUT https://api.spotify.com/v1/users/{owner_id}/playlists/{playlist_id}/followers

func (*Tokens) GetAlbums

func (t *Tokens) GetAlbums(albumIDs []string) (*models.Albums, error)

GetAlbums : method for GET https://api.spotify.com/v1/albums

func (*Tokens) GetAlbumsTracks

func (t *Tokens) GetAlbumsTracks(albumID string) (*models.AlbumsTracks, error)

GetAlbumsTracks : the method for GET https://api.spotify.com/v1/albums/{id}/tracks

func (*Tokens) GetArtists

func (t *Tokens) GetArtists(artistIDs []string) (*models.Artists, error)

GetArtists : the method for GET https://api.spotify.com/v1/artists

func (*Tokens) GetArtistsAlbums

func (t *Tokens) GetArtistsAlbums(artistID string) (*models.ArtistsAlbums, error)

GetArtistsAlbums : the method for GET https://api.spotify.com/v1/artists/{id}/albums

func (*Tokens) GetArtistsRelatedArtists

func (t *Tokens) GetArtistsRelatedArtists(artistID string) (*models.ArtistsRelatedArtists, error)

GetArtistsRelatedArtists : the method for GET https://api.spotify.com/v1/artists/{id}/related-artists

func (*Tokens) GetArtistsTopTracks

func (t *Tokens) GetArtistsTopTracks(artistID string, country string) (*models.ArtistsTopTracks, error)

GetArtistsTopTracks : the method for GET https://api.spotify.com/v1/artists/{id}/top-tracks

func (*Tokens) GetAudioAnalysis

func (t *Tokens) GetAudioAnalysis(trackID string) (*models.AudioAnalysis, error)

GetAudioAnalysis : the method for GET https://api.spotify.com/v1/audio-analysis/{id}

func (*Tokens) GetBrowseCategories

func (t *Tokens) GetBrowseCategories() (*models.BrowseCategories, error)

GetBrowseCategories : the method for GET https://api.spotify.com/v1/browse/categories

func (*Tokens) GetBrowseCategory

func (t *Tokens) GetBrowseCategory(categoryID string) (*models.BrowseCategory, error)

GetBrowseCategory : the method for GET https://api.spotify.com/v1/browse/categories/{category_id}

func (*Tokens) GetBrowseCategorysPlaylists

func (t *Tokens) GetBrowseCategorysPlaylists(categoryID string) (*models.BrowseCategorysPlaylists, error)

GetBrowseCategorysPlaylists : the method for GET https://api.spotify.com/v1/browse/categories/{category_id}/playlists

func (*Tokens) GetBrowseFeaturedPlaylists

func (t *Tokens) GetBrowseFeaturedPlaylists() (*models.BrowseFeaturedPlaylists, error)

GetBrowseFeaturedPlaylists : the method for GET https://api.spotify.com/v1/browse/featured-playlists

func (*Tokens) GetBrowseNewReleases

func (t *Tokens) GetBrowseNewReleases() (*models.BrowseNewReleases, error)

GetBrowseNewReleases : the method for GET https://api.spotify.com/v1/browse/new-releases

func (*Tokens) GetCurrentUsersPlaylists

func (t *Tokens) GetCurrentUsersPlaylists() (*models.CurrentUsersProfile, error)

GetUsersPlaylists : the method for GET https://api.spotify.com/v1/me/playlists

func (*Tokens) GetCurrentUsersProfile

func (t *Tokens) GetCurrentUsersProfile() (*models.CurrentUsersProfile, error)

GetCurrentUsersProfile : the method for GET https://api.spotify.com/v1/me

func (*Tokens) GetFollowingArtists

func (t *Tokens) GetFollowingArtists() (*models.FollowingArtists, error)

GetFollowingArtists : the method for GET https://api.spotify.com/v1/me/following?type=artist

func (*Tokens) GetInformationAboutUsersCurrentPlayback

func (t *Tokens) GetInformationAboutUsersCurrentPlayback() (*models.InformationAboutUsersCurrentPlayback, error)

FIXME parse json failing GetInformationAboutUsersCurrentPlayback : the method for GET https://api.spotify.com/v1/me/player

func (*Tokens) GetRecentlyPlayedTracks

func (t *Tokens) GetRecentlyPlayedTracks() (*models.RecentlyPlayedTracks, error)

GetRecentlyPlayedTracks : the method for GET https://api.spotify.com/v1/me/player/recently-played

func (*Tokens) GetRecommendations

func (t *Tokens) GetRecommendations() (*models.Recommendations, error)

GetRecommendations : the method for GET https://api.spotify.com/v1/recommendations

func (*Tokens) GetTracks

func (t *Tokens) GetTracks(trackIDs []string) (*models.Tracks, error)

GetTracks : the method for GET https://api.spotify.com/v1/tracks

func (*Tokens) GetUserStatus

func (t *Tokens) GetUserStatus() (string, error)

GetUserStatus : return string

func (*Tokens) GetUsersAvailableDevices

func (t *Tokens) GetUsersAvailableDevices() (*models.UsersAvailableDevices, error)

GetUsersAvailableDevices : the method for GET https://api.spotify.com/v1/me/player/devices

func (*Tokens) GetUsersCurrentlyPlayingTrack

func (t *Tokens) GetUsersCurrentlyPlayingTrack() (*models.UsersCurrentlyPlayingTrack, error)

FIXME parse json failing GetUsersCurrentyPlayingTrack : the method for GET https://api.spotify.com/v1/me/player/currently-playing

func (*Tokens) GetUsersPlaylists

func (t *Tokens) GetUsersPlaylists(userID string) (*models.UsersPlaylists, error)

GetUsersPlaylists : the method for GET https://api.spotify.com/v1/users/{user_id}/playlists

func (*Tokens) GetUsersProfile

func (t *Tokens) GetUsersProfile(userID string) (*models.UsersProfile, error)

GetUsersProfile : the method for GET https://api.spotify.com/v1/me

func (*Tokens) GetUsersSavedAlbums

func (t *Tokens) GetUsersSavedAlbums() (*models.UsersSavedAlbums, error)

GetUsersSavedAlbums : the method for GET https://api.spotify.com/v1/me/albums

func (*Tokens) GetUsersSavedTracks

func (t *Tokens) GetUsersSavedTracks() (*models.UsersSavedTracks, error)

GetUsersSavedTracks : the method for GET https://api.spotify.com/v1/me/tracks

func (*Tokens) PauseUsersPlayback

func (t *Tokens) PauseUsersPlayback() error

PauseUsersPlayback : the method for PUT https://api.spotify.com/v1/me/player/pause

func (*Tokens) Refresh

func (t *Tokens) Refresh() error

Refresh : refreshes AccessToken

func (*Tokens) RemoveAlbumsForCurrentUser

func (t *Tokens) RemoveAlbumsForCurrentUser(albumIDs []string) error

RemoveAlbumsForCurrentUser : the method for DELETE https://api.spotify.com/v1/me/albums?ids={ids}

func (*Tokens) RemoveUsersSavedTracks

func (t *Tokens) RemoveUsersSavedTracks(trackIDs []string) error

RemoveUsersSavedTracks : the method for DELETE https://api.spotify.com/v1/me/tracks

func (*Tokens) SaveAlbums

func (t *Tokens) SaveAlbums(albumIDs []string) error

SaveAlbums : the method for GET https://api.spotify.com/v1/me/albums

func (*Tokens) SaveTracks

func (t *Tokens) SaveTracks(trackIDs []string) error

SaveTracks : the method for PUT https://api.spotify.com/v1/me/tracks

func (*Tokens) SearchAlbums

func (t *Tokens) SearchAlbums(keywords string) (*models.SearchAlbums, error)

SearchAlbums : the method for GET https://api.spotify.com/v1/search

func (*Tokens) SearchArtists

func (t *Tokens) SearchArtists(keywords string) (*models.SearchArtists, error)

SearchArtists : the method for GET https://api.spotify.com/v1/search

func (*Tokens) SearchPlaylists

func (t *Tokens) SearchPlaylists(keywords string) (*models.SearchPlaylists, error)

SearchPlaylists : the method for GET https://api.spotify.com/v1/search

func (*Tokens) SearchTracks

func (t *Tokens) SearchTracks(keywords string) (*models.SearchTracks, error)

SearchTracks : the method for GET https://api.spotify.com/v1/search

func (*Tokens) SeekToPositionInCurrentlyPlayingTrack

func (t *Tokens) SeekToPositionInCurrentlyPlayingTrack(position int) error

SeekToPositionInCurrentlyPlayingTrack : the method for PUT https://api.spotify.com/v1/me/player/seek

func (*Tokens) SetRepeatModeUsersPlayback

func (t *Tokens) SetRepeatModeUsersPlayback(state string) error

SetRepeatModeUsersPlayback : the method for PUT https://api.spotify.com/v1/me/player/repeat

func (*Tokens) SetVolumeUsersPlayback

func (t *Tokens) SetVolumeUsersPlayback(volumePercent int) error

SetVolumeUsersPlayback : the method for PUT https://api.spotify.com/v1/me/player/volume

func (*Tokens) SkipUsersPlaybackToNext

func (t *Tokens) SkipUsersPlaybackToNext() error

SkipUsersPlaybackToNext : the method for POST https://api.spotify.com/v1/me/player/next

func (*Tokens) SkipUsersPlaybackToPrevious

func (t *Tokens) SkipUsersPlaybackToPrevious() error

SkipUsersPlaybackToPrevious : the method for POST https://api.spotify.com/v1/me/player/previous

func (*Tokens) StartResumeUsersPlayback

func (t *Tokens) StartResumeUsersPlayback() error

StartResumeUsersPlayback : the method for PUT https://api.spotify.com/v1/me/player/play

func (*Tokens) StartUsersTrackPlay

func (t *Tokens) StartUsersTrackPlay(trackinfo []string, seekms int) error

StartUsersTrackPlay : the method for PUT https://api.spotify.com/v1/me/player/play

func (*Tokens) ToggleShuffleUsersPlayback

func (t *Tokens) ToggleShuffleUsersPlayback(state bool) error

ToggleShuffleUsersPlayback : the method for PUT https://api.spotify.com/v1/me/player/shuffle

func (*Tokens) TransferUsersPlayback

func (t *Tokens) TransferUsersPlayback(deviceIDs []string) error

TransferUsersPlayback : the method for PUT https://api.spotify.com/v1/me/player

func (*Tokens) UnfollowArtistsOrUsers

func (t *Tokens) UnfollowArtistsOrUsers(unfollowType string, IDs []string) error

UnfollowArtistsOrUsers : the method for DELETE https://api.spotify.com/v1/me/following

func (*Tokens) UnfollowPlaylist

func (t *Tokens) UnfollowPlaylist(ownerID string, playlistID string) error

UnfollowPlaylist : the method for DELETE https://api.spotify.com/v1/users/{owner_id}/playlists/{playlist_id}/followers

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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