Sha256: ae7499a8aed31f3dfc63079dd7729783442b0fa31d4978ab9fab6afb89e8c121

Contents?: true

Size: 1.04 KB

Versions: 6

Compression:

Stored size: 1.04 KB

Contents

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

    def authenticate!
      @client.authenticate!
    end

    def subscribe(*args, &)
      @client.subscribe(args, &)
    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

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

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
salesforce_streamer-2.12.1 lib/salesforce_streamer/salesforce_client.rb
salesforce_streamer-2.12.0 lib/salesforce_streamer/salesforce_client.rb
salesforce_streamer-2.11.2 lib/salesforce_streamer/salesforce_client.rb
salesforce_streamer-2.11.1 lib/salesforce_streamer/salesforce_client.rb
salesforce_streamer-2.11.0 lib/salesforce_streamer/salesforce_client.rb
salesforce_streamer-2.10.0 lib/salesforce_streamer/salesforce_client.rb