Class: OpenAI::Internal::Util::ReadIOAdapter Private

Inherits:
Object
  • Object
show all
Defined in:
lib/openai/internal/util.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

An adapter that satisfies the IO interface required by ‘::IO.copy_stream`

Instance Method Summary collapse

Constructor Details

#initialize(src, &blk) {|| ... } ⇒ ReadIOAdapter

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of ReadIOAdapter.

Parameters:

  • src (String, Pathname, StringIO, Enumerable<String>)
  • blk (Proc)

Yield Parameters:

  • (String)


453
454
455
456
457
458
459
460
461
462
463
464
465
466
# File 'lib/openai/internal/util.rb', line 453

def initialize(src, &blk)
  @stream =
    case src
    in String
      StringIO.new(src)
    in Pathname
      @closing = true
      src.open(binmode: true)
    else
      src
    end
  @buf = String.new
  @blk = blk
end

Instance Method Details

#closeObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



395
396
397
398
399
400
401
402
403
# File 'lib/openai/internal/util.rb', line 395

def close
  case @stream
  in Enumerator
    OpenAI::Internal::Util.close_fused!(@stream)
  in IO if close?
    @stream.close
  else
  end
end

#close?Boolean?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:



392
# File 'lib/openai/internal/util.rb', line 392

def close? = @closing

#read(max_len = nil, out_string = nil) ⇒ String?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • max_len (Integer, nil) (defaults to: nil)
  • out_string (String, nil) (defaults to: nil)

Returns:

  • (String, nil)


429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
# File 'lib/openai/internal/util.rb', line 429

def read(max_len = nil, out_string = nil)
  case @stream
  in nil
    nil
  in IO | StringIO
    @stream.read(max_len, out_string)
  in Enumerator
    read = read_enum(max_len)
    case out_string
    in String
      out_string.replace(read)
    in nil
      read
    end
  end
    .tap(&@blk)
end