Sha256: 64fa87c1e0ccd2a3d86deb1e20f81c5005946b0fb6f73588c9a955cc7837f35b

Contents?: true

Size: 1.18 KB

Versions: 6

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

class EasyPost::Services::Report < EasyPost::Services::Service
  MODEL_CLASS = EasyPost::Models::Report

  # Create a Report
  def create(params = {})
    unless params[:type]
      raise ArgumentError, "Missing 'type' parameter in params" # TODO: replace the error in the error-handling overhaul PR
    end

    type = params.delete(:type)
    url = "reports/#{type}"

    @client.make_request(:post, url, MODEL_CLASS, params)
  end

  # Retrieve a Report
  def retrieve(id)
    @client.make_request(:get, "reports/#{id}", MODEL_CLASS)
  end

  # Retrieve all Report objects
  def all(params = {})
    unless params[:type]
      raise ArgumentError, "Missing 'type' parameter in params" # TODO: replace the error in the error-handling overhaul PR
    end

    type = params.delete(:type)
    url = "reports/#{type}"

    response = @client.make_request(:get, url, MODEL_CLASS, params)
    response.define_singleton_method(:type) { type }
    response
  end

  # Get next page of Report objects
  def get_next_page(collection, page_size = nil)
    url = "reports/#{collection.type}"
    get_next_page_helper(collection, collection.reports, url, MODEL_CLASS, page_size)
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
easypost-5.3.0 lib/easypost/services/report.rb
easypost-5.2.0 lib/easypost/services/report.rb
easypost-5.1.1 lib/easypost/services/report.rb
easypost-5.1.0 lib/easypost/services/report.rb
easypost-5.0.1 lib/easypost/services/report.rb
easypost-5.0.0 lib/easypost/services/report.rb