multiaddr: A network address format

[ bsd3, library, network ] [ Propose Tags ]

Multiaddr is a self-describing network address format supporting a variety of protocols, with both string and binary representations.


[Skip to Readme]

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0, 0.2.0, 0.3.0
Dependencies attoparsec (>=0.13.0.1 && <0.14), base (>=4.7 && <5), base58-bytestring (>=0.1.0 && <0.2.0), bytestring (>=0.10.6.0 && <0.11), cereal (>=0.5.1.0 && <0.6), errors (>=2.1.2 && <2.2), hashable (>=1.2.4.0 && <1.3), text (>=1.2.2.0 && <1.3) [details]
License BSD-3-Clause
Copyright (c) 2016 Micxjo Funkcio
Author Micxjo Funkcio <micxjo@fastmail.com>
Maintainer Micxjo Funkcio <micxjo@fastmail.com>
Category Network
Home page http://github.com/micxjo/hs-multiaddr
Source repo head: git clone https://github.com/micxjo/hs-multiaddr
Uploaded by MicxjoFunkcio at 2016-02-14T22:04:52Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 1801 total (8 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2016-02-14 [all 1 reports]

Readme for multiaddr-0.2.0

[back to package description]

hs-multiaddr

Hackage Build Status

A multiaddr implementation in Haskell. Multiaddr is a self-describing network address format supporting a variety of protocols, with both string and binary representations.

Installation

We're on Hackage, so just add multiaddr to your cabal build-depends.

Usage

import Network.Multiaddr

let Just somewhere = readMultiaddr "/ip4/8.8.8.8/tcp/80"
protocolNames somewhere -- ["ip4", "tcp"]

-- Encapsulation
-- Multiaddr is a monoid, `encapsulate` is just an alias for (<>)
let Just proxy = readMultiaddr "/ip6/::1/tcp/443"
let proxied = proxy `encapsulate` somewhere

toText proxied -- "/ip6/::1/tcp/443/ip4/8.8.8.8/tcp/80"
hasIPv6 proxied -- True

-- Grab an individual part of the address
parts proxied !! 2  -- "/ip4/8.8.8.8"

-- Encode into a ByteString
let bytes = encode proxied

-- Decode and get back the original!
let Just decoded = decode bytes
decoded == proxied -- True