xlogin-apiclient 0.1.3 → 0.1.6

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: a5d1de84a151795ecb712cdf1d9a411afab32709
4
- data.tar.gz: 1894a25a7ce10d72ae0b4829ac376f87f6b7c239
3
+ metadata.gz: 83943d818f1f52aed3bb0d97f36d52473e7a1f42
4
+ data.tar.gz: 399db00e2c8f0dc6f9a74ad3132a6a37433dfec8
5
5
  SHA512:
6
- metadata.gz: 199dd4dd3248199ad21ca3b3f5727cfdeb847ea8184767bb1a84cb19356608a0633dc2546ffc0528362eb174055bb350d0964eae6988a8b0a02358620574e4eb
7
- data.tar.gz: 0216ca99501315becc906df9cba5dc34ba4a56a7cb287f09d1f15059185e1e70d555c09029b0b1d6e561d2c660cefe831e43d8d7cb6d61267e86872607515b1e
6
+ metadata.gz: 44ee7f3f4a7ddbb964d0fa58a3161f83c81ab90cd704f8734fd0c4444821cfaa8b97bfad0b22e3142318f4332827bc03814909a3e13d95c1eba25fe6db19f375
7
+ data.tar.gz: 25603c911d6daf0f972bd658e071129ed84a890c666f3026f657d3c1e2e421a802b92895bc20fe32ca4a0419f9dd8194df36c4675b331ed02a863f6a74fe0a4d
@@ -8,33 +8,27 @@ module Xlogin
8
8
  class APIError < StandardError; end
9
9
 
10
10
  class Client
11
-
12
- def initialize(uri)
13
- @base_uri = URI(uri)
14
- end
15
-
16
- def exec(req = Request.new, &block)
17
- vendor = self.class.name.slice(/\w+$/).downcase
18
- method("exec_#{vendor}").call(req, &block)
11
+ def initialize(base_uri, type:, **args)
12
+ @uri = base_uri
13
+ @type = type
14
+ @args = args
19
15
  end
20
16
 
21
- def method_missing(name, *args, &block)
22
- super unless name =~ /^exec_(\w+)$/
17
+ def cmd(req = Request.new, &block)
18
+ if req.kind_of?(String)
19
+ req, _req = Request.new, req
20
+ req.command = _req
21
+ end
23
22
 
24
- begin
25
- req = args.shift || Request.new
26
- uri = URI(@base_uri)
27
- uri.path = "/vendors/#{$1}/actions"
23
+ req.xlogin = @args
24
+ block.call(req) if block
28
25
 
29
- block.call(req) if block
30
- http(:post, uri, req.to_h)
31
- rescue => e
32
- raise APIError.new(e.message)
33
- end
34
- end
26
+ uri = @uri.dup
27
+ uri.path += "/vendors/#{@type}/actions"
35
28
 
36
- def respond_to_missing?(name, include_private = false)
37
- name =~ /^exec_(\w+)$/
29
+ http(:post, uri, req.to_h)
30
+ rescue => e
31
+ raise APIError.new(e.message)
38
32
  end
39
33
 
40
34
  private
@@ -52,16 +46,33 @@ module Xlogin
52
46
 
53
47
  resp = http.request(req)
54
48
  body = resp.body
55
- body.nil? ? {} : JSON.parse(body)
49
+
50
+ Response.new(body.nil? ? {} : JSON.parse(body))
56
51
  end
52
+ end
57
53
 
54
+ class Factory
55
+ def initialize(uri)
56
+ @base_uri = URI(uri)
57
+ end
58
+
59
+ def create(**args)
60
+ Client.new(@base_uri, args)
61
+ end
58
62
  end
59
63
 
60
64
  class Request < OpenStruct
61
- def initialize(*args)
65
+ def initialize(**args)
62
66
  super(*args)
63
67
  self.captures ||= []
64
68
  end
69
+
70
+ def to_h
71
+ super.delete_if { |k, v| k == :captures && v.empty? }
72
+ end
73
+ end
74
+
75
+ class Response < OpenStruct
65
76
  end
66
77
  end
67
78
  end
@@ -1,5 +1,5 @@
1
1
  module Xlogin
2
2
  module Apiclient
3
- VERSION = "0.1.3"
3
+ VERSION = "0.1.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlogin-apiclient
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-30 00:00:00.000000000 Z
11
+ date: 2018-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler