Giter VIP home page Giter VIP logo

dicoogle-ipfs-storage's People

Contributors

bastiao avatar dependabot[bot] avatar rlebre avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

dicoogle-ipfs-storage's Issues

Support CIDv1

Summary

Heads up:

  • IPFS ecosystem will switch to CIDv1 as the default in the near future (https://github.com/ipfs/ipfs/issues/337)
  • The way CID is extracted from ipfs:// addresses in this project will break when it attempts to read a CIDv1
  • The fix is to use CID library instead of Multihash when parsing ipfs:// addresses

Problem

This code assumes every CID is CIDv0 (looks the same as Multihash, so it is parsed as Multihash here):

                    public InputStream getInputStream() throws IOException {
                        Multihash filePointer = Multihash.fromBase58(location.toString().replaceFirst("ipfs://", ""));

                        byte[] fileContents = new byte[0];
                        try {
                            fileContents = ipfs.cat(filePointer);
                        } catch (IOException e) {
                            logger.error("Failed to retrieve object", e);
                            return null;
                        }

Try parsing ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi โ€“ it is not Base58 (it is CIDv1 in Base32), so will throw an exception.

Solution

Always assume localtion is a CID and parse it using a library that understands CIDv1.

You can use CID implementation from java-cid, you can also peek at how CIDs are used in Peergos

See:

Happy to answer any questions / guide

cc @rlebre for awareness

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.