module DingSDK::Utils

def self.serialize_request_body(request, request_field_name, serialization_method)

def self.serialize_request_body(request, request_field_name, serialization_method)
  return ['', nil, nil] if request.nil?
  return serialize_content_type(request_field_name, SERIALIZATION_METHOD_TO_CONTENT_TYPE[serialization_method], request) if !request.respond_to?(:fields) || !request.respond_to?(request_field_name)
  request_val = request.send(request_field_name)
  request_fields = request.fields
  request_metadata = nil
  request_fields.each do |f|
    if f.name == request_field_name
      request_metadata = f.metadata[:request]
      break
    end
  end
  raise StandardError, 'invalid request type' if request_metadata.nil?
  serialize_content_type(
    :request, request_metadata.fetch(:media_type, 'application/octet-stream'), request_val
  )
end