Guest User

Untitled

a guest
Feb 24th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. package broker
  2.  
  3. import (
  4. "encoding/json"
  5. "fmt"
  6. )
  7.  
  8. type ProvisionParameters struct {
  9. RestoreFromLatestSnapshotOf *string `json:"restore_from_latest_snapshot_of"`
  10. }
  11.  
  12. func ParseProvisionParameters(data []byte) (*ProvisionParameters, error) {
  13. var parsedParams provisionParametersParser
  14. err := json.Unmarshal(data, &parsedParams)
  15. if err != nil {
  16. return nil, err
  17. }
  18. if len(parsedParams.invalid) > 0 {
  19. return nil, fmt.Errorf("unknown provision parameters: %v", parsedParams.invalid)
  20. }
  21. return &parsedParams.valid, nil
  22. }
  23.  
  24. type provisionParametersParser struct {
  25. valid ProvisionParameters
  26. invalid map[string]interface{}
  27. }
  28.  
  29. func (p *provisionParametersParser) UnmarshalJSON(bs []byte) error {
  30. if err := json.Unmarshal(bs, &p.valid); err != nil {
  31. return err
  32. }
  33. if err = json.Unmarshal(bs, &p.invalid); err != nil {
  34. return err
  35. }
  36. delete(p.invalid, "restore_from_latest_snapshot_of")
  37. return nil
  38. }
Add Comment
Please, Sign In to add comment