a41f938cec
As we have seen, dependencies version can prevent the build. We should user lock versions on dependencies that we know work: * Packages are vendored * Add Godep support * Added addtional install step in readme * Fix travis build error
40 lignes
642 o
Go
40 lignes
642 o
Go
package metainfo
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"strconv"
|
|
|
|
"github.com/anacrolix/torrent/bencode"
|
|
)
|
|
|
|
type Node string
|
|
|
|
var (
|
|
_ bencode.Unmarshaler = new(Node)
|
|
)
|
|
|
|
func (n *Node) UnmarshalBencode(b []byte) (err error) {
|
|
var iface interface{}
|
|
err = bencode.Unmarshal(b, &iface)
|
|
if err != nil {
|
|
return
|
|
}
|
|
switch v := iface.(type) {
|
|
case string:
|
|
*n = Node(v)
|
|
case []interface{}:
|
|
func() {
|
|
defer func() {
|
|
r := recover()
|
|
if r != nil {
|
|
err = r.(error)
|
|
}
|
|
}()
|
|
*n = Node(net.JoinHostPort(v[0].(string), strconv.FormatInt(v[1].(int64), 10)))
|
|
}()
|
|
default:
|
|
err = fmt.Errorf("unsupported type: %T", iface)
|
|
}
|
|
return
|
|
}
|