babl 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d14c27ddc236458258e0d64b27c2f7980ebc3536
4
- data.tar.gz: ee6d8b94246e42439abd7eaaea89305cab9408cc
3
+ metadata.gz: bfccf5f487a05b3c8c4aa22b1021204ef5c44c05
4
+ data.tar.gz: d23c51624462edaad77cc8ee55bbd2ec3ec2f586
5
5
  SHA512:
6
- metadata.gz: a8f2bd5d3fa98994535fea376a0dfd67af41f247c17a0772461936dcdd129535dd88cf0a8c08867a3c4228da6973af07ef572e7cc11f341c91569fbee9837a24
7
- data.tar.gz: a6df3de8427e7acecb27cb3bb10cc372c4b8db34f07d199bd16a32de2d6b7570befe836bcb338196d5b40465e757a8c4b61975a0efbc0778766e6bd2bb431e65
6
+ metadata.gz: bf1064a6549eec01f420aa7d7dc5d65c85d0012776a656fcd0880b9f2cebc15901c82ef655b5a5588b03415f0b6d397013495a2b9d320e28f9ef4374b18fc7da
7
+ data.tar.gz: 691580b6111bab10d54a07e4246bfdbc2238c152fd46c5e12b67fe42635191ab681361d4b2f9c46d475d8019493b5a3b63a3a6798ab1108347a38b6aedb56a80
@@ -5,7 +5,7 @@ require 'babl'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "babl"
8
- spec.version = "0.4.3"
8
+ spec.version = "0.4.4"
9
9
  spec.authors = ["Lars Kluge"]
10
10
  spec.email = ["l@larskluge.com"]
11
11
 
Binary file
Binary file
@@ -2,6 +2,8 @@ require 'quartz'
2
2
  require 'base64'
3
3
  require 'net/http'
4
4
 
5
+ require_relative 'babl/module_response'
6
+
5
7
 
6
8
  module Babl
7
9
  class UnknownModuleError < StandardError; end
@@ -21,12 +23,6 @@ module Babl
21
23
  end
22
24
  end
23
25
 
24
- def self.fetch_payload raw_response
25
- url = raw_response['PayloadUrl']
26
- raw_response['Stdout'] = Base64.strict_encode64(Net::HTTP.get URI(url)) if url != ''
27
- raw_response
28
- end
29
-
30
26
  def self.bin_path
31
27
  system = `which babl-rpc`.strip
32
28
  if system.empty?
@@ -49,29 +45,16 @@ module Babl
49
45
  end
50
46
 
51
47
  def self.module! name, opts = {}
52
- res = fetch_payload(call! name, opts)
53
- stdout = Base64.decode64(res["Stdout"])
54
- exitcode = res['Exitcode']
55
- if exitcode != 0
56
- stderr = Base64.decode64(res["Stderr"])
57
- raise ModuleError.new(stdout: stdout, stderr: stderr, exitcode: exitcode)
48
+ res = call! name, opts
49
+ if res.exitcode != 0
50
+ raise ModuleError.new(stdout: res.stdout, stderr: res.stderr, exitcode: res.exitcode)
58
51
  end
59
- stdout
52
+ res.stdout
60
53
  end
61
54
 
62
55
  def self.call! name, opts = {}
63
- params = {'Name' => name}
64
- if opts[:in]
65
- params['Stdin'] = Base64.encode64(opts[:in])
66
- end
67
- if opts[:env]
68
- params['Env'] = opts[:env].inject({}) { |h, (k,v)| h[k.to_s] = v.to_s; h }
69
- end
70
- if opts[:endpoint]
71
- params['BablEndpoint'] = opts[:endpoint]
72
- end
73
56
  begin
74
- res = client[:babl].call('Module', params)
57
+ ModuleResponse.new(client[:babl].call('Module', options_to_rpc_parameter(name, opts)))
75
58
  rescue Quartz::ResponseError => e
76
59
  if e.message == 'babl-rpc: module name format incorrect'
77
60
  raise ModuleNameFormatIncorrectError.new('Module Name Format Incorrect')
@@ -79,6 +62,30 @@ module Babl
79
62
  raise
80
63
  end
81
64
  end
82
- res
65
+ end
66
+
67
+ def self.options_to_rpc_parameter name, opts
68
+ params = {'Name' => name}
69
+ if input = opts[:in]
70
+ if input.is_a?(ModuleResponse)
71
+ if input.payload_url
72
+ params['PayloadUrl'] = input.payload_url
73
+ else
74
+ params['Stdin'] = Base64.encode64(input.stdout)
75
+ end
76
+ else
77
+ params['Stdin'] = Base64.encode64(input)
78
+ end
79
+ end
80
+ if opts[:payload_url]
81
+ params['PayloadUrl'] = opts[:payload_url]
82
+ end
83
+ if opts[:env]
84
+ params['Env'] = opts[:env].inject({}) { |h, (k,v)| h[k.to_s] = v.to_s; h }
85
+ end
86
+ if opts[:endpoint]
87
+ params['BablEndpoint'] = opts[:endpoint]
88
+ end
89
+ params
83
90
  end
84
91
  end
@@ -0,0 +1,39 @@
1
+ module Babl
2
+ class ModuleResponse
3
+ attr_reader :exitcode, :payload_url
4
+
5
+ def initialize response
6
+ @stdout_raw = response["Stdout"]
7
+ @stderr_raw = response["Stderr"]
8
+ @exitcode = response["Exitcode"]
9
+
10
+ @payload_url = response["PayloadUrl"]
11
+ end
12
+
13
+ def stdout allow_fetch = true
14
+ @stdout ||= begin
15
+ if payload_url.to_s != ""
16
+ fetch_payload if allow_fetch
17
+ else
18
+ o = Base64.decode64(@stdout_raw)
19
+ @stdout_raw = nil
20
+ o
21
+ end
22
+ end
23
+ end
24
+
25
+ def stderr
26
+ @stderr ||= begin
27
+ o = Base64.decode64(@stderr_raw)
28
+ @stderr_raw = nil
29
+ o
30
+ end
31
+ end
32
+
33
+ def fetch_payload
34
+ if payload_url.to_s != ""
35
+ Net::HTTP.get URI(payload_url)
36
+ end
37
+ end
38
+ end
39
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: babl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Kluge
@@ -101,6 +101,7 @@ files:
101
101
  - bin/console
102
102
  - bin/setup
103
103
  - lib/babl.rb
104
+ - lib/babl/module_response.rb
104
105
  homepage: https://github.com/babl-sh/ruby-babl
105
106
  licenses:
106
107
  - MIT