class HipTail::SQLite3AuthorityProvider

Constants

SQL_GET
SQL_REGISTER
SQL_UNREGISTER

Public Class Methods

new(db) click to toggle source

@return [HipTail::SQLite3AuthorityProvider]

# File lib/hiptail/authority/sqlite3_provider.rb, line 6
def initialize(db)
  @authorities = {}
  @db = db

  build
end

Public Instance Methods

build() click to toggle source

@return [void]

# File lib/hiptail/authority/sqlite3_provider.rb, line 14
  def build
    @db.execute_batch <<-'END_SQL'
      CREATE TABLE IF NOT EXISTS hiptail_authority (
          oauth_id          VARCHAR(255) NOT NULL PRIMARY KEY,
          oauth_secret      VARCHAR(255) NOT NULL,
          authorization_url VARCHAR(255) NOT NULL,
          token_url         VARCHAR(255) NOT NULL,
          room_id           INT UNSIGNED,
          group_id          INT UNSIGNED NOT NULL,
          api_base          VARCHAR(255) NOT NULL,
          created_at        INTEGER NOT NULL
      );
    END_SQL
  end
get(oauth_id) click to toggle source

@abstract @param [String] oauth_id @return [HipTail::Authority]

# File lib/hiptail/authority/sqlite3_provider.rb, line 36
def get(oauth_id)
  unless @authorities.include?(oauth_id)
    begin
      last_rah = @db.results_as_hash
      @db.results_as_hash = true
      @db.execute(SQL_GET, oauth_id) do |row|
        data = row.to_a.select { |f| f[0].is_a?(String) }.map { |f| [ f[0].to_sym, f[1] ] }
        @authorities[oauth_id] = HipTail::Authority.new(Hash[*data.flatten(1)])
        break
      end
    ensure
      @db.results_as_hash = last_rah
    end
  end

  @authorities[oauth_id]
end
register(oauth_id, authority) click to toggle source

@param [String] oauth_id @param [HipTail::Authority] authority @return [HipTail::Authority]

# File lib/hiptail/authority/sqlite3_provider.rb, line 63
def register(oauth_id, authority)
  @authorities[oauth_id] = authority

  row_data = authority.as_hash
  [ :api_base, :authorization_url, :token_url ].each do |key|
    row_data[key] = row_data[key].to_s
  end
  row_data[:created_at] = Time.now.to_i
  @db.execute(SQL_REGISTER, row_data)
end
unregister(oauth_id) click to toggle source

@param [String] oauth_id @return [void]

# File lib/hiptail/authority/sqlite3_provider.rb, line 80
def unregister(oauth_id)
  @authorities.delete(oauth_id)

  @db.execute(SQL_UNREGISTER, oauth_id)
end