Sha256: c1d5250bf2ebb84f20e334c73fdc80e469b2b104c2b8f4d414209e258098a983

Contents?: true

Size: 1.93 KB

Versions: 3

Compression:

Stored size: 1.93 KB

Contents

module Mailroute
  class Admin < Base
    self.collection_name = 'admins'

    def self.collection_path(prefix_options = {}, query_options = nil)
      scope = prefix_options.delete(:scope) || (query_options && query_options.delete(:scope))
      raise 'Scope is missing' unless scope
      check_prefix_options(prefix_options)
      prefix_options, query_options = split_options(prefix_options) if query_options.nil?
      "#{prefix(prefix_options)}admins/#{scope[:name]}/#{scope[:id]}/#{query_string(query_options)}"
    end

    def self.element_path(id, prefix_options = {}, query_options = nil)
      scope = prefix_options.delete(:scope) || (query_options && query_options.delete(:scope))
      raise 'Scope is missing' unless scope
      check_prefix_options(prefix_options)
      prefix_options, query_options = split_options(prefix_options) if query_options.nil?
      "#{prefix(prefix_options)}admins/#{scope[:name]}/#{scope[:id]}/admin/#{URI.parser.escape id.to_s}/#{query_string(query_options)}"
    end

    def element_path
      super(scope)
    end

    def regenerate_api_key
      response = connection.post(element_path + 'regenerate_api_key/', nil, self.class.headers)
      self.class.format.decode(response.body)['api_key']
    end

    def scope
      raise 'invalid state' unless resource_uri =~ /admins\/([^\/]+)\/(\d+)\/admin/
      { :scope => { :id => $2.to_i, :name => $1 } }
    end

    def customer
      if resource_uri =~ /admins\/customer\/(\d+)\/admin/
        @customer ||= Mailroute::Customer.get($1.to_i)
      else
        nil
      end
    end

    def reseller
      if resource_uri =~ /admins\/reseller\/(\d+)\/admin/
        @reseller ||= Mailroute::Reseller.get($1.to_i)
      else
        nil
      end
    end

    def reload
      @customer = @reseller = nil
      super
    end

    def self.get(id, scope)
      find(id, :params => { :scope => { :name => scope.keys.first, :id => scope.values.first } })
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mailroute-0.0.6 lib/mailroute/models/admin.rb
mailroute-0.0.5 lib/mailroute/models/admin.rb
mailroute-0.0.4 lib/mailroute/models/admin.rb