1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-07-02 03:28:25 +08:00

switch to multiaddr and use /ipfs/ path in http api

This commit is contained in:
verokarhu
2014-09-30 20:54:13 +03:00
parent 0beff4bb4a
commit 0b0bee6fd5
2 changed files with 20 additions and 16 deletions

View File

@ -30,16 +30,10 @@ var cmdIpfsServeHttp = &commander.Command{
}
func init() {
cmdIpfsServeHttp.Flag.Uint("port", 8080, "Port number")
cmdIpfsServeHttp.Flag.String("hostname", "localhost", "Hostname")
cmdIpfsServeHttp.Flag.String("address", "/ip4/127.0.0.1/tcp/8080", "Listen Address")
}
func serveHttpCmd(c *commander.Command, _ []string) error {
port := c.Flag.Lookup("port").Value.Get().(uint)
if port < 1 || port > 65535 {
return errors.New("invalid port number")
}
conf, err := getConfigDir(c.Parent.Parent)
if err != nil {
return err
@ -68,9 +62,12 @@ func serveHttpCmd(c *commander.Command, _ []string) error {
go dl.Listen()
defer dl.Close()
hostname := c.Flag.Lookup("hostname").Value.Get().(string)
address := fmt.Sprintf("%s:%d", hostname, port)
fmt.Printf("Serving on %s\n", address)
address := c.Flag.Lookup("address").Value.Get().(string)
maddr, err = ma.NewMultiaddr(address)
if err != nil {
return err
}
return h.Serve(address, n)
fmt.Printf("Serving on %s\n", address)
return h.Serve(maddr, n)
}

View File

@ -6,7 +6,9 @@ import (
"net/http"
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gorilla/mux"
ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
core "github.com/jbenet/go-ipfs/core"
)
@ -15,18 +17,23 @@ type handler struct {
}
// Serve starts the http server
func Serve(address string, node *core.IpfsNode) error {
func Serve(address *ma.Multiaddr, node *core.IpfsNode) error {
r := mux.NewRouter()
handler := &handler{&ipfsHandler{node}}
r.HandleFunc("/", handler.postHandler).Methods("POST")
r.PathPrefix("/").Handler(handler).Methods("GET")
r.HandleFunc("/ipfs/", handler.postHandler).Methods("POST")
r.PathPrefix("/ipfs/").Handler(handler).Methods("GET")
http.Handle("/", r)
return http.ListenAndServe(address, nil)
_, host, err := address.DialArgs()
if err != nil {
return err
}
return http.ListenAndServe(host, nil)
}
func (i *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
path := r.URL.Path
path := r.URL.Path[5:]
nd, err := i.ResolvePath(path)
if err != nil {