Sha256: bbc37a84a8fe4df0a27d9c0c92a769f8fc61d8fe092c634841b8f7a88c5cb806

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

module SalesforceStreamer
  class SalesforceClient
    def initialize(client: Restforce.new)
      @client = client
    end

    def authenticate!
      @client.authenticate!
    end

    def subscribe(*args)
      @client.subscribe(args) do
        yield
      end
    end

    # Returns nil or an instance of Restforce::SObject
    def find_push_topic_by_name(name)
      query = QUERY.dup.gsub(/\s+/, ' ').gsub('{{NAME}}', name)
      @client.query(query).first
    end

    # Returns true or raises an exception if the upsert fails
    def upsert_push_topic(push_topic)
      @client.upsert!('PushTopic', :Id,
                      'Id' => push_topic.id,
                      'Name' => push_topic.name,
                      'ApiVersion' => push_topic.api_version,
                      'Description' => push_topic.description,
                      'NotifyForFields' => push_topic.notify_for_fields,
                      'Query' => push_topic.query)
    end

    private

    QUERY = <<~SOQL.chomp.freeze
      SELECT Id, Name, ApiVersion, Description, NotifyForFields, Query, isActive
      FROM PushTopic
      WHERE Name = '{{NAME}}'
    SOQL
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
salesforce_streamer-0.3.0 lib/salesforce_streamer/salesforce_client.rb
salesforce_streamer-0.2.3 lib/salesforce_streamer/salesforce_client.rb
salesforce_streamer-0.2.2 lib/salesforce_streamer/salesforce_client.rb
salesforce_streamer-0.2.1 lib/salesforce_streamer/salesforce_client.rb
salesforce_streamer-0.2.0 lib/salesforce_streamer/salesforce_client.rb