class Bitcoin::OTC::Account

Represents a ‘#bitcoin-otc` user account.

@example Checking whether a nick exists

Bitcoin::OTC::Account.exists?('jhacker')  #=> false

@example Enumerating all accounts

Bitcoin::OTC::Account.each { |account| p account }

@example Obtaining information about an account

account = Bitcoin::OTC::Account['bendiken']
account.nick            #=> "bendiken"
account.id              #=> 5174
account.keyid           #=> "74D266C6748B3546"
account.fingerprint     #=> "FE0A49F7154638A73DBF0EFD74D266C6748B3546"
account.bitcoinaddress  #=> "1Es4dCurqKxNSqK5W8Adb8WKTbrvKrDdQZ"
account.registered_at   #=> #<DateTime: 2012-10-08T02:43:34+00:00>
account.rating          #=> 7

@example Enumerating ratings for an account

account = Bitcoin::OTC::Account['bendiken']
account.ratings.each { |rating| p rating }

Attributes

bitcoinaddress[R]

The account’s verified Bitcoin wallet address.

@return [String]

fingerprint[R]

The account’s verified OpenPGP key fingerprint.

@return [String]

id[R]

The account identifier.

@return [Integer]

keyid[R]

The account’s verified OpenPGP key identifier.

@return [String]

nick[R]

The account nick.

@return [String]

registered_at[R]

The account’s registration date.

@return [DateTime]

Public Class Methods

[](nick) click to toggle source

Returns account information for the given ‘nick`.

@return [Account]

# File lib/bitcoin/otc/account.rb, line 33
def self.[](nick)
  self.new(nick)
end
each(&block) click to toggle source

Enumerates every ‘#bitcoin-otc` user account.

@yield [account] each account @yieldparam [Account] account @yieldreturn [void] ignored @return [Enumerator]

# File lib/bitcoin/otc/account.rb, line 52
def self.each(&block)
  if block_given?
    entries = Client.load('viewgpg.php')
    entries.each do |entry|
      block.call(self.new(entry))
    end
  end
  to_enum
end
exists?(nick) click to toggle source

Returns ‘true` if the given `nick` is registered.

@return [Boolean]

# File lib/bitcoin/otc/account.rb, line 41
def self.exists?(nick)
  !(Client.load('viewgpg.php', :nick => nick).empty?)
end
new(nick_or_data) click to toggle source

@overload initialize(nick)

@param  [String] nick

@overload initialize(data)

@param  [Hash] data
# File lib/bitcoin/otc/account.rb, line 67
def initialize(nick_or_data)
  case nick_or_data
    when Hash # pass through
    when String
      @nick = nick_or_data.to_s
      entries = Client.load('viewgpg.php', :nick => @nick)
      raise ArgumentError, "unknown #bitcoin-otc nick '#{@nick}'" if entries.empty?
      nick_or_data = entries.first
    else
      raise TypeError, "expected a String or Hash, but got #{nick_or_data.inspect}"
  end

  nick_or_data.each do |attr, value|
    case attr.to_sym
      when :id
        value = value.to_i
      when :registered_at
        value = DateTime.strptime(value, '%s') unless value.is_a?(DateTime)
    end
    self.instance_variable_set("@#{attr}", value)
  end
end

Public Instance Methods

rating() click to toggle source

Returns the rating for this account.

@return [Integer]

# File lib/bitcoin/otc/account.rb, line 130
def rating
  self.ratings.inject(0) { |sum, rating| sum += rating.to_i }
end
ratings() click to toggle source

Returns the rating entries for this account.

@return [Array<Rating>]

# File lib/bitcoin/otc/account.rb, line 138
def ratings
  entries = Client.load('viewratingdetail.php', :nick => self.nick)
  entries.map { |entry| Rating.new(entry) }
end