Method: Addressable::URI#origin=

Defined in:
lib/addressable/uri.rb

#origin=(new_origin) ⇒ Object

Sets the origin for this URI, serialized to ASCII, as per RFC 6454, section 6.2. This assignment will reset the ‘userinfo` component.

Parameters:

  • new_origin (String, #to_str)

    The new origin component.



1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
# File 'lib/addressable/uri.rb', line 1333

def origin=(new_origin)
  if new_origin
    if !new_origin.respond_to?(:to_str)
      raise TypeError, "Can't convert #{new_origin.class} into String."
    end
    new_origin = new_origin.to_str
    new_scheme = new_origin[/^([^:\/?#]+):\/\//, 1]
    unless new_scheme
      raise InvalidURIError, 'An origin cannot omit the scheme.'
    end
    new_host = new_origin[/:\/\/([^\/?#:]+)/, 1]
    unless new_host
      raise InvalidURIError, 'An origin cannot omit the host.'
    end
    new_port = new_origin[/:([^:@\[\]\/]*?)$/, 1]
  end

  self.scheme = new_scheme
  self.host = new_host
  self.port = new_port
  self.userinfo = nil

  # Reset dependent values
  @userinfo = nil
  @normalized_userinfo = NONE
  @authority = nil
  @normalized_authority = nil
  remove_composite_values

  # Ensure we haven't created an invalid URI
  validate()
end