Class: GeminiCraft::StreamingProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/gemini_craft/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ StreamingProcessor

Returns a new instance of StreamingProcessor.



200
201
202
# File 'lib/gemini_craft/client.rb', line 200

def initialize(client)
  @client = client
end

Instance Method Details

#process_chunk(chunk) ⇒ Object



204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
# File 'lib/gemini_craft/client.rb', line 204

def process_chunk(chunk)
  lines = chunk.split(/\r?\n/)

  lines.each do |line|
    next unless line.start_with?("data: ")

    json_data = line[6..].strip
    next if json_data.empty? || json_data == "[DONE]"

    begin
      data = JSON.parse(json_data)
      content = extract_streaming_content(data)
      yield(content) unless content.empty?
    rescue JSON::ParserError
      @client.send(:log, :debug, "Skipping invalid JSON chunk", { chunk: json_data[0..50] })
    end
  end
end