Class: Stigg::Internal::Type::FileInput Abstract Private

Inherits:
Object
  • Object
show all
Extended by:
Converter
Defined in:
lib/stigg/internal/type/file_input.rb,
sig/stigg/internal/type/file_input.rbs

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.

This class is abstract.

Either Pathname or StringIO, or IO, or Stigg::Internal::Type::FileInput.

Note: when IO is used, all retries are disabled, since many IO` streams are not rewindable.

Class Method Summary collapse

Methods included from Converter

coerce, dump, inspect, inspect, meta_info, new_coerce_state, type_info

Methods included from Util::SorbetRuntimeSupport

#const_missing, #define_sorbet_constant!, #sorbet_constant_defined?, #to_sorbet_type

Class Method Details

.==(other) ⇒ Boolean

Parameters:

  • other (Object)

Returns:



38
# File 'lib/stigg/internal/type/file_input.rb', line 38

def self.==(other) = other.is_a?(Class) && other <= Stigg::Internal::Type::FileInput

.===(other) ⇒ Boolean

Parameters:

  • other (Object)

Returns:



24
25
26
27
28
29
30
31
# File 'lib/stigg/internal/type/file_input.rb', line 24

def self.===(other)
  case other
  in Pathname | StringIO | IO | String | Stigg::FilePart
    true
  else
    false
  end
end

.coerce(value, state:) ⇒ StringIO, Object

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:

  • value (StringIO, String, Object)
  • state (Hash{Symbol=>Object})

    .

    @option state [Boolean] :translate_names

    @option state [Boolean] :strictness

    @option state [HashSymbol=>Object] :exactness

    @option state [Class] :error

    @option state [Integer] :branched

Returns:

  • (StringIO, Object)


58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/stigg/internal/type/file_input.rb', line 58

def coerce(value, state:)
  exactness = state.fetch(:exactness)
  case value
  in String
    exactness[:yes] += 1
    StringIO.new(value)
  in StringIO
    exactness[:yes] += 1
    value
  else
    state[:error] = TypeError.new("#{value.class} can't be coerced into #{StringIO}")
    exactness[:no] += 1
    value
  end
end

.dump(value, state:) ⇒ Pathname, ...

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:

  • value (Pathname, StringIO, IO, String, Object)
  • state (Hash{Symbol=>Object})

    .

    @option state [Boolean] :can_retry

Returns:

  • (Pathname, StringIO, IO, String, Object)


83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/stigg/internal/type/file_input.rb', line 83

def dump(value, state:)
  case value
  in StringIO | String
    # https://datatracker.ietf.org/doc/html/rfc7578#section-4.2
    # while not required, a filename is recommended, and in practice many servers do expect this
    Stigg::FilePart.new(value, filename: "upload")
  in IO
    state[:can_retry] = false
    value.to_path.nil? ? Stigg::FilePart.new(value, filename: "upload") : value
  in Stigg::FilePart if value.content.is_a?(IO)
    state[:can_retry] = false
    value
  else
    value
  end
end

.to_sorbet_typeObject

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:

  • (Object)


103
104
105
# File 'lib/stigg/internal/type/file_input.rb', line 103

def to_sorbet_type
  T.any(Pathname, StringIO, IO, String, Stigg::FilePart)
end