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