Add AnyObject/Link/Activity callbacks to Deserialize
このコミットが含まれているのは:
コミット
56e7e842d3
1674
streams/streams.go
1674
streams/streams.go
ファイル差分が大きすぎるため省略します
差分を読み込み
|
@ -95,17 +95,17 @@ func generateResolver(types []*defs.Type) *defs.StructDef {
|
|||
}
|
||||
b.WriteString("if obj, ok := i.(vocab.ObjectType); ok {\n")
|
||||
b.WriteString("if t.AnyObjectCallback != nil {\n")
|
||||
b.WriteString("return true, t.AnyObjectCallback(obj)")
|
||||
b.WriteString("return true, t.AnyObjectCallback(obj)\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("if link, ok := i.(vocab.LinkType); ok {\n")
|
||||
b.WriteString("if t.AnyLinkCallback != nil {\n")
|
||||
b.WriteString("return true, t.AnyLinkCallback(link)")
|
||||
b.WriteString("return true, t.AnyLinkCallback(link)\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("if activity, ok := i.(vocab.ActivityType); ok {\n")
|
||||
b.WriteString("if t.AnyActivityCallback != nil {\n")
|
||||
b.WriteString("return true, t.AnyActivityCallback(activity)")
|
||||
b.WriteString("return true, t.AnyActivityCallback(activity)\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("return false, fmt.Errorf(\"The interface did not match any known types: %T\", i)\n")
|
||||
|
@ -144,13 +144,40 @@ func generateResolver(types []*defs.Type) *defs.StructDef {
|
|||
b.WriteString(fmt.Sprintf("// Begin generateResolver for type '%s'\n", t.Name))
|
||||
b.WriteString("for _, typeName := range typeStringVals {\n")
|
||||
b.WriteString(fmt.Sprintf("if typeName == \"%s\" {\n", t.Name))
|
||||
b.WriteString(fmt.Sprintf("if t.%s != nil {\n", name))
|
||||
b.WriteString(fmt.Sprintf("if t.%s != nil || t.AnyObjectCallback != nil || t.AnyLinkCallback != nil || t.AnyActivityCallback != nil {\n", name))
|
||||
b.WriteString(fmt.Sprintf("v := &vocab.%s{}\n", t.Name))
|
||||
b.WriteString("if err := v.Deserialize(m); err != nil {\n")
|
||||
b.WriteString("return err\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString(fmt.Sprintf("as := &%s{v}\n", t.Name))
|
||||
b.WriteString(fmt.Sprintf("return t.%s(as)\n", name))
|
||||
b.WriteString(fmt.Sprintf("if t.%s != nil {\n", name))
|
||||
b.WriteString(fmt.Sprintf("if err := t.%s(as); err != nil {\n", name))
|
||||
b.WriteString("return err\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("var i interface{} = v\n")
|
||||
b.WriteString("if obj, ok := i.(vocab.ObjectType); ok {\n")
|
||||
b.WriteString("if t.AnyObjectCallback != nil {\n")
|
||||
b.WriteString("if err := t.AnyObjectCallback(obj); err != nil {\n")
|
||||
b.WriteString("return err\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("if link, ok := i.(vocab.LinkType); ok {\n")
|
||||
b.WriteString("if t.AnyLinkCallback != nil {\n")
|
||||
b.WriteString("if err := t.AnyLinkCallback(link); err != nil {\n")
|
||||
b.WriteString("return err\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("if activity, ok := i.(vocab.ActivityType); ok {\n")
|
||||
b.WriteString("if t.AnyActivityCallback != nil {\n")
|
||||
b.WriteString("if err := t.AnyActivityCallback(activity); err != nil {\n")
|
||||
b.WriteString("return err\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("}\n")
|
||||
b.WriteString("return nil\n")
|
||||
b.WriteString("} else {\n")
|
||||
b.WriteString("return nil\n")
|
||||
b.WriteString("}\n")
|
||||
|
|
読み込み中…
新しいイシューから参照