lib/gds_api/publisher.rb



require_relative 'base'
require_relative 'part_methods'

class GdsApi::Publisher < GdsApi::Base
  def publication_for_slug(slug, options = {})
    return nil if slug.nil? or slug == ''

    response = get_json(url_for_slug(slug, options))
    if response
      container = response.dup
      container.extend(GdsApi::PartMethods) if container['parts']
      convert_updated_date(container)
      container
    else
      nil
    end
  end

  def council_for_slug(slug, snac_codes)
    json = post_json(
      "#{@endpoint}/local_transactions/#{slug}/verify_snac.json",
      {'snac_codes' => snac_codes}
    )
    json['snac'] if json
  end

  def council_for_snac_code(snac)
    json = get_json("#{@endpoint}/local_transactions/find_by_snac?snac=#{snac}")
    json.to_hash if json
  end

  def council_for_name(name)
    name = URI.escape(name)
    json = get_json(
      "#{@endpoint}/local_transactions/find_by_council_name?name=#{name}"
    )
    json.to_hash if json
  end

private
  def convert_updated_date(container)
    if container['updated_at'] && container['updated_at'].is_a?(String)
      container.parsed_content['updated_at'] =
        Time.parse(container['updated_at'])
    end
  end

  def base_url
    "#{@endpoint}/publications"
  end
end