influencemapping/whos_got_dirt-gem

View on GitHub
lib/whos_got_dirt/responses/list/open_corporates.rb

Summary

Maintainability
A
0 mins
Test Coverage
module WhosGotDirt
  module Responses
    module List
      # Converts corporate groupings from the OpenCorporates API to Popolo format.
      #
      # @see https://api.opencorporates.com/documentation/API-Reference
      class OpenCorporates < Helpers::OpenCorporatesHelper
        @template = {
          '@type' => 'List',
          'name' => '/name',
          'identifiers' => [{
            'identifier' => '/wikipedia_id',
            'scheme' => 'Wikipedia',
          }],
          'links' => [{
            'url' => '/opencorporates_url',
            'note' => 'OpenCorporates page',
          }],
          'created_at' => '/created_at',
          'updated_at' => '/updated_at',
        }

        # Transforms the parsed response body into results.
        #
        # @return [Array<Hash>] the results
        def to_a
          parsed_body['corporate_groupings'].map do |data|
            Result.new('List', renderer.result(data['corporate_grouping']), self).finalize!
          end
        end

        # Returns a list's URL.
        #
        # @param [Hash] result the rendered result
        # @return [String] the list's URL
        def item_url(result)
          query = CGI.parse(env.url.query.to_s)
          url = "#{env.url.scheme}://#{env.url.host}/corporate_groupings/#{CGI.escape(result['name'].to_s)}"
          if query['api_token'].any?
            url += "?api_token=#{CGI.escape(query['api_token'][0].to_s)}"
          end
          url
        end
      end
    end
  end
end