mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-26 05:27:19 +00:00
36 lines
598 B
Go
36 lines
598 B
Go
|
package rpc
|
||
|
|
||
|
import "encoding/json"
|
||
|
|
||
|
type AllowList map[string]struct{}
|
||
|
|
||
|
func (a *AllowList) UnmarshalJSON(data []byte) error {
|
||
|
var keys []string
|
||
|
err := json.Unmarshal(data, &keys)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
realA := make(map[string]struct{})
|
||
|
|
||
|
for _, k := range keys {
|
||
|
realA[k] = struct{}{}
|
||
|
}
|
||
|
|
||
|
*a = realA
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// MarshalJSON returns *m as the JSON encoding of
|
||
|
func (a *AllowList) MarshalJSON() ([]byte, error) {
|
||
|
var realA map[string]struct{} = *a
|
||
|
keys := make([]string, len(realA))
|
||
|
i := 0
|
||
|
for key := range realA {
|
||
|
keys[i] = key
|
||
|
i++
|
||
|
}
|
||
|
return json.Marshal(keys)
|
||
|
}
|