class HandleSystem::Record

Handle Record entry

@author David Walker

Attributes

data[R]

@return [Hash] the internal hash data

email[R]

@return [String] email address added to record

handle[R]

@return [String] handle identifier

hs_admin[R]

@return [String] handle administrator

url[R]

@return [String] the url we registered

Public Instance Methods

from_json(json) click to toggle source

Populate Record from JSON

@param [JSON] data the handle server record as json

# File lib/handle_system/record.rb, line 55
def from_json(json)
  @data = json
  @handle = json['handle']
  json['values'].each do |part|
    value = part['data']['value']
    @url = value if part['type'] == 'URL'
    @has_admin = value if part['type'] == 'EMAIL'
    @email = value if part['type'] == 'HS_ADMIN'
  end
  self
end
from_values(handle, url, email = nil, hs_admin = nil) click to toggle source

Populate Record from values

@param [String] handle e.g., 20.500.12345/876 @param [String] url the url we want to register @param [String] email [optional] email address to add to record @param [String] hs_admin [optional] handle administrator to add to record

# File lib/handle_system/record.rb, line 33
def from_values(handle, url, email = nil, hs_admin = nil)
  @handle = handle
  @url = url
  @email = email
  @hs_admin = hs_admin

  values = [build_url_field(url)]
  values.push(build_email_field(email)) unless email.nil?
  values.push(build_admin_field(hs_admin)) unless hs_admin.nil?
  @data = {
    'values': values,
    'handle': handle,
    'responseCode': 1
  }
  self
end
json() click to toggle source

@return [<String>] JSON string

# File lib/handle_system/record.rb, line 70
def json
  @data.to_json
end

Private Instance Methods

build_admin_field(hs_admin) click to toggle source

Create a new HS_ADMIN field

@param [String] hs_admin handle administrator

@return [Hash]

# File lib/handle_system/record.rb, line 132
def build_admin_field(hs_admin)
  {
    'index': 100,
    'ttl': 86_400,
    'type': 'HS_ADMIN',
    'timestamp': timestamp,
    'data': {
      'value': {
        'index': 200,
        'handle': hs_admin,
        'permissions': '011111110011'
      },
      'format': 'admin'
    }
  }
end
build_email_field(email) click to toggle source

Create a new EMAIL field

@param [String] email email address

@return [Hash]

# File lib/handle_system/record.rb, line 112
def build_email_field(email)
  {
    'index': 2,
    'ttl': 86_400,
    'type': 'EMAIL',
    'timestamp': timestamp,
    'data': {
      'value': email,
      'format': 'string'
    }
  }
end
build_url_field(url) click to toggle source

Create a new URL field

@param [String] url the url we want to register

@return [Hash]

# File lib/handle_system/record.rb, line 92
def build_url_field(url)
  {
    'index': 1,
    'ttl': 86_400,
    'type': 'URL',
    'timestamp': timestamp,
    'data': {
      'value': url,
      'format': 'string'
    }
  }
end
timestamp() click to toggle source

Current date-time

@return [String]

# File lib/handle_system/record.rb, line 81
def timestamp
  DateTime.now.strftime('%Y-%m-%dT%H:%M:%SZ')
end