eigen.vision 0.1.0 → 0.3.0

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/bin/ev +7 -0
  3. data/lib/ev/cli.rb +111 -0
  4. data/lib/ev.rb +1 -1
  5. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42ad42a019cf476e4522fc0f33feeda977147050625a283732f7ab22e2c7014b
4
- data.tar.gz: f6d4a0e81e568abd6bad8e46cf3d363ff5666ba5046db534fc1f484487f02f6a
3
+ metadata.gz: 0fd0497eb869a74eb73c2aa00985494e4795460e10a7011a564a3a4e1d195467
4
+ data.tar.gz: 2387d2d43eafebf9f541e7fa5d9be563f1ce8b13b7d58cd50c5f20856b95f848
5
5
  SHA512:
6
- metadata.gz: 6cd6f6c45b46992c5204dc81c7dd422b90dacd1d671130f420dff26287a0ea5a8954f1a116316eec8fdb4b91bb48d2171929a4c9548a36b0ba675a10da0e5b64
7
- data.tar.gz: ae34ce24f66b01d395e46fed5cec3ba7d36252d3bf8e8f8fefc6583cc02e4c327a425919c1c7ddd579bea263e6a491bf5334dc48d7f87790d0ea58ea03f031d2
6
+ metadata.gz: fd46f3a66dc0f39334d30be925f0cc6db9e8744ec9e3e28c116c06ad616a5b282dc2e37abf03ce1299d3dcdf8cde6d07cf3e68e67061c5c8996708101137e5bf
7
+ data.tar.gz: dfc5c108c70053b01e566e7854452794c75905596684a4ccc01517b4f721ce8b603fdc18e6c9db8bd26939487cd1b500189ab1530e904e0c697ebc7bbdf9cb52
data/bin/ev ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "ev"
4
+ require "ev/cli"
5
+
6
+ cli = EV::CLI.new(ARGV)
7
+ print cli.output
data/lib/ev/cli.rb ADDED
@@ -0,0 +1,111 @@
1
+ require "net/http"
2
+ require "json"
3
+
4
+ module EV
5
+ class CLI
6
+ attr_reader :output
7
+
8
+ def initialize(args = [])
9
+ @args = args
10
+ @output = ""
11
+ run if @args.any?
12
+ end
13
+
14
+ private
15
+
16
+ def run
17
+ case @args[0]
18
+ when "push" then push
19
+ when "login" then login
20
+ when "logout" then logout
21
+ end
22
+ end
23
+
24
+ def push
25
+ source = File.read(@args[1])
26
+ url = @args[2] || "http://localhost:8080"
27
+ uri = URI("#{url}/analyze")
28
+ req = Net::HTTP::Post.new(uri)
29
+ req["Accept"] = "application/json"
30
+ req.set_form_data("source" => source)
31
+ creds = load_credentials
32
+ if creds && creds[:url] == url
33
+ req["Cookie"] =
34
+ "session=#{creds[:token]}"
35
+ end
36
+ res = Net::HTTP.start(
37
+ uri.hostname, uri.port
38
+ ) do |http|
39
+ http.request(req)
40
+ end
41
+ data = JSON.parse(res.body)
42
+ if res.code != "200"
43
+ @output = "error: #{data["error"]}\n"
44
+ return
45
+ end
46
+ data.each do |pin|
47
+ @output += "#{pin["name"]}: " \
48
+ "#{pin["direction"]}\n"
49
+ end
50
+ end
51
+
52
+ def login
53
+ email = @args[1]
54
+ password = @args[2]
55
+ url = @args[3] || "http://localhost:8080"
56
+ uri = URI("#{url}/login")
57
+ req = Net::HTTP::Post.new(uri)
58
+ req["Accept"] = "application/json"
59
+ req.set_form_data(
60
+ "email" => email,
61
+ "password" => password
62
+ )
63
+ res = Net::HTTP.start(
64
+ uri.hostname, uri.port
65
+ ) do |http|
66
+ http.request(req)
67
+ end
68
+ data = JSON.parse(res.body)
69
+ if res.code == "200"
70
+ save_credentials(url, data["token"])
71
+ @output = "logged in as #{email}\n"
72
+ else
73
+ @output =
74
+ "error: #{data["error"]}\n"
75
+ end
76
+ end
77
+
78
+ def logout
79
+ delete_credentials
80
+ @output = "logged out\n"
81
+ end
82
+
83
+ def credentials_path
84
+ File.join(Dir.home, ".ev",
85
+ "credentials")
86
+ end
87
+
88
+ def save_credentials(url, token)
89
+ dir = File.dirname(credentials_path)
90
+ Dir.mkdir(dir) unless Dir.exist?(dir)
91
+ File.write(credentials_path,
92
+ "#{url}\n#{token}\n")
93
+ end
94
+
95
+ def load_credentials
96
+ return nil unless File.exist?(
97
+ credentials_path
98
+ )
99
+ lines = File.read(
100
+ credentials_path
101
+ ).lines.map(&:chomp)
102
+ { url: lines[0], token: lines[1] }
103
+ end
104
+
105
+ def delete_credentials
106
+ if File.exist?(credentials_path)
107
+ File.delete(credentials_path)
108
+ end
109
+ end
110
+ end
111
+ end
data/lib/ev.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module EV
2
- VERSION = "0.1.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eigen.vision
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - eigen.vision
@@ -9,11 +9,14 @@ bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
- executables: []
12
+ executables:
13
+ - ev
13
14
  extensions: []
14
15
  extra_rdoc_files: []
15
16
  files:
17
+ - bin/ev
16
18
  - lib/ev.rb
19
+ - lib/ev/cli.rb
17
20
  - lib/ev/pin.rb
18
21
  homepage: https://eigen.vision
19
22
  licenses: