class HandleSystem::Record
Handle Record
entry
@author David Walker
Attributes
@return [Hash] the internal hash data
@return [String] email address added to record
@return [String] handle identifier
@return [String] handle administrator
@return [String] the url we registered
Public Instance Methods
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
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
@return [<String>] JSON string
# File lib/handle_system/record.rb, line 70 def json @data.to_json end
Private Instance Methods
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
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
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
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