The multiaddr package

[ Tags: 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]

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 164 total (3 in the last 30 days)
Rating 0.0 (0 ratings) [clear rating]
  • λ
  • λ
  • λ
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-0.3.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