trpc.group/trpc-go/trpc-go@v1.0.3/http/serialization_get.go (about)

     1  //
     2  //
     3  // Tencent is pleased to support the open source community by making tRPC available.
     4  //
     5  // Copyright (C) 2023 THL A29 Limited, a Tencent company.
     6  // All rights reserved.
     7  //
     8  // If you have downloaded a copy of the tRPC source code from Tencent,
     9  // please note that tRPC source code is licensed under the  Apache 2.0 License,
    10  // A copy of the Apache 2.0 License is included in this file.
    11  //
    12  //
    13  
    14  package http
    15  
    16  import (
    17  	"errors"
    18  
    19  	"trpc.group/trpc-go/trpc-go/codec"
    20  )
    21  
    22  func init() {
    23  	codec.RegisterSerializer(codec.SerializationTypeGet, NewGetSerialization(tag))
    24  }
    25  
    26  // NewGetSerialization initializes the get serialized object.
    27  func NewGetSerialization(tag string) codec.Serializer {
    28  	formSerializer := NewFormSerialization(tag)
    29  	return &GetSerialization{
    30  		formSerializer: formSerializer.(*FormSerialization),
    31  	}
    32  }
    33  
    34  // GetSerialization packages kv structure of the http get request.
    35  type GetSerialization struct {
    36  	formSerializer *FormSerialization
    37  }
    38  
    39  // Unmarshal unpacks kv structure.
    40  func (s *GetSerialization) Unmarshal(in []byte, body interface{}) error {
    41  	return s.formSerializer.Unmarshal(in, body)
    42  }
    43  
    44  // Marshal packages kv structure.
    45  func (s *GetSerialization) Marshal(body interface{}) ([]byte, error) {
    46  	jsonSerializer := codec.GetSerializer(codec.SerializationTypeJSON)
    47  	if jsonSerializer == nil {
    48  		return nil, errors.New("empty json serializer")
    49  	}
    50  	return jsonSerializer.Marshal(body)
    51  }