xlogin-apiclient 0.1.0 → 0.2.3

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
- SHA1:
3
- metadata.gz: 1f830ca039a85ad17651cfa9d7672222fca132f5
4
- data.tar.gz: 06d6a6940577cdfe31d0a792d3bcf86bbf75f1f1
2
+ SHA256:
3
+ metadata.gz: 6dca064e980df5e83c597516e739bf0584b76cca07ff0c64cfdbf54a2639d73e
4
+ data.tar.gz: 995a1bf61ae4a136f8912bc56091c631d1fe0c56a11b1a4a6a3c7b3cf480363c
5
5
  SHA512:
6
- metadata.gz: 6f1f3bd9fa7ec9844c96c858c42a6121bc758f7aa22598789ecc32544b0463965f828f66a2992cf679f7b19531cd7f99c93b4f801a20c6dd6801842ffdedbd34
7
- data.tar.gz: f65d7f5a350439460660ee76ff1680dfce37fffffc9aee41399a5b22b75191053c2842e40600c07a11c942968dba1331a6464b2adf787f01ce7115024dec3441
6
+ metadata.gz: 070aa6268f12f9fa062486d084ffbe16026994509a470014db6042bde342a4db6fa1cf8bfa54e12083f4b30f10f04c461a6a5173bc42264708b8afaa22281d90
7
+ data.tar.gz: abfd59a5182a3905b0654efa70f4174a30f17e7901261015056e762b657f897e15417081559c0aec1fd9d66ed7eb743c5053d0517b32c662f0f9f268e7a3b3b2
@@ -1,53 +1,48 @@
1
1
  require 'json'
2
2
  require 'net/http'
3
- require 'ostruct'
3
+ require 'addressable/uri'
4
4
  require "xlogin/apiclient/version"
5
5
 
6
6
  module Xlogin
7
- module APIClient
8
- class APIError < StandardError; end
7
+ class APIClient
8
+ class Error < StandardError; end
9
9
 
10
- class Client
10
+ class << self
11
+ attr_accessor :base_url
12
+ end
11
13
 
12
- def initialize(uri)
13
- @base_uri = URI(uri)
14
- end
14
+ attr_reader :type, :args
15
15
 
16
- def run(vendor, req = Request.new, &block)
17
- uri = URI(@base_uri)
18
- uri.path = "/vendors/#{vendor}/actions"
16
+ def initialize(base_url: self.class.base_url, **args)
17
+ raise Error.new('base_url not defined') unless base_url
19
18
 
20
- block.call(req) if block
21
- http(:post, uri, req.to_h)
22
- rescue => e
23
- raise APIError.new(e.message)
24
- end
19
+ @uri = Addressable::URI.parse(base_url)
20
+ @type = args.delete(:type)
21
+ @args = args
22
+ end
25
23
 
26
- private
27
- def http(method, uri, **args)
28
- http = Net::HTTP.new(uri.host, uri.port)
24
+ def cmd(args)
25
+ params = {driver: @type, target: @args, command: args}
26
+ resp = request(**params.transform_keys(&:to_sym))
27
+ resp['payload'].join
28
+ end
29
29
 
30
- klass = Net::HTTP.const_get(method.to_s.capitalize)
31
- req = klass.new(uri.path)
32
- req["Accept"] = "application/json"
30
+ private
31
+ def request(**params)
32
+ uri = @uri.dup
33
+ uri.query = "q=#{URI.encode_www_form_component(JSON.generate(params))}"
33
34
 
34
- unless args.empty?
35
- req["Content-Type"] = "application/json"
36
- req.body = JSON.dump(args)
37
- end
35
+ req = Net::HTTP::Get.new(uri.request_uri)
36
+ req["Accept"] = "application/json"
38
37
 
39
- resp = http.request(req)
40
- body = resp.body
41
- body.nil? ? {} : JSON.parse(body)
42
- end
38
+ http = Net::HTTP.new(uri.host, uri.port)
39
+ resp = http.request(req)
40
+ raise Error.new(resp.message) unless resp.code =~ /^2[0-9]{2}$/
43
41
 
44
- end
42
+ data = resp.body ? JSON.parse(resp.body) : {}
43
+ raise Error.new(data['error']) unless data['success']
45
44
 
46
- class Request < OpenStruct
47
- def initialize(*args)
48
- super(*args)
49
- self.captures ||= []
50
- end
45
+ return data
51
46
  end
52
47
  end
53
48
  end
@@ -1,5 +1,5 @@
1
1
  module Xlogin
2
2
  module Apiclient
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.3"
4
4
  end
5
5
  end
@@ -25,4 +25,6 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_development_dependency "bundler", "~> 1.17"
27
27
  spec.add_development_dependency "rake", "~> 10.0"
28
+
29
+ spec.add_dependency 'addressable'
28
30
  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.0
4
+ version: 0.2.3
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: 2021-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: addressable
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: API client for xlogin-api.
42
56
  email:
43
57
  - haccht@users.noreply.github.com
@@ -75,8 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
89
  - !ruby/object:Gem::Version
76
90
  version: '0'
77
91
  requirements: []
78
- rubyforge_project:
79
- rubygems_version: 2.6.14.1
92
+ rubygems_version: 3.0.3
80
93
  signing_key:
81
94
  specification_version: 4
82
95
  summary: API client for xlogin-api.