gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnunet-go-plugins] branch master updated (6f1282c -> 52ce708)


From: gnunet
Subject: [gnunet-go-plugins] branch master updated (6f1282c -> 52ce708)
Date: Thu, 03 Nov 2022 18:36:01 +0100

This is an automated email from the git hooks/post-receive script.

bernd-fix pushed a change to branch master
in repository gnunet-go-plugins.

    from 6f1282c  reclaimid: initial revision.
     new 63c9396  Added reclaimid plugin to Makefile.
     new 52ce708  all: use Utility function from caller.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 Makefile              |  2 +-
 example-c/main.go     |  5 +++++
 example-go/main.go    | 28 +++++++++++++++++++++-------
 example-go/records.go | 12 ++++++------
 reclaimid/main.go     | 22 ++++++++++++++++++----
 reclaimid/records.go  | 33 +++++++++++++++++++--------------
 6 files changed, 70 insertions(+), 32 deletions(-)

diff --git a/Makefile b/Makefile
index 7368b77..ea0678c 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,7 @@
 #
 # SPDX-License-Identifier: AGPL3.0-or-later
 
-SUBDIRS = example-c example-go
+SUBDIRS = example-c example-go reclaimid
 
 all:
        @for i in $(SUBDIRS); do (cd $$i; $(MAKE) $(MFLAGS) $(MYMAKEFLAGS) 
all); done
diff --git a/example-c/main.go b/example-c/main.go
index dcec5a3..aa0e10a 100644
--- a/example-c/main.go
+++ b/example-c/main.go
@@ -73,6 +73,11 @@ func NewCustomPlugin() CustomPlugin {
        return CustomPlugin{}
 }
 
+// SetUtility passes a utility function to the plugin
+// Not used in C-implementation
+func (p *CustomPlugin) SetUtility(arg any) {
+}
+
 //go:embed gui.htpl
 var tpl []byte
 
