babl 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
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