The multiaddr package

[Tags:bsd3, library, test]

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


[Skip to Readme]

Properties

Versions 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 BSD3
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 repository head: git clone https://github.com/micxjo/hs-multiaddr
Uploaded Fri Feb 26 04:00:04 UTC 2016 by MicxjoFunkcio
Distributions NixOS:0.3.0
Downloads 137 total (8 in the last 30 days)
Votes
0 []
Status Docs available [build log]
Last success reported on 2016-02-26 [all 1 reports]
Hackage Matrix CI

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for multiaddr

Readme for multiaddr-0.3.0

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