xlogin-apiclient 0.2.3 → 0.2.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
  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.