Giter Club home page Giter Club logo

splits-io-api's People

Contributors

cryze avatar dependabot-preview[bot] avatar kadiwa4 avatar wooferzfg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

cryze

splits-io-api's Issues

Upstream the WebAssembly HTTP Client implementation as gloo-http

For the speedrun.com API we use the exact same code. Instead of copy pasting it, we should make it available via some crate that anyone can use. One possibility is to usptream it into the http-client crate, which already has a similar, but really buggy implementation. However I consider those maintainers fairly toxic, so I'm not sure if I really want to upstream the code into that repository.

Additionally for the event stream we are introducing an async WebSocket implementation which we likely also want to upstream somewhere. The http-client crate may not be what we want for that as it doesn't have any WebSocket capabilities and we would need to provide one for their native backends. However for the native implementation we use tokio-tungstenite and the http-client maintainers have personal issues with the tokio maintainers. So that will cause even more problems.

I really just want to make a gloo-http crate (gloo is the JS APIs but as idiomatic Rust, so gloo-http would be ideal), but I'm not sure if making such a crate without having talked to the gloo maintainers beforehand is a good idea.

Partially migrate to rustls

We want to migrate to rustls for the dependencies that support it. This is blocked on hyper-rustls 0.19.0 releasing.

Support WebAssembly

The splits-io-api should work not only on Desktop platforms, but also when targeting the web. For that we'll use the wasm-bindgen ecosystem.

Release a v0.1.0

We soon want to release a version on crates.io, so it can be used from other crates such as livesplit-core.

This is blocked on our dependencies releasing non-preview crates now:

Alternatively

Add methods to the different types

So far we only have free standing functions that resemble the API, but we can do better by providing methods for the different types, that guide us along the API.

So we could do something like this:

let categories = runner::search(&client, "cryze").await?
    .first()?
    .pbs(&client).await?
    .first()?
    .game
    .categories(&client).await?
    .first()?;

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.