Sha256: 1c955c76f909e54cf9d9b5e733279b66ba6334cf210b9ee1a500651ffded0c09

Contents?: true

Size: 1.9 KB

Versions: 3

Compression:

Stored size: 1.9 KB

Contents

# frozen_string_literal: true

module ActionNetworkRest
  class Client < Vertebrae::API
    attr_accessor :api_key

    def initialize(options = {}, &block)
      self.api_key = options[:api_key]
      super(options, &block)
    end

    def default_options
      {
        host: 'actionnetwork.org',
        prefix: '/api/v2',
        content_type: 'application/json',
        additional_headers: { 'OSDI-API-Token' => api_key },
        user_agent: 'ruby: ActionNetworkRest'
      }
    end

    def extract_data_from_params(params)
      params.to_json
    end

    ## Helpers to let users do things like `an_client.people.create(params)`

    def events(event_id = nil)
      if @_events&.send(:[], event_id).nil?
        @_events = {} if @_events.nil?

        @_events[event_id] = ActionNetworkRest::Events.new(event_id: event_id, client: self)
      end

      @_events[event_id]
    end

    def event_campaigns(event_campaign_id = nil)
      if @_event_campaigns&.send(:[], event_campaign_id).nil?
        @_event_campaigns = {} if @_event_campaigns.nil?

        @_event_campaigns[event_campaign_id] = ActionNetworkRest::EventCampaigns.new(event_campaign_id, client: self)
      end

      @_event_campaigns[event_campaign_id]
    end

    def entry_point
      @_entry_point ||= ActionNetworkRest::EntryPoint.new(client: self)
    end

    def people
      @_people ||= ActionNetworkRest::People.new(client: self)
    end

    def petitions(petition_id = nil)
      if @_petitions&.send(:[], petition_id).nil?
        @_petitions = {} if @_petitions.nil?

        @_petitions[petition_id] = ActionNetworkRest::Petitions.new(petition_id, client: self)
      end

      @_petitions[petition_id]
    end

    def tags(tag_id = nil)
      if @_tags&.send(:[], tag_id).nil?
        @_tags = {} if @_tags.nil?

        @_tags[tag_id] = ActionNetworkRest::Tags.new(tag_id, client: self)
      end

      @_tags[tag_id]
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
action_network_rest-0.8.1 lib/action_network_rest/client.rb
action_network_rest-0.8.0 lib/action_network_rest/client.rb
action_network_rest-0.7.0 lib/action_network_rest/client.rb