brettweavnet/outliers

View on GitHub
lib/outliers/provider.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Outliers
  class Provider

    attr_reader :account

    def self.find_by_name(name)
      Outliers::Providers.name_map.fetch name, nil
    end

    def self.exists?(name)
      find_by_name(name) != nil
    end

    def self.connect_to(account)
      provider_name = account.fetch 'provider'

      if exists? provider_name
        find_by_name(provider_name).new account
      else
        raise Outliers::Exceptions::UnknownProvider.new "Invalid provider '#{provider_name}'."
      end
    end

    def self.to_human
      (self.to_s.split('::') - ['Outliers', 'Providers']).map { |p| p.underscore }.join('_').downcase
    end

    def self.resources
      Outliers::Resources.resources.select {|r| r.to_human =~ /^#{to_human}/}
    end

    def self.collections
      Outliers::Resources.collections.select {|r| r.to_human =~ /^#{to_human}/}
    end

    def initialize(account)
      @account = account
      @logger      = Outliers.logger
      settings account.keys_to_sym
    end

    def logger
      @logger
    end

  end
end