Merge pull request #243 from koic/add_content_audio
Add `Content::Audio` class for audio content type
This commit is contained in:
commit
2fc4f5e1d2
2 changed files with 39 additions and 0 deletions
|
|
@ -28,5 +28,19 @@ module MCP
|
|||
{ data: data, mimeType: mime_type, annotations: annotations, type: "image" }.compact
|
||||
end
|
||||
end
|
||||
|
||||
class Audio
|
||||
attr_reader :data, :mime_type, :annotations
|
||||
|
||||
def initialize(data, mime_type, annotations: nil)
|
||||
@data = data
|
||||
@mime_type = mime_type
|
||||
@annotations = annotations
|
||||
end
|
||||
|
||||
def to_h
|
||||
{ data: data, mimeType: mime_type, annotations: annotations, type: "audio" }.compact
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -29,5 +29,30 @@ module MCP
|
|||
refute result.key?(:annotations)
|
||||
end
|
||||
end
|
||||
|
||||
class AudioTest < ActiveSupport::TestCase
|
||||
test "#to_h returns correct format per MCP spec" do
|
||||
audio = Audio.new("base64data", "audio/wav")
|
||||
result = audio.to_h
|
||||
|
||||
assert_equal "audio", result[:type]
|
||||
assert_equal "base64data", result[:data]
|
||||
assert_equal "audio/wav", result[:mimeType]
|
||||
end
|
||||
|
||||
test "#to_h with annotations" do
|
||||
audio = Audio.new("base64data", "audio/wav", annotations: { role: "recording" })
|
||||
result = audio.to_h
|
||||
|
||||
assert_equal({ role: "recording" }, result[:annotations])
|
||||
end
|
||||
|
||||
test "#to_h without annotations omits the key" do
|
||||
audio = Audio.new("base64data", "audio/wav")
|
||||
result = audio.to_h
|
||||
|
||||
refute result.key?(:annotations)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue