module ZendeskAppsTools::APIConnection

Constants

DEFAULT_URL_TEMPLATE
EMAIL_ERROR_MSG
EMAIL_REGEX
PROMPT_FOR_URL
SUBDOMAIN_VALIDATION_PATTERN

taken from zendesk/lib/vars.rb

URL_ERROR_MSG
ZENDESK_URL_VALIDATION_PATTERN

Public Instance Methods

get_connection(encoding = :url_encoded) click to toggle source
# File lib/zendesk_apps_tools/api_connection.rb, line 27
def get_connection(encoding = :url_encoded)
  require 'net/http'
  require 'faraday'
  prepare_api_auth unless @subdomain && @username && @password

  Faraday.new full_url do |f|
    f.request encoding if encoding
    f.adapter :net_http
    f.basic_auth @username, @password
  end
end
prepare_api_auth() click to toggle source
# File lib/zendesk_apps_tools/api_connection.rb, line 17
def prepare_api_auth
  @subdomain ||= ENV['ZAT_URL'] || cache.fetch('subdomain') || get_value_from_stdin(PROMPT_FOR_URL)
  say_error_and_exit URL_ERROR_MSG unless valid_subdomain? || valid_full_url?

  @username  ||= ENV['ZAT_USERNAME'] || cache.fetch('username', @subdomain) || get_value_from_stdin('Enter your username:')
  say_error_and_exit EMAIL_ERROR_MSG unless valid_email?

  @password  ||= ENV['ZAT_PASSWORD'] || cache.fetch('password', @subdomain) || get_password_from_stdin('Enter your password:')
end

Private Instance Methods

full_url() click to toggle source
# File lib/zendesk_apps_tools/api_connection.rb, line 41
def full_url
  valid_full_url? ? @subdomain : (DEFAULT_URL_TEMPLATE % @subdomain)
end
valid_email?() click to toggle source
# File lib/zendesk_apps_tools/api_connection.rb, line 53
def valid_email?
  !!EMAIL_REGEX.match(@username)
end
valid_full_url?() click to toggle source
# File lib/zendesk_apps_tools/api_connection.rb, line 45
def valid_full_url?
  !!ZENDESK_URL_VALIDATION_PATTERN.match(@subdomain)
end
valid_subdomain?() click to toggle source
# File lib/zendesk_apps_tools/api_connection.rb, line 49
def valid_subdomain?
  !!SUBDOMAIN_VALIDATION_PATTERN.match(@subdomain)
end