Skip to content
This repository has been archived by the owner on Jul 29, 2022. It is now read-only.

Releases: readium/r2-shared-kotlin

2.1.0

23 Sep 13:56
3e57eae
Compare
Choose a tag to compare

Take a look at the migration guide

Added

  • (alpha) A new Publication SearchService to search through the resources' content, with a default implementation StringSearchService.
  • ContentProtection.Scheme can be used to identify protection technologies using unique URI identifiers.
  • Link objects from archive-based publication assets (e.g. an EPUB/ZIP) have additional properties for entry metadata.
    "properties" {
        "archive": {
            "entryLength": 8273,
            "isEntryCompressed": true
        }
    }

Changed

  • Upgraded to Kotlin 1.5.31 and Gradle 7.1.1

Fixed

  • Crash with HttpRequest.setPostForm() on Android 6.
  • HREF normalization when a resource path contains special characters.

2.0.0

22 Apr 15:22
7a9140d
Compare
Choose a tag to compare

Take a look at the migration guide

Added

  • HttpFetcher is a new publication fetcher able to serve remote resources through HTTP.
    • The actual HTTP requests are performed with an instance of HttpClient.
  • HttpClient is a new protocol exposing a high level API to perform HTTP requests.
    • DefaultHttpClient is an implementation of HttpClient using standard HttpURLConnection APIs. You can use DefaultHttpClient.Callback to customize how requests are created and even recover from errors, e.g. to implement Authentication for OPDS.
    • You can provide your own implementation of HttpClient to Readium APIs if you prefer to use a third-party networking library.

2.0.0-beta.2

26 Feb 15:35
ae4cbc8
Compare
Choose a tag to compare
2.0.0-beta.2 Pre-release
Pre-release

Take a look at the migration guide

Added

  • Publication.Service.Context now holds a reference to the parent Publication. This can be used to access other services from a given Publication.Service implementation.
  • The default LocatorService implementation can be used to get a Locator from a global progression in the publication.
    • publication.locateProgression(0.5)

Fixed

  • #129 Improve performances when reading deflated ZIP resources.
    • For example, it helps with large image-based FXL EPUB which used to be slow to render.
  • #136 null values in JSON string properties are now properly parsed as nullable types, instead of the string "null"

2.0.0-beta.1

23 Dec 10:34
c411e00
Compare
Choose a tag to compare
2.0.0-beta.1 Pre-release
Pre-release

Take a look at the migration guide

Added

  • PublicationAsset is a new interface which can be used to open a publication from various medium, such as a file, a remote URL or a custom source.
    • File was replaced by FileAsset, which implements PublicationAsset.

Changed

  • Upgraded to Kotlin 1.4.10.
  • Format got merged into MediaType, to simplify the media type APIs.
    • You can use MediaType.of() to sniff the type of a file or bytes.
      • All the MediaType.of() functions are now suspending to prevent deadlocks with runBlocking.
    • MediaType has now optional name and fileExtension properties.
    • Some publication formats can be represented by several media type aliases. Using mediaType.canonicalMediaType() will give you the canonical media type to use, for example when persisting the file type in a database. All Readium APIs are already returning canonical media types, so it only matters if you create a MediaType yourself from its string representation.
  • ContentLayout is deprecated, use publication.metadata.effectiveReadingProgression to determine the reading progression of a publication instead.

2.0.0-alpha.2

29 Oct 09:37
f291944
Compare
Choose a tag to compare
2.0.0-alpha.2 Pre-release
Pre-release

Take a look at the migration guide

Added

  • The Publication Services API allows to extend a Publication with custom implementations of known services. This version ships with a few predefined services:
    • PositionsService provides a list of discrete locations in the publication, no matter what the original format is.
    • CoverService provides an easy access to a bitmap version of the publication cover.
  • The Composite Fetcher API can be used to extend the way publication resources are accessed.
  • Support for exploded directories for any archive-based publication format.
  • Content Protection handles DRM and other format-specific protections in a more systematic way.
    • LCP now ships an LcpContentProtection implementation to be plugged into the Streamer.
    • You can add custom ContentProtection implementations to support other DRMs by providing an instance to the Streamer.

Changed

  • The Publication and Container types were merged together to offer a single interface to a publication's resources.
    • Use publication.get() to read the content of a resource, such as the cover. It will automatically be decrypted if a ContentProtection was attached to the Publication.

Fixed

  • OutOfMemoryError occuring while opening large publications are now caught to prevent crashes. They are reported as Resource.Exception.OutOfMemory.
  • Readium can now open PDF documents of any size without crashing. However, LCP protected PDFs are still limited by the available memory.

2.0.0-alpha.1

11 Aug 13:57
809b3c5
Compare
Choose a tag to compare
2.0.0-alpha.1 Pre-release
Pre-release

Added

Changed

Deprecated

  • R2SyntheticPageList was replaced by the aforementioned Positions List and can be safely removed from your codebase.

Fixed

1.1.6: Merge pull request #84 from readium/develop

11 Jan 01:06
53a945c
Compare
Choose a tag to compare

1.1.5: Merge pull request #82 from readium/fixes/debug

28 Dec 19:40
577fc67
Compare
Choose a tag to compare
source formatting

1.1.4: Revert "use random uuid if no identifier can be found"

09 Sep 17:07
Compare
Choose a tag to compare
This reverts commit 4885423a11ad0c84179361230f9d8b8a7a4aa24a.

1.1.3: Merge pull request #73 from readium/feature/DiViNa

06 Sep 21:52
77bc75d
Compare
Choose a tag to compare
Feature: DiViNa