From b6ccc06cdaac80d09da17c25b2f450cd1f1b7914 Mon Sep 17 00:00:00 2001 From: Javier Peletier Date: Sun, 30 Sep 2018 09:51:11 +0200 Subject: swarm/storage/feeds: Final package rename and moved files --- cmd/swarm/feeds.go | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 cmd/swarm/feeds.go (limited to 'cmd/swarm/feeds.go') diff --git a/cmd/swarm/feeds.go b/cmd/swarm/feeds.go new file mode 100644 index 000000000..b7b513556 --- /dev/null +++ b/cmd/swarm/feeds.go @@ -0,0 +1,172 @@ +// Copyright 2016 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see . + +// Command feed allows the user to create and update signed Swarm Feeds +package main + +import ( + "fmt" + "strings" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/crypto" + + "github.com/ethereum/go-ethereum/cmd/utils" + swarm "github.com/ethereum/go-ethereum/swarm/api/client" + "github.com/ethereum/go-ethereum/swarm/storage/feeds" + "gopkg.in/urfave/cli.v1" +) + +func NewGenericSigner(ctx *cli.Context) feeds.Signer { + return feeds.NewGenericSigner(getPrivKey(ctx)) +} + +func getTopic(ctx *cli.Context) (topic feeds.Topic) { + var name = ctx.String(SwarmFeedNameFlag.Name) + var relatedTopic = ctx.String(SwarmFeedTopicFlag.Name) + var relatedTopicBytes []byte + var err error + + if relatedTopic != "" { + relatedTopicBytes, err = hexutil.Decode(relatedTopic) + if err != nil { + utils.Fatalf("Error parsing topic: %s", err) + } + } + + topic, err = feeds.NewTopic(name, relatedTopicBytes) + if err != nil { + utils.Fatalf("Error parsing topic: %s", err) + } + return topic +} + +// swarm feed create [--name ] [--data <0x Hexdata> [--multihash=false]] +// swarm feed update <0x Hexdata> [--multihash=false] +// swarm feed info + +func feedCreateManifest(ctx *cli.Context) { + var ( + bzzapi = strings.TrimRight(ctx.GlobalString(SwarmApiFlag.Name), "/") + client = swarm.NewClient(bzzapi) + ) + + newFeedUpdateRequest := feeds.NewFirstRequest(getTopic(ctx)) + newFeedUpdateRequest.Feed.User = feedGetUser(ctx) + + manifestAddress, err := client.CreateFeedWithManifest(newFeedUpdateRequest) + if err != nil { + utils.Fatalf("Error creating feed manifest: %s", err.Error()) + return + } + fmt.Println(manifestAddress) // output manifest address to the user in a single line (useful for other commands to pick up) + +} + +func feedUpdate(ctx *cli.Context) { + args := ctx.Args() + + var ( + bzzapi = strings.TrimRight(ctx.GlobalString(SwarmApiFlag.Name), "/") + client = swarm.NewClient(bzzapi) + manifestAddressOrDomain = ctx.String(SwarmFeedManifestFlag.Name) + ) + + if len(args) < 1 { + fmt.Println("Incorrect number of arguments") + cli.ShowCommandHelpAndExit(ctx, "update", 1) + return + } + + signer := NewGenericSigner(ctx) + + data, err := hexutil.Decode(args[0]) + if err != nil { + utils.Fatalf("Error parsing data: %s", err.Error()) + return + } + + var updateRequest *feeds.Request + var query *feeds.Query + + if manifestAddressOrDomain == "" { + query = new(feeds.Query) + query.User = signer.Address() + query.Topic = getTopic(ctx) + + } + + // Retrieve a feed update request + updateRequest, err = client.GetFeedRequest(query, manifestAddressOrDomain) + if err != nil { + utils.Fatalf("Error retrieving feed status: %s", err.Error()) + } + + // set the new data + updateRequest.SetData(data) + + // sign update + if err = updateRequest.Sign(signer); err != nil { + utils.Fatalf("Error signing feed update: %s", err.Error()) + } + + // post update + err = client.UpdateFeed(updateRequest) + if err != nil { + utils.Fatalf("Error updating feed: %s", err.Error()) + return + } +} + +func feedInfo(ctx *cli.Context) { + var ( + bzzapi = strings.TrimRight(ctx.GlobalString(SwarmApiFlag.Name), "/") + client = swarm.NewClient(bzzapi) + manifestAddressOrDomain = ctx.String(SwarmFeedManifestFlag.Name) + ) + + var query *feeds.Query + if manifestAddressOrDomain == "" { + query = new(feeds.Query) + query.Topic = getTopic(ctx) + query.User = feedGetUser(ctx) + } + + metadata, err := client.GetFeedRequest(query, manifestAddressOrDomain) + if err != nil { + utils.Fatalf("Error retrieving feed metadata: %s", err.Error()) + return + } + encodedMetadata, err := metadata.MarshalJSON() + if err != nil { + utils.Fatalf("Error encoding metadata to JSON for display:%s", err) + } + fmt.Println(string(encodedMetadata)) +} + +func feedGetUser(ctx *cli.Context) common.Address { + var user = ctx.String(SwarmFeedUserFlag.Name) + if user != "" { + return common.HexToAddress(user) + } + pk := getPrivKey(ctx) + if pk == nil { + utils.Fatalf("Cannot read private key. Must specify --user or --bzzaccount") + } + return crypto.PubkeyToAddress(pk.PublicKey) + +} -- cgit v1.2.3 From 58c0879c2fbc9f88f35ba503674088da23a8a5a7 Mon Sep 17 00:00:00 2001 From: Javier Peletier Date: Tue, 2 Oct 2018 09:32:46 +0200 Subject: swarm/storage/feeds: removed capital Feed throughout --- cmd/swarm/feeds.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cmd/swarm/feeds.go') diff --git a/cmd/swarm/feeds.go b/cmd/swarm/feeds.go index b7b513556..4b34d6d95 100644 --- a/cmd/swarm/feeds.go +++ b/cmd/swarm/feeds.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with go-ethereum. If not, see . -// Command feed allows the user to create and update signed Swarm Feeds +// Command feed allows the user to create and update signed Swarm feeds package main import ( -- cgit v1.2.3 From de01178c18766b9f744acc94fe2b96804f998e40 Mon Sep 17 00:00:00 2001 From: Javier Peletier Date: Wed, 3 Oct 2018 09:15:17 +0200 Subject: swarm/storage/feed: Renamed package --- cmd/swarm/feeds.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'cmd/swarm/feeds.go') diff --git a/cmd/swarm/feeds.go b/cmd/swarm/feeds.go index 4b34d6d95..6806c6cf4 100644 --- a/cmd/swarm/feeds.go +++ b/cmd/swarm/feeds.go @@ -27,15 +27,15 @@ import ( "github.com/ethereum/go-ethereum/cmd/utils" swarm "github.com/ethereum/go-ethereum/swarm/api/client" - "github.com/ethereum/go-ethereum/swarm/storage/feeds" + "github.com/ethereum/go-ethereum/swarm/storage/feed" "gopkg.in/urfave/cli.v1" ) -func NewGenericSigner(ctx *cli.Context) feeds.Signer { - return feeds.NewGenericSigner(getPrivKey(ctx)) +func NewGenericSigner(ctx *cli.Context) feed.Signer { + return feed.NewGenericSigner(getPrivKey(ctx)) } -func getTopic(ctx *cli.Context) (topic feeds.Topic) { +func getTopic(ctx *cli.Context) (topic feed.Topic) { var name = ctx.String(SwarmFeedNameFlag.Name) var relatedTopic = ctx.String(SwarmFeedTopicFlag.Name) var relatedTopicBytes []byte @@ -48,7 +48,7 @@ func getTopic(ctx *cli.Context) (topic feeds.Topic) { } } - topic, err = feeds.NewTopic(name, relatedTopicBytes) + topic, err = feed.NewTopic(name, relatedTopicBytes) if err != nil { utils.Fatalf("Error parsing topic: %s", err) } @@ -65,7 +65,7 @@ func feedCreateManifest(ctx *cli.Context) { client = swarm.NewClient(bzzapi) ) - newFeedUpdateRequest := feeds.NewFirstRequest(getTopic(ctx)) + newFeedUpdateRequest := feed.NewFirstRequest(getTopic(ctx)) newFeedUpdateRequest.Feed.User = feedGetUser(ctx) manifestAddress, err := client.CreateFeedWithManifest(newFeedUpdateRequest) @@ -100,11 +100,11 @@ func feedUpdate(ctx *cli.Context) { return } - var updateRequest *feeds.Request - var query *feeds.Query + var updateRequest *feed.Request + var query *feed.Query if manifestAddressOrDomain == "" { - query = new(feeds.Query) + query = new(feed.Query) query.User = signer.Address() query.Topic = getTopic(ctx) @@ -139,9 +139,9 @@ func feedInfo(ctx *cli.Context) { manifestAddressOrDomain = ctx.String(SwarmFeedManifestFlag.Name) ) - var query *feeds.Query + var query *feed.Query if manifestAddressOrDomain == "" { - query = new(feeds.Query) + query = new(feed.Query) query.Topic = getTopic(ctx) query.User = feedGetUser(ctx) } -- cgit v1.2.3