class CompaniesHouseHub::Person

Constants

DEFAULT_PER_PAGE
FIND_PATH

Attributes

address[R]
country_of_residence[R]
forename[R]
kind[R]
middle_name[R]
name[R]
nationality[R]
raw_json[R]
surname[R]
title[R]

Public Class Methods

all(options = {}) click to toggle source
# File lib/companies_house_hub/models/person.rb, line 11
def self.all(options = {})
  options[:items_per_page] ||= DEFAULT_PER_PAGE

  company_number = options.delete(:company_number)

  result = get(format_url(FIND_PATH, company_number: company_number), options)

  # For some companies, for some reason, this endpoint returns an error, like this:
  # {
  #   "errors": [
  #     {
  #       "error": "company-psc-not-found",
  #       "type": "ch:service"
  #     }
  #   ]
  # }
  items = result.body.dig(:items) || []

  return [] unless items.any?

  items.map { |person_json| new(person_json) }
end
new(json = {}) click to toggle source
# File lib/companies_house_hub/models/person.rb, line 34
def initialize(json = {})
  @raw_json = json
  @name = json.dig(:name)
  @nationality = json.dig(:nationality)
  @address = Address.new(json.dig(:address))
  @forename = json.dig(:name_elements, :forename)
  @middle_name = json.dig(:name_elements, :middle_name)
  @title = json.dig(:name_elements, :title)
  @surname = json.dig(:name_elements, :surname)
end