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
The account’s verified Bitcoin
wallet address.
@return [String]
The account’s verified OpenPGP key fingerprint.
@return [String]
The account identifier.
@return [Integer]
The account’s verified OpenPGP key identifier.
@return [String]
The account nick.
@return [String]
The account’s registration date.
@return [DateTime]
Public Class Methods
Returns account information for the given ‘nick`.
@return [Account]
# File lib/bitcoin/otc/account.rb, line 33 def self.[](nick) self.new(nick) end
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
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
@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
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
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