Git Product home page Git Product logo

open-library's People

Contributors

bspradling avatar shabeebshah avatar

Watchers

 avatar  avatar  avatar

open-library's Issues

Get User Session

Description

Need to have a user session in order to retrieve session information like Reading Log and Lists

By default, Reading Logs are public which doesn't make authentication required. However, users are able to change that setting.

In order to access private information programmatically, it's possible to log in via /account/login with your username and password. This hands back a cookie to use in subsequent requests.

OpenLibrary Auth Documentation

DateTime Parsing

Description

The DateTime fields that appear across the OpenLibrary responses are extremely inconsistent. Figure out the best way to handle the unknown formats.

Examples

  1. ...

Insomnia Client

Description

It's useful to have a GUI to play around with the API while in development of the client. It would be worth sharing, if completed.

Get Author API

Description

Once you have the identifier key of an author of interest, e.g. /authors/OL23919A, you can fetch their complete data by visiting their Author page as .json, .rdf, .yml:

Author Documentation

Get Already Read List

Description

Within the Open Library Reading Log, there are three subsections (Currently Reading, Want to Read, and Already Read) which need to be retrievable via the client.

These are public by default but changeable in the settings which would be dependent on #3 to retrieve.

Endpoint: https://openlibrary.org/people/{{ _.username }}/books/already-read.json

Wiremock Testing

Description

Currently there is limited testing and it would be nice if there was a layer of unit tests that leverages wiremock. While we could use the public APIs, we don't need to spam them until the master branch.

Works API

Description

A Work is a logical collection of similar Editions. "Fantastic Mr. Fox" could be a Work which contains a Spanish translation edition, or perhaps a 2nd edition which has an additional chapter or corrections. Work metadata will include general umbrella information about a book, whereas an Edition will have a publisher, an ISBN, a book-jacket, and other specific information.

Both Work and Edition pages on Open Library (i.e. the pages you navigate to) may also be returned as json or yml (in addition to HTML) by modifying the page URL.

Work pages are available on /works.

Open Library Documentation

Editions API

Description

A Work is a logical collection of similar Editions. "Fantastic Mr. Fox" could be a Work which contains a Spanish translation edition, or perhaps a 2nd edition which has an additional chapter or corrections. Work metadata will include general umbrella information about a book, whereas an Edition will have a publisher, an ISBN, a book-jacket, and other specific information.

Both Work and Edition pages on Open Library (i.e. the pages you navigate to) may also be returned as json or yml (in addition to HTML) by modifying the page URL.

The Edition pages are available on /books.

Open Library Documentation

Automatic Releases with Conventional Commits / PRs

Description

Right now the release process is manual via cargo release, it would be nice to automatically release with every new merge into main and increment the version automatically based on the information contained in the commits or PR directly.

A Pull Request template should be introduced to ensure that the information is contained there.

Get Currently Reading

You can retrieve the currently reading on https://openlibrary.org/people/{username}/books/currently-reading.json.

By default, Reading Logs are public which doesn't make authentication required. However, users are able to change that setting.

In order to access private information programmatically, it's possible to log in via /account/login with your username and password. This hands back a cookie to use in subsequent requests. This would be dependent on #3

OpenLibrary Auth Documentation

Consolidate API Requests

Some of the original APIs added tended to rewrite a lot of the same API functionality and error handling. As of #37, there is a more generic GET request implementation that could be adopted around the repository.

Pull Request Build

Description

Leverage GitHub Actions to build and unit test the code. This should be required to succeed before merging.

Basic Documentation

Currently the README is still empty. It would be nice to have some walkthroughs on how to use, etc. It should be noted that this is an opinionated client at times.

Automatic Releases with Conventional Commits / PRs

Description

Right now the release process is manual via cargo release, it would be nice to automatically release with every new merge into main and increment the version automatically based on the information contained in the commits or PR directly.

A Pull Request template should be introduced to ensure that the information is contained there.

Master Build

Description

The master build should and release the newest version of the package to crates.io

Get Want to Read List

You can retrieve the want to read list on https://openlibrary.org/people/{username}/books/want-to-read.json.

By default, Reading Logs are public which doesn't make authentication required. However, users are able to change that setting.

In order to access private information programmatically, it's possible to log in via /account/login with your username and password. This hands back a cookie to use in subsequent requests. This would be dependent on #3

OpenLibrary Auth Documentation

Example Usage

Description

Often nice to include an example on how someone would use the client. Should include a small example, under examples at the root of the repository.

Refactor BookIdentifier to be Book Search specific

Description

Original implementation thought that BookIdentifier could be the sole way to identify a Book. Now understanding the API more, that's not the case. We should refactor the existing implementation into something more specific to Book Search endpoint and think about a more broader generic Identifier struct.

ISBN API

Description

The ISBN API is a special case and alternative approach to arriving at an Editions page. Instead of "/books", a path of "/isbn" is used, followed by a valid ISBN 10 or 13.

Open Library Documentation

Reading Log Endpoints Always Return 200

Description

Regardless if the Reading Log endpoints return an error, the status code is always 200.

If the user is not authorized to view the private Reading Log, the following response body will be returned:

{
  "error": "Shelf want-to-read not found or not accessible"
}

If it is a valid authenticated request:

{
  "page": 1,
  "reading_log_entries": [
    {
      "work": {
        "title": "Atomic Habits",
        "key": "/works/OL17930368W",
        "author_keys": [
          "/authors/OL7422948A"
        ],
        "author_names": [
          "James Clear"
        ],
        "first_publish_year": 2018,
        "lending_edition_s": null,
        "edition_key": [
          "OL32336498M",
          "OL27918581M",
          "OL26502528M",
          "OL31936190M",
          "OL30515574M",
          "OL30515575M",
          "OL31844060M"
        ],
        "cover_id": null,
        "cover_edition_key": "OL32336498M"
      },
      "logged_edition": "/books/OL32336498M",
      "logged_date": "2021/09/06, 00:44:47"
    }
  ]
}

Implementation Notes

https://github.com/serde-rs/json/issues/181

Consolidate Identifiers

Description

There have been new iterations of identifier implementations that have popped up as we learn more about the overall API. We should consolidate these as possible.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.