Skip to content
This repository was archived by the owner on Nov 12, 2019. It is now read-only.

Releases: haversnail/SpotifyKit

Version 1.1.0

17 Jun 05:11

Choose a tag to compare

Added

  • A standalone web-based mechanism for retrieving temporary access tokens from the Spotify Web API when using the SpotifyKit playground or running the framework's unit tests, hosted on SpotifyKit's GitHub Pages.

Changed

  • Updated the framework to use Swift 4.1. Specifically:
    • Refactored the JSONDecodable, JSONEncodable, and URLEncodable extensions using conditional conformances.
    • Replaced any deprecated symbols with their Swift 4.1 equivalent (e.g., flatMapcompactMap).
  • Renamed the cursor properties latest/earliest to newest/oldest to improve clarity.
  • Modified the design of the documentation pages and refactored the /docs directory.
  • Updated all the developer.spotify.com hyperlinks to reflect the new site.
  • Updated the README with better visuals and an improved roadmap.
  • Updated the build environment for Xcode 9.4.

Fixed

  • Embeds the Cursors type within the CursorPage struct as originally designed (now that SR-5086 has been resolved in Swift 4.1), enabling the compilation of page cursors as concrete types.

Version 1.0.1

30 Dec 02:08

Choose a tag to compare

Added

Changed

  • Updated the README content.

Fixed

  • A URLEncodable bug that kept the project from compiling.

Version 1.0.0

26 Nov 18:19

Choose a tag to compare

This is the first public release of the SpotifyKit framework. As such, the following changes outline all the notable differences and design deviations between SpotifyKit and the Spotify Web API. All changes have been carefully considered and are intended to better standardize SpotifyKit and conform its model and methods to match Swift design convention.

Added

  • An SKRequest class for preparing and sending URL requests to the Web API.
  • JSON Encoding and Decoding mechanisms for the API Object Model.
  • An SKCatalog struct that functions as a request factory for locale-dependent endpoints.
  • An SKPlayer struct that functions as a request factory for the Web API Connect endpoints.
  • An SKSearchResults struct for the Search endpoint response.
  • An SKFeaturedPlaylists struct for the "Get Featured Playlists" endpoint response.
  • Various enumeration types to support other endpoint requests.
  • Extensions to symbols in the SpotifyAuthentication and SpotifyAudioPlayback iOS SDK frameworks.

Changed

  • Object Model:

    • Renamed Paging and Cursor-Based Paging objects to Page and CursorPage, respectively. These types function as Collections.
    • Renamed Private User objects to SKCurrentUser. This type also functions as a request factory for endpoints that are restricted to the current authenticated user.
    • Renamed Play History objects to SKRecentTrack.
    • Renamed beta Currently Playing objects to SKPlaybackState.
    • Refactored Cursor objects as embedded structs with a generic cursor type that depends on the type of elements in the paging collection.
    • Decodes objects without fixed key names or with a variable or number of keys (i.e., External ID objects, External URL objects, etc.) as [String : String] or [String : URL] dictionary objects.
    • Represents objects with both a "simplified" and "full" version as one type, with an optional set of properties for any simplified instances. See the Expandable protocol in the documentation for more details.
  • Object Properties:

    • Changed standardized string attributes to enumeration types (e.g., SKAlbumType, SKDatePrecision, etc.).
    • Renamed all href attributes to url.
    • Renamed properties whose names originally ended in prepositions (e.g., added_at, linked_from, etc.) to descriptive names read as nouns (e.g., dateAdded, trackLinks, etc.).
    • Prefixed all Boolean properties with a linking verb (e.g. “is,” “has,” etc.) asserting the condition about the given object.
    • Converted all strings representing dates or timestamps to a formatted Date type, each with their respective level of precision.
    • Standardized all duration properties as TimeInterval types, converting values to seconds (maintaining millisecond precision).

Removed

  • The type attribute from the following model types (used as a privately-scoped property to verify the object during decoding instead):

    • SKAlbum
    • SKArtist
    • SKAudioFeatures
    • SKPlaylist
    • SKTrack
    • SKTrackLinks
    • SKUser
    • SKCurrentUser
  • Does not include request methods for any Web API Connect endpoints that control playback; this is already handled by the SpotifyAudioPlayback framework.