class OpenAssets::Protocol::AssetDefinition
The Definition of Open Asset
Attributes
asset_definition_url[RW]
asset_ids[RW]
contract_url[RW]
description[RW]
description_mime[RW]
divisibility[RW]
icon_url[RW]
image_url[RW]
issuer[RW]
link_to_website[RW]
name[RW]
name_short[RW]
proof_of_authenticity[RW]
type[RW]
version[RW]
Public Class Methods
new()
click to toggle source
# File lib/openassets/protocol/asset_definition.rb, line 29 def initialize @asset_ids = [] @version = '1.0' @divisibility = 0 end
parse_json(json)
click to toggle source
Parse the JSON obtained from the json String, and create a AssetDefinition
object. @param
# File lib/openassets/protocol/asset_definition.rb, line 37 def self.parse_json(json) parsed_json = JSON.parse(json) definition = new definition.asset_ids = parsed_json['asset_ids'] definition.name_short = parsed_json['name_short'] definition.name = parsed_json['name'] definition.contract_url = parsed_json['contract_url'] definition.issuer = parsed_json['issuer'] definition.description = parsed_json['description'] definition.description_mime = parsed_json['description_mime'] definition.type = parsed_json['type'] definition.divisibility = parsed_json['divisibility'] definition.link_to_website = parsed_json['link_to_website'] definition.icon_url = parsed_json['icon_url'] definition.image_url = parsed_json['image_url'] definition.version = parsed_json['version'] definition end
Public Instance Methods
include_asset_id?(asset_id)
click to toggle source
# File lib/openassets/protocol/asset_definition.rb, line 56 def include_asset_id?(asset_id) return false if asset_ids.nil? || asset_ids.empty? asset_ids.include?(asset_id) end
to_hash()
click to toggle source
# File lib/openassets/protocol/asset_definition.rb, line 68 def to_hash instance_variables.inject({}) do |result, var| key = var.to_s key.slice!(0) if key.start_with?('@') result.update(key => instance_variable_get(var)) end end
to_json()
click to toggle source
Convert Asset Definition to json format.
# File lib/openassets/protocol/asset_definition.rb, line 62 def to_json h = to_hash h.delete('proof_of_authenticity') h.to_json end
Private Instance Methods
calc_proof_of_authenticity()
click to toggle source
# File lib/openassets/protocol/asset_definition.rb, line 83 def calc_proof_of_authenticity result = false if !asset_definition_url.nil? && link_to_website subject = ssl_certificate_subject return true if !subject.nil? && subject == issuer end result end
clear_poa_cache()
click to toggle source
# File lib/openassets/protocol/asset_definition.rb, line 92 def clear_poa_cache @proof_of_authenticity = nil end
ssl_certificate_subject()
click to toggle source
# File lib/openassets/protocol/asset_definition.rb, line 96 def ssl_certificate_subject cache = OpenAssets::Cache::SSLCertificateCache.new subject = cache.get(asset_definition_url) if subject.nil? client = HTTPClient.new client.redirect_uri_callback = ->(uri, res) {res.header['location'][0]} response = client.get(asset_definition_url, :follow_redirect => true) cert = response.peer_cert unless cert.nil? subjects = cert.subject.to_a o = subjects.find{|x|x[0] == 'O'} if !o.nil? && o.length > 2 subject = o[1] cache.put(asset_definition_url, subject, cert.not_after) end end end subject end