Sha256: ac790cbc384a839cf9e73d938db5bc47fb3a082c0c52763e5f114b50a8fff6f6
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
module StratumnSdk ## # Represents a link in a Stratumn application class Segment include Request include Helper attr_accessor :agent, :meta, :state, :link, :link_hash def initialize(agent, obj) self.agent = agent self.link = obj['link'] self.meta = link['meta'] self.state = link['state'] self.link_hash = obj['meta']['linkHash'] agent.agent_info['actions'].each do |(method, _)| add_transition_method(method) end end def previous agent.get_segment(meta['prevLinkHash']) if meta['prevLinkHash'] end def find_segments(options = {}) agent.find_segments(options) end def load agent.get_segment(link_hash) end def self.from(segment) agent = Agent.load(segment['meta']['agentUrl']) new(agent, segment) end private def add_transition_method(method) define_singleton_method(method) do |*args| url = "#{agent.url}/segments/#{link_hash}/#{method}" result = post(url, json: args) self.class.new(agent, result) end singleton_class.send(:alias_method, underscore(method), method) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
stratumn_sdk-1.0.0 | lib/stratumn_sdk/segment.rb |