xlogin-apiclient 0.2.3 → 0.2.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
  SHA256:
3
- metadata.gz: 6dca064e980df5e83c597516e739bf0584b76cca07ff0c64cfdbf54a2639d73e
4
- data.tar.gz: 995a1bf61ae4a136f8912bc56091c631d1fe0c56a11b1a4a6a3c7b3cf480363c
3
+ metadata.gz: cd27729125f85dccd148ba59aa2db26d534bc236c9845be12f5fde54b47925d2
4
+ data.tar.gz: 483181f41617cdc735197e1206a21343f4c258da53f129f8d443e46d658b181e
5
5
  SHA512:
6
- metadata.gz: 070aa6268f12f9fa062486d084ffbe16026994509a470014db6042bde342a4db6fa1cf8bfa54e12083f4b30f10f04c461a6a5173bc42264708b8afaa22281d90
7
- data.tar.gz: abfd59a5182a3905b0654efa70f4174a30f17e7901261015056e762b657f897e15417081559c0aec1fd9d66ed7eb743c5053d0517b32c662f0f9f268e7a3b3b2
6
+ metadata.gz: 296f10186c974b5e3e935c525a15299265543e8074b25f9dd5095abbddbdeabb009f96b58d49ae4be87ee34e535ba60dc399e14fbc3c4da1f68aa792053079d1
7
+ data.tar.gz: c51ca168d18595df7171791277cf5290f6c8229d94250f14ad465828c3798102d90364e697d76c2d1980d6f2dd42ccfca1df22757be2b9c9c7e1071eaec365a3
@@ -1,6 +1,8 @@
1
1
  require 'json'
2
2
  require 'net/http'
3
+ require 'stringio'
3
4
  require 'addressable/uri'
5
+ require 'em-eventsource'
4
6
  require "xlogin/apiclient/version"
5
7
 
6
8
  module Xlogin
@@ -21,28 +23,46 @@ module Xlogin
21
23
  @args = args
22
24
  end
23
25
 
24
- def cmd(args)
26
+ def cmd(args, &block)
25
27
  params = {driver: @type, target: @args, command: args}
26
- resp = request(**params.transform_keys(&:to_sym))
27
- resp['payload'].join
28
+ request(**params.transform_keys(&:to_sym), &block)
28
29
  end
29
30
 
30
31
  private
31
- def request(**params)
32
+ def request(**params, &block)
32
33
  uri = @uri.dup
33
34
  uri.query = "q=#{URI.encode_www_form_component(JSON.generate(params))}"
34
35
 
35
- req = Net::HTTP::Get.new(uri.request_uri)
36
- req["Accept"] = "application/json"
36
+ if block
37
+ resp = StringIO.new
38
+ EM.run do
39
+ source = EventMachine::EventSource.new(uri.to_s)
40
+ source.message do |message|
41
+ data = JSON.parse(message) || {}
42
+ if chunk = data['chunk']
43
+ resp.print data['chunk']
44
+ block.call(data['chunk'])
45
+ end
46
+ end
47
+ source.error do |e|
48
+ EM.stop
49
+ end
50
+ source.start
51
+ end
52
+ return resp.string
53
+ else
54
+ req = Net::HTTP::Get.new(uri.request_uri)
55
+ req["Accept"] = "application/json"
37
56
 
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}$/
57
+ http = Net::HTTP.new(uri.host, uri.port)
58
+ resp = http.request(req)
59
+ raise Error.new(resp.message) unless resp.code =~ /^2[0-9]{2}$/
41
60
 
42
- data = resp.body ? JSON.parse(resp.body) : {}
43
- raise Error.new(data['error']) unless data['success']
61
+ data = resp.body ? JSON.parse(resp.body) : {}
62
+ raise Error.new(data['error']) unless data['success']
44
63
 
45
- return data
64
+ return data['payload'].join
65
+ end
46
66
  end
47
67
  end
48
68
  end
@@ -0,0 +1,18 @@
1
+ require 'optparse'
2
+
3
+
4
+ module Xlogin
5
+ module APIClient
6
+ class CLI
7
+
8
+ def self.run(args = ARGV)
9
+ Xlogin::APIClient::CLI.new.run(args)
10
+ end
11
+
12
+ def run(args)
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+
@@ -1,5 +1,5 @@
1
1
  module Xlogin
2
2
  module Apiclient
3
- VERSION = "0.2.3"
3
+ VERSION = "0.2.4"
4
4
  end
5
5
  end
@@ -27,4 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency "rake", "~> 10.0"
28
28
 
29
29
  spec.add_dependency 'addressable'
30
+ spec.add_dependency 'em-eventsource'
30
31
  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.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-28 00:00:00.000000000 Z
11
+ date: 2021-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: em-eventsource
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description: API client for xlogin-api.
56
70
  email:
57
71
  - haccht@users.noreply.github.com
@@ -68,6 +82,7 @@ files:
68
82
  - bin/console
69
83
  - bin/setup
70
84
  - lib/xlogin/apiclient.rb
85
+ - lib/xlogin/apiclient/cli.rb
71
86
  - lib/xlogin/apiclient/version.rb
72
87
  - xlogin-apiclient.gemspec
73
88
  homepage: https://github.com/haccht/xlogin-apiclient.