class Acme::Client::Resources::Order

def assign_attributes(url: nil, status:, expires:, finalize_url:, authorization_urls:, identifiers:, certificate_url: nil)

def assign_attributes(url: nil, status:, expires:, finalize_url:, authorization_urls:, identifiers:, certificate_url: nil)
  @url = url
  @status = status
  @expires = expires
  @finalize_url = finalize_url
  @authorization_urls = authorization_urls
  @identifiers = identifiers
  @certificate_url = certificate_url
end

def authorizations

def authorizations
  @authorization_urls.map do |authorization_url|
    @client.authorization(url: authorization_url)
  end
end

def certificate(force_chain: nil)

def certificate(force_chain: nil)
  if certificate_url
    @client.certificate(url: certificate_url, force_chain: force_chain)
  else
    raise Acme::Client::Error::CertificateNotReady, 'No certificate_url to collect the order'
  end
end

def finalize(csr:)

def finalize(csr:)
  assign_attributes(**@client.finalize(url: finalize_url, csr: csr).to_h)
  true
end

def initialize(client, **arguments)

def initialize(client, **arguments)
  @client = client
  assign_attributes(**arguments)
end

def reload

def reload
  if url.nil?
    raise Acme::Client::Error::OrderNotReloadable, 'Finalized orders are not reloadable for this CA'
  end
  assign_attributes(**@client.order(url: url).to_h)
  true
end

def to_h

def to_h
  {
    url: url,
    status: status,
    expires: expires,
    finalize_url: finalize_url,
    authorization_urls: authorization_urls,
    identifiers: identifiers,
    certificate_url: certificate_url
  }
end