diff --git a/example-go/main.go b/example-go/main.go
index 7a6f66a..0b46c3d 100644
--- a/example-go/main.go
+++ b/example-go/main.go
@@ -95,19 +95,33 @@ func (p *CustomPlugin) Prefix(t uint32) string {
 // No need to customize code beond this point...
 //======================================================================
 
+// Utility function
+type Utility func(fcn string, args ...any) any
+
 // Plugin is the instance of a custom implementation accessed by the
 // gnunet-go framework
 var Plugin = NewCustomPlugin()
 
 // ExamplePlugin is an example plugin for custom records that implements
 // the zonemaster.Plugin interface.
-type CustomPlugin struct{}
+type CustomPlugin struct {
+       utl Utility
+}
 
 // NewCustomPlugin creates an initialized plugin instance
 func NewCustomPlugin() CustomPlugin {
        return CustomPlugin{}
 }
 
+// SetUtility passes a utility function to the plugin
+func (p *CustomPlugin) SetUtility(arg any) {
+       var ok bool
+       p.utl, ok = arg.(func(fcn string, args ...any) any)
+       if !ok {
+               p.utl = nil
+       }
+}
+
 //go:embed gui.htpl
 var tpl []byte
 
@@ -123,7 +137,7 @@ func (p *CustomPlugin) Value(t uint32, rr []byte) (string, 
error) {
        if err != nil {
                return "", err
        }
-       return rec.Value()
+       return rec.Value(p.utl)
 }
 
 // ToMap converts resource record data into GUI template variables
@@ -132,7 +146,7 @@ func (p *CustomPlugin) ToMap(t uint32, rr []byte) 
(map[string]string, error) {
        if err != nil {
                return nil, err
        }
-       return rec.ToMap()
+       return rec.ToMap(p.utl)
 }
 
 // FromMap converts a GUI template variables into resource record data
@@ -141,7 +155,7 @@ func (p *CustomPlugin) FromMap(t uint32, vars 
map[string]string) ([]byte, error)
        if err != nil {
                return nil, err
        }
-       if err = rec.FromMap(vars); err != nil {
+       if err = rec.FromMap(p.utl, vars); err != nil {
                return nil, err
        }
        return data.Marshal(rec)
@@ -149,9 +163,9 @@ func (p *CustomPlugin) FromMap(t uint32, vars 
map[string]string) ([]byte, error)
 
 // CustomRecord interface impemented by custom types.
 type CustomRecord interface {
-       Value() (string, error)
-       ToMap() (map[string]string, error)
-       FromMap(map[string]string) error
+       Value(Utility) (string, error)
+       ToMap(Utility) (map[string]string, error)
+       FromMap(Utility, map[string]string) error
 }
 
 // Get record instance for given type and data
diff --git a/example-go/records.go b/example-go/records.go
index 9053a4c..e81d21e 100644
--- a/example-go/records.go
+++ b/example-go/records.go
@@ -40,19 +40,19 @@ type MyRecord1 struct {
 }
 
 // Value returns a human-readable representation of the record
-func (rec *MyRecord1) Value() (string, error) {
+func (rec *MyRecord1) Value(_ Utility) (string, error) {
        return string(rec.Text), nil
 }
 
 // ToMap returns the parameter set for the record
-func (rec *MyRecord1) ToMap() (params map[string]string, err error) {
+func (rec *MyRecord1) ToMap(_ Utility) (params map[string]string, err error) {
        params = make(map[string]string)
        params["rectype1_text"] = string(rec.Text)
        return
 }
 
 // FromMap reconstructs the record attributes from parameter list
-func (rec *MyRecord1) FromMap(params map[string]string) error {
+func (rec *MyRecord1) FromMap(_ Utility, params map[string]string) error {
        text, ok := params["rectype1_text"]
        if !ok {
                return errors.New("rectype1_text missing")
@@ -74,12 +74,12 @@ type MyRecord2 struct {
 }
 
 // Value returns a human-readable representation of the record
-func (rec *MyRecord2) Value() (string, error) {
+func (rec *MyRecord2) Value(_ Utility) (string, error) {
        return fmt.Sprintf("var1=%d,<br>var2=%d", rec.Var1, rec.Var2), nil
 }
 
 // ToMap returns the parameter set for the record
-func (rec *MyRecord2) ToMap() (params map[string]string, err error) {
+func (rec *MyRecord2) ToMap(_ Utility) (params map[string]string, err error) {
        params = make(map[string]string)
        params["rectype2_var1"] = strconv.Itoa(int(rec.Var1))
        params["rectype2_var2"] = strconv.Itoa(int(rec.Var2))
@@ -87,7 +87,7 @@ func (rec *MyRecord2) ToMap() (params map[string]string, err 
error) {
 }
 
 // FromMap reconstructs the record attributes from parameter list
-func (rec *MyRecord2) FromMap(params map[string]string) (err error) {
+func (rec *MyRecord2) FromMap(_ Utility, params map[string]string) (err error) 
{
        if rec.Var1, err = asInt[uint32](params, "rectype2_var1"); err != nil {
                return
        }
diff --git a/reclaimid/main.go b/reclaimid/main.go
index fc24ecd..34db340 100644
--- a/reclaimid/main.go
+++ b/reclaimid/main.go
@@ -93,19 +93,33 @@ func (p *CustomPlugin) Prefix(t uint32) string {
 // No need to customize code beond this point...
 //======================================================================
 
+// Utility function
+type Utility func(fcn string, args ...any) any
+
 // Plugin is the instance of a custom implementation accessed by the
 // gnunet-go framework
 var Plugin = NewCustomPlugin()
 
 // ExamplePlugin is an example plugin for custom records that implements
 // the zonemaster.Plugin interface.
-type CustomPlugin struct{}
+type CustomPlugin struct {
+       utl Utility
+}
 
 // NewCustomPlugin creates an initialized plugin instance
 func NewCustomPlugin() CustomPlugin {
        return CustomPlugin{}
 }
 
+// SetUtility passes a utility function to the plugin
+func (p *CustomPlugin) SetUtility(arg any) {
+       var ok bool
+       p.utl, ok = arg.(func(fcn string, args ...any) any)
+       if !ok {
+               p.utl = nil
+       }
+}
+
 //go:embed gui.htpl
 var tpl []byte
 
@@ -121,7 +135,7 @@ func (p *CustomPlugin) Value(t uint32, rr []byte) (string, 
error) {
        if err != nil {
                return "", err
        }
-       return rec.Value()
+       return rec.Value(p.utl)
 }
 
 // ToMap converts resource record data into GUI template variables
@@ -130,7 +144,7 @@ func (p *CustomPlugin) ToMap(t uint32, rr []byte) 
(map[string]string, error) {
        if err != nil {
                return nil, err
        }
-       return rec.ToMap()
+       return rec.ToMap(p.utl)
 }
 
 // FromMap converts a GUI template variables into resource record data
@@ -139,7 +153,7 @@ func (p *CustomPlugin) FromMap(t uint32, vars 
map[string]string) ([]byte, error)
        if err != nil {
                return nil, err
        }
-       if err = rec.FromMap(vars); err != nil {
+       if err = rec.FromMap(p.utl, vars); err != nil {
                return nil, err
        }
        return data.Marshal(rec)
diff --git a/reclaimid/records.go b/reclaimid/records.go
index 6886b31..f08f04d 100644
--- a/reclaimid/records.go
+++ b/reclaimid/records.go
@@ -35,9 +35,9 @@ import (
 
 // ReclaimRecord interface impemented by custom types.
 type ReclaimRecord interface {
-       Value() (string, error)
-       ToMap() (map[string]string, error)
-       FromMap(map[string]string) error
+       Value(Utility) (string, error)
+       ToMap(Utility) (map[string]string, error)
+       FromMap(Utility, map[string]string) error
 }
 
 // Get record instance for given type and data
@@ -82,14 +82,23 @@ type ReclaimAttribute struct {
 }
 
 // Value returns a human-readable representation of the record
-func (rec *ReclaimAttribute) Value() (string, error) {
+func (rec *ReclaimAttribute) Value(inv Utility) (string, error) {
        wrt := new(bytes.Buffer)
        wrt.WriteString(fmt.Sprintf("ID=%s,<br>", encodeBase32GNS(rec.ID)))
        cred := encodeBase32GNS(rec.Credential)
        if len(strings.ReplaceAll(cred, "0", "")) > 0 {
                wrt.WriteString(fmt.Sprintf("Credential=%s,<br>", cred))
        }
-       wrt.WriteString(fmt.Sprintf("Type=%d,<br>", rec.Type))
+       var ok bool
+       var rtype string
+       if inv != nil {
+               rtype, ok = inv("gns_type_name", rec.Type).(string)
+       }
+       if ok {
+               wrt.WriteString(fmt.Sprintf("Type=%s,<br>", rtype))
+       } else {
+               wrt.WriteString(fmt.Sprintf("Type=%d,<br>", rec.Type))
+       }
        wrt.WriteString(fmt.Sprintf("Flags=%d,<br>", rec.Flags))
        name := string(rec.Name)
        val := string(rec.Data)[:rec.DataLen-1]
@@ -98,7 +107,7 @@ func (rec *ReclaimAttribute) Value() (string, error) {
 }
 
 // ToMap returns the parameter set for the record
-func (rec *ReclaimAttribute) ToMap() (params map[string]string, err error) {
+func (rec *ReclaimAttribute) ToMap(inv Utility) (params map[string]string, err 
error) {
        params = make(map[string]string)
        params["reclaim_attribute_id"] = encodeBase32GNS(rec.ID)
        params["reclaim_attribute_credential"] = encodeBase32GNS(rec.Credential)
@@ -110,7 +119,7 @@ func (rec *ReclaimAttribute) ToMap() (params 
map[string]string, err error) {
 }
 
 // FromMap reconstructs the record attributes from parameter list
-func (rec *ReclaimAttribute) FromMap(params map[string]string) error {
+func (rec *ReclaimAttribute) FromMap(inv Utility, params map[string]string) 
error {
        return nil
 }
 
@@ -132,9 +141,7 @@ type ReclaimCredential struct {
 }
 
 // Value returns a human-readable representation of the record
-//
-//nolint:unparam // error-free
-func (rec *ReclaimCredential) Value() (string, error) {
+func (rec *ReclaimCredential) Value(inv Utility) (string, error) {
        wrt := new(bytes.Buffer)
        wrt.WriteString(fmt.Sprintf("ID=%s,<br>", encodeBase32GNS(rec.ID)))
        wrt.WriteString(fmt.Sprintf("Type=%d,<br>", rec.Type))
@@ -146,9 +153,7 @@ func (rec *ReclaimCredential) Value() (string, error) {
 }
 
 // ToMap returns the parameter set for the record
-//
-//nolint:unparam // error-free
-func (rec *ReclaimCredential) ToMap() (params map[string]string, err error) {
+func (rec *ReclaimCredential) ToMap(inv Utility) (params map[string]string, 
err error) {
        params = make(map[string]string)
        params["reclaim_credential_id"] = encodeBase32GNS(rec.ID)
        params["reclaim_credential_type"] = fmt.Sprintf("%d", rec.Type)
@@ -159,7 +164,7 @@ func (rec *ReclaimCredential) ToMap() (params 
map[string]string, err error) {
 }
 
 // FromMap reconstructs the record attributes from parameter list
-func (rec *ReclaimCredential) FromMap(params map[string]string) error {
+func (rec *ReclaimCredential) FromMap(inv Utility, params map[string]string) 
error {
        return nil
 }
 

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]