Qualtrics Serialization Go Library ================================== **NOTE:** The Go QSL library does not support fast filtering or partial decoding. It does support full decoding and re-encoding into a smaller, compatible schema. **NOTE:** The schema spec compatibility checking does not play nicely with complex schema declarations. It cannot interpret the compatibility of a union with any schema spec. --- ### Installation `go get gitlab.app-eng.qops.net/golang/qmp/serialization` ### Usage #### Initialize ```golang import qsl "gitlab-app.eng.qops.net/golang/qmp/serialization" // ... err := qsl.RegisterApplication("my-client-name") if err != nil { /* handle */ } ``` #### Read QMessages ```golang qr, err := qsl.NewReader("schema.name.v1") if err != nil { /* handle */ } // ... qm, err := qr.NewMessage(encodedAvroObject) if err != nil { /* handle */ } ``` #### Write QMessages ```golang qw, err := qsl.NewWriter("schema.name.v1") if err != nil { /* handle */ } // Blank QMessage from writer's schema msg, err := qw.NewMessage() if err != nil { /* handle */ } msg.SetTraceID("Look at me, I'm Mr. Meeseeks") // QMessage from a QMessage compatible with writer's schema msg, err = qw.NewFromQMessage(msg) if err != nil { /* handle */ } // QMessage from a map of the writer schema's fields and their values msg, err = qw.NewFromObject(map[string]interface{}{"schema_id":"my.schema.v1"}) if err != nil { /* handle */ } ```