Skip to content

Commit fd69137

Browse files
committed
Initial Hackage release
1 parent a08ca42 commit fd69137

File tree

3 files changed

+6
-10
lines changed

3 files changed

+6
-10
lines changed

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Revision history for spotify
22

3-
## 0.1.0.0 -- 2020-03-18
3+
## 0.1.0.0 -- 2023-06-22
44

5-
* First version. Released on an unsuspecting world.
5+
* First release. Unstable.

README.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
# Spotify Web API bindings for Haskell
22

3-
Built around Servant + Aeson.
3+
Designed to be very high-level (eg. handling token refresh etc. automatically). Though it should be possible to expose more of the lower level functionality if anyone requests it. At the very least, the raw Servant encoding of the API is available in `spotify-servant`, on which the main library depends.
44

5-
Work in progress. Will be put on Hackage once remotely stable.
5+
Designed for use with lenses and/or modern record extensions (`OverloadedRecordDot` etc.), e.g. to work around duplicated identifiers. This allows us to mirror the Spotify API in a methodical way without being too verbose.
66

7-
Designed to be very high-level (eg. handling token refresh etc. automatically). I can think about exposing the lower level functionality if anyone requests it.
8-
9-
Designed for use with lenses and/or modern record extensions, eg. to work around duplicated identifiers. This allows us to mirror the Spotify API in a methodical way without being too verbose. `RecordDotSyntax` will suit us nicely whenever it lands.
10-
11-
All request take place inside a monad implementing `MonadSpotify`. In particular, this abstracts away authentication - we don't need to explicitly pass tokens around. A concrete monad `Spotify` is provided, though you'll often want to roll your own. There is also an instance `MonadSpotify IO` - this caches authentication data to disk, so one should be careful about security. It also creates a new connection `Manager` for every request, which can be expensive. Thus a `State`-like monad is preferred for serious code. Nonetheless, being able to run the functions directly in `IO` can be very convenient, especially from `GHCI`.
7+
All requests take place inside a monad implementing `MonadSpotify`. In particular, this abstracts away authentication, meaning that we don't need to explicitly pass tokens around. A concrete monad `Spotify` is provided, though you'll often want to roll your own. There is also an instance `MonadSpotify IO`, which caches authentication data to disk, so one should be careful about security. It also creates a new connection `Manager` for every request, which can be expensive. Thus a `State`-like monad is preferred for serious code. Nonetheless, being able to run the functions directly in `IO` can be very convenient, especially from `GHCI`.

spotify.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ source-repository head
2020

2121
common common
2222
build-depends:
23-
base >= 4.16,
23+
base >= 4.16 && < 5,
2424
aeson ^>= 2.1.0,
2525
bytestring ^>= 0.11.3,
2626
composition ^>= 1.0.2,

0 commit comments

Comments
 (0)