lib/stratumn_sdk/link.rb in stratumn_sdk-0.0.1 vs lib/stratumn_sdk/link.rb in stratumn_sdk-0.1.0

- old
+ new

@@ -1,8 +1,11 @@ module StratumnSdk + ## + # Represents a link in a Stratumn application class Link include Request + include Helper attr_accessor :application, :meta, :state, :link, :linkHash def initialize(application, obj) self.application = application @@ -11,18 +14,11 @@ self.meta = link['meta'] self.state = link['state'] self.linkHash = obj['meta']['linkHash'] application.agent_info['functions'].each do |(method, _)| - define_singleton_method(method) do |*args| - - url = "#{application.url}/links/#{linkHash}/#{method}" - - result = post(url, json: args) - - Link.new(application, result) - end + add_transition_method(method) end end def previous application.get_link(meta['prevLinkHash']) if meta['prevLinkHash'] @@ -37,11 +33,28 @@ end def self.load(segment) meta = segment['meta'] - application = Application.load(meta['application'], meta['applicationLocation']) + application = Application.load( + meta['application'], + meta['applicationLocation'] + ) application.get_link(meta['linkHash']) + end + + private + + def add_transition_method(method) + define_singleton_method(method) do |*args| + url = "#{application.url}/links/#{linkHash}/#{method}" + + result = post(url, json: args) + + self.class.new(application, result) + end + + singleton_class.send(:alias_method, underscore(method), method) end end end