mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-26 14:46:42 +00:00
Swarm: need tools to update/manipulate manifests #3498
This commit is contained in:
parent
bd06091874
commit
769160dd16
2 changed files with 65 additions and 0 deletions
|
|
@ -152,6 +152,43 @@ The output of this command is supposed to be machine-readable.
|
||||||
Prints the swarm hash of file or directory.
|
Prints the swarm hash of file or directory.
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
cli.Command{
|
||||||
|
Name: "manifest",
|
||||||
|
Usage: "update a MANIFEST",
|
||||||
|
ArgsUsage: "manifest COMMAND",
|
||||||
|
Description: `
|
||||||
|
Updates a MANIFEST by adding/removing/updating the hash of a path.
|
||||||
|
`,
|
||||||
|
Subcommands: []cli.Command{
|
||||||
|
{
|
||||||
|
Action: add,
|
||||||
|
Name: "add",
|
||||||
|
Usage: "add a new path to the manifest",
|
||||||
|
ArgsUsage: "<MANIFEST> <path> <hash> [<content-type>]",
|
||||||
|
Description: `
|
||||||
|
Adds a new path to the manifest
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Action: update,
|
||||||
|
Name: "update",
|
||||||
|
Usage: "update the hash for an already existing path in the manifest",
|
||||||
|
ArgsUsage: "<MANIFEST> <path> <newhash> [<newcontent-type>]",
|
||||||
|
Description: `
|
||||||
|
Update the hash for an already existing path in the manifest
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Action: remove,
|
||||||
|
Name: "remove",
|
||||||
|
Usage: "removes a path from the manifest",
|
||||||
|
ArgsUsage: "<MANIFEST> <path>",
|
||||||
|
Description: `
|
||||||
|
Removes a path from the manifest
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
app.Flags = []cli.Flag{
|
app.Flags = []cli.Flag{
|
||||||
|
|
|
||||||
|
|
@ -199,3 +199,31 @@ func (c *client) postRaw(mimetype string, size int64, body io.ReadCloser) (strin
|
||||||
content, err := ioutil.ReadAll(resp.Body)
|
content, err := ioutil.ReadAll(resp.Body)
|
||||||
return string(content), err
|
return string(content), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *client) downloadManifest(mhash string) (manifest, error) {
|
||||||
|
|
||||||
|
mroot := manifest{}
|
||||||
|
req, err := http.NewRequest("GET", c.api + "/bzzr:/" + mhash, nil)
|
||||||
|
if err != nil {
|
||||||
|
return mroot, err
|
||||||
|
}
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return mroot, err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
if resp.StatusCode >= 400 {
|
||||||
|
return mroot, fmt.Errorf("bad status: %s", resp.Status)
|
||||||
|
|
||||||
|
}
|
||||||
|
content, err := ioutil.ReadAll(resp.Body)
|
||||||
|
|
||||||
|
err = json.Unmarshal(content, &mroot)
|
||||||
|
if err != nil {
|
||||||
|
return mroot, fmt.Errorf("Manifest %v is malformed: %v", mhash, err)
|
||||||
|
}
|
||||||
|
return mroot, err
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue