Skip to content

jkawamoto/structpbconv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

structpbconv

MIT License

Converts structpb.Struct to another structure.

Usage

For example, let us assume to convert Payload of a logging.Entry to an ActivityPayload, which is a basic log format in Google Compute Engine.

The type of Payload of logging.Entry is interface{} but it can be casted to *structpb.Struct in most cases.

The following code converts the instance of *structpb.Struct to an instance of ActivityPayload, which is also defined in that code.

Note that to specify a field name, use structpb tag.

import (
	"github.com/golang/protobuf/ptypes/struct"
	"github.com/jkawamoto/structpbconv"
)


type ActivityPayload struct {
	EventTimestampUs string `structpb:"event_timestamp_us"`
	EventType        string `structpb:"event_type"`
	TraceID          string `structpb:"trace_id"`
	Actor            struct {
		User string
	}
	Resource struct {
		Zone string
		Type string
		ID   string
		Name string
	}
	Version      string
	EventSubtype string `structpb:"event_subtype"`
	Operation    struct {
		Zone string
		Type string
		ID   string
		Name string
	}
}


func NewActivityPayload(payload *structpb.Struct) *ActivityPayload {
	var res ActivityPayload
	structpbconv.Convert(payload, &res)
	return &res
}

License

This software is released under the MIT License, see LICENSE.

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages