Sha256: f9d8839a3514caec66c199f271fbd659a979835d507e3dde150f1ce3b9df8423
Contents?: true
Size: 1.54 KB
Versions: 1
Compression:
Stored size: 1.54 KB
Contents
# Copyright (C) 2017 Stratumn SAS # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. module AgentClient ## # Represents a link in a Stratumn application class Link include Request include Helper attr_accessor :application, :meta, :state, :link, :link_hash def initialize(application, obj) self.application = application self.link = obj['link'] self.meta = link['meta'] self.state = link['state'] self.link_hash = obj['meta']['linkHash'] application.agent_info['functions'].each do |(method, _)| add_transition_method(method) end end def previous application.get_link(meta['prevLinkHash']) if meta['prevLinkHash'] end def get_branches(tags) application.get_branches(link_hash, tags) end def load application.get_link(link_hash) end def self.load(segment) meta = segment['meta'] 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/#{link_hash}/#{method}" result = post(url, json: args) self.class.new(application, 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_agent_client-0.2.0 | lib/agent_client/link.rb |