(field *pb.Field)
| 7 | ) |
| 8 | |
| 9 | func decodeField(field *pb.Field) (interface{}, error) { |
| 10 | val := field.GetValue() |
| 11 | if val == nil { |
| 12 | return nil, nil |
| 13 | } |
| 14 | |
| 15 | switch v := val.(type) { |
| 16 | case *pb.Field_Number: |
| 17 | return v.Number, nil |
| 18 | case *pb.Field_Str: |
| 19 | return v.Str, nil |
| 20 | case *pb.Field_Boolean: |
| 21 | return v.Boolean, nil |
| 22 | case *pb.Field_Object: |
| 23 | return decodeObject(v.Object.GetItems()) |
| 24 | case *pb.Field_Array: |
| 25 | return decodeArray(v.Array.GetItems()) |
| 26 | case *pb.Field_Link: |
| 27 | // TODO: IMPLEMENT FOLLOWING LINKS |
| 28 | return nil, nil |
| 29 | } |
| 30 | |
| 31 | return nil, fmt.Errorf("unknown type for Field '%s'", field.Key) |
| 32 | } |
| 33 | |
| 34 | func decodeObject(fields map[string]*pb.Field) (map[string]interface{}, error) { |
| 35 | out := make(map[string]interface{}, len(fields)) |
no test coverage detected