Coder Social home page Coder Social logo

iptt's Introduction

InterPlanetary Tunnel Toolkit

https://gitlab.com/galacteek/iptt/iptt/-/raw/master/media/img/iptt-256.png

Provides tools to communicate with existing network protocols over IPFS tunnels (libp2p streams).

  • iphttp: Command-line iphttp client (supports SSL)
  • iphttpd: iphttp server (can serve aiohttp apps or just forward to an existing HTTP service)
pip install -U iptt

Checkout the documentation here.

iphttp

iphttp is the command-line client. To make a simple GET request, pass the PeerId with the HTTP path. Use --ssl (or -s) to use SSL encryption:

iphttp QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/doc.txt

iphttp -s QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/doc.txt

Use --maddr to pass the RPC API multiaddr of your kubo node (the default multiaddr is /ip4/127.0.0.1/tcp/5001) :

iphttp --maddr /dns4/localhost/tcp/5010 \
    QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/summary.html

Interactive mode: just pass a PeerId and all requests in the CLI session will be based on that peer.

iphttp -i QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc

The following commands are supported in interactive mode:

  • get(path: str, q={}, h={}): HTTP GET request on path path with query q and HTTP headers h (dict)
  • post(path: str, q={}, data={}, h={}): HTTP POST request on path with post data data, HTTP query q (dict) and HTTP headers h (dict)
get('/')
get('/', q={'arg1': 4})
get('/', h={'X-Important-Header': 'some-value'})

post('/form', q={'arg1': 2}, data={'message': 'Form field data'})
post('/form', data={'message': 'Form field data'})

iphttpd

iphttpd allows you to register an IPFS P2P service for an already running HTTP server, and can also serve an HTTP application from a Python module (only aiohttp apps are supported right now).

Example 1

Serve http://localhost:7000 for the P2P protocol /x/ipfs-http/80/1.0

iphttpd -l localhost:80:7080

Example 2

Serve http://localhost:8080 for the P2P protocol /x/ipfs-http/8000/1.0

iphttpd -l localhost:8000:8080

Example 3

Serve an aiohttp application from Python module iphttpd_apps.helloworld:

iphttpd --serve-aiohttp iphttpd_apps.helloworld

Your module should implement the coroutine create_app(args) and return an aiohttp.web.Application instance that will be used to run the service (see the helloworld service).

Example 4

Serve an application with SSL on port 8200:

iphttpd -s --serve-aiohttp iphttpd_apps.helloworld --cert iphttpd.io.pem --key iphttpd.io-key.pem -l localhost:443:8200

Projects using iptt

License

God bless HTTP, and God bless IPFS license.

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.