Module: OllamaChat::Utils::Fetcher::ResponseMetadata

Defined in:
lib/ollama_chat/utils/fetcher.rb

Overview

A module that extends IO objects with content type metadata and expiration tracking.

This module provides a way to attach MIME content type information and cache expiration details to IO objects, enabling them to carry metadata about their source and caching behavior. It is primarily used by fetcher implementations to decorate response objects with additional context for processing and caching decisions.

Examples:

Extending an IO object with header metadata

io = StringIO.new("content")
io.extend(OllamaChat::Utils::Fetcher::ResponseMetadata)
io.content_type = MIME::Types['text/plain'].first
io.ex = 3600

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#content_typeString

Returns the content type of the object.

Returns:

  • (String)

    the content type of the object.



39
40
41
# File 'lib/ollama_chat/utils/fetcher.rb', line 39

def content_type
  @content_type
end

#exInteger

Returns the expiry value in seconds.

Returns:

  • (Integer)

    the expiry value in seconds.



43
44
45
# File 'lib/ollama_chat/utils/fetcher.rb', line 43

def ex
  @ex
end

#response_reasonString

Returns the HTTP response reason phrase.

Returns:

  • (String)

    the HTTP response reason phrase.



51
52
53
# File 'lib/ollama_chat/utils/fetcher.rb', line 51

def response_reason
  @response_reason
end

#response_statusInteger

Returns the HTTP response status code.

Returns:

  • (Integer)

    the HTTP response status code.



47
48
49
# File 'lib/ollama_chat/utils/fetcher.rb', line 47

def response_status
  @response_status
end

Class Method Details

.failed(msg) ⇒ StringIO

The failed method creates a StringIO object with a text/plain content type.

This method is used to generate a failed response object that can be used when an operation does not succeed. It initializes a new StringIO object and extends it with the current class, setting its content type to text/plain.

Parameters:

  • msg (String)

    the error message to write into the response object.

Returns:

  • (StringIO)

    a StringIO object with text/plain content type



73
74
75
76
77
78
79
# File 'lib/ollama_chat/utils/fetcher.rb', line 73

def self.failed(msg)
  object = StringIO.new.extend(self)
  object.write msg
  object.rewind
  object.content_type = MIME::Types['text/plain'].first
  object
end

Instance Method Details

#http?Boolean

Returns true if the metadata belongs to an HTTP response.

This is determined by the presence of a response status code.

Returns:

  • (Boolean)

    true if the response is an HTTP response, false otherwise.



59
60
61
# File 'lib/ollama_chat/utils/fetcher.rb', line 59

def http?
  !response_status.nil?
end