lib/intercom.rb in intercom-2.5.4 vs lib/intercom.rb in intercom-3.0.0b1
- old
+ new
@@ -1,176 +1,36 @@
require "intercom/version"
+require 'intercom/service/admin'
+require 'intercom/service/company'
+require 'intercom/service/contact'
+require 'intercom/service/conversation'
+require 'intercom/service/event'
+require 'intercom/service/message'
+require 'intercom/service/note'
+require 'intercom/service/subscription'
+require 'intercom/service/segment'
+require 'intercom/service/tag'
+require 'intercom/service/user'
+require 'intercom/options'
+require 'intercom/client'
require "intercom/contact"
require "intercom/user"
require "intercom/company"
require "intercom/note"
require "intercom/tag"
require "intercom/segment"
require "intercom/event"
require "intercom/conversation"
require "intercom/message"
require "intercom/admin"
-require "intercom/count"
require "intercom/request"
require "intercom/subscription"
-require "intercom/notification"
require "intercom/utils"
require "intercom/errors"
require "json"
##
# Intercom is a customer relationship management and messaging tool for web app owners
#
# This library provides ruby bindings for the Intercom API (https://api.intercom.io)
-#
-# == Basic Usage
-# === Configure Intercom with your access credentials
-# Intercom.app_id = "my_app_id"
-# Intercom.app_api_key = "my_api_key"
-# === Make requests to the API
-# Intercom::User.find(:email => "bob@example.com")
-#
module Intercom
- @hostname = "api.intercom.io"
- @protocol = "https"
-
- @endpoints = nil
- @current_endpoint = nil
- @app_id = nil
- @app_api_key = nil
- @rate_limit_details = {}
-
- def self.app_id=(app_id)
- @app_id = app_id
- end
-
- def self.app_id
- @app_id
- end
-
- def self.app_api_key=(app_api_key)
- @app_api_key = app_api_key
- end
-
- def self.app_api_key
- @app_api_key
- end
-
- def self.rate_limit_details=(rate_limit_details)
- @rate_limit_details = rate_limit_details
- end
-
- def self.rate_limit_details
- @rate_limit_details
- end
-
- # This method is obsolete and used to warn of backwards incompatible changes on upgrading
- def self.api_key=(val)
- raise ArgumentError, "#{compatibility_warning_text} #{compatibility_workaround_text} #{related_docs_text}"
- end
-
- private
-
- def self.target_base_url
- raise ArgumentError, "#{configuration_required_text} #{related_docs_text}" if [@app_id, @app_api_key].any?(&:nil?)
- basic_auth_part = "#{@app_id}:#{@app_api_key}@"
- current_endpoint.gsub(/(https?:\/\/)(.*)/, "\\1#{basic_auth_part}\\2")
- end
-
- def self.related_docs_text
- "See https://github.com/intercom/intercom-ruby for usage examples."
- end
-
- def self.compatibility_warning_text
- "It looks like you are upgrading from an older version of the intercom-ruby gem. Please note that this new version (#{Intercom::VERSION}) is not backwards compatible. "
- end
-
- def self.compatibility_workaround_text
- "To get rid of this error please set Intercom.app_api_key and don't set Intercom.api_key."
- end
-
- def self.configuration_required_text
- "You must set both Intercom.app_id and Intercom.app_api_key to use this client."
- end
-
- def self.send_request_to_path(request)
- request.execute(target_base_url)
- rescue Intercom::ServiceUnavailableError => e
- if endpoints.length > 1
- retry_on_alternative_endpoint(request)
- else
- raise e
- end
- end
-
- def self.retry_on_alternative_endpoint(request)
- @current_endpoint = alternative_random_endpoint
- request.execute(target_base_url)
- end
-
- def self.current_endpoint
- return @current_endpoint if @current_endpoint && @endpoint_randomized_at > (Time.now - (60 * 5))
- @endpoint_randomized_at = Time.now
- @current_endpoint = random_endpoint
- end
-
- def self.random_endpoint
- endpoints.shuffle.first
- end
-
- def self.alternative_random_endpoint
- (endpoints.shuffle - [@current_endpoint]).first
- end
-
- def self.post(path, payload_hash)
- send_request_to_path(Intercom::Request.post(path, payload_hash))
- end
-
- def self.delete(path, payload_hash)
- send_request_to_path(Intercom::Request.delete(path, payload_hash))
- end
-
- def self.put(path, payload_hash)
- send_request_to_path(Intercom::Request.put(path, payload_hash))
- end
-
- def self.get(path, params)
- send_request_to_path(Intercom::Request.get(path, params))
- end
-
- def self.check_required_params(params, path=nil) #nodoc
- return if path.eql?("users")
- raise ArgumentError.new("Expected params Hash, got #{params.class}") unless params.is_a?(Hash)
- raise ArgumentError.new("Either email or user_id must be specified") unless params.keys.any? { |key| %W(email user_id).include?(key.to_s) }
- end
-
- def self.protocol #nodoc
- @protocol
- end
-
- def self.protocol=(override) #nodoc
- @protocol = override
- end
-
- def self.hostname #nodoc
- @hostname
- end
-
- def self.hostname=(override) #nodoc
- @hostname = override
- end
-
- def self.endpoint=(endpoint) #nodoc
- self.endpoints = [endpoint]
- @current_endpoint = nil
- end
-
- def self.endpoints=(endpoints) #nodoc
- @endpoints = endpoints
- @current_endpoint = nil
- end
-
- def self.endpoints
- @endpoints || ["#{@protocol}://#{hostname}"]
- end
-
end