newline_hw 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -2
- data/lib/newline_hw.rb +4 -5
- data/lib/newline_hw/api.rb +55 -0
- data/lib/newline_hw/cli.rb +1 -1
- data/lib/newline_hw/errors.rb +4 -0
- data/lib/newline_hw/gui_trigger.rb +0 -1
- data/lib/newline_hw/shell/setup.rb +1 -1
- data/lib/newline_hw/stream_command_handler.rb +0 -1
- data/lib/newline_hw/token.rb +33 -0
- data/lib/newline_hw/version.rb +1 -1
- data/newline_hw.gemspec +3 -1
- metadata +36 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d46ce94918c8dc2f9531f7c099083d157572e3e6
|
4
|
+
data.tar.gz: 606c4c9232451b006937bbd1db6f74ead21750f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20fe34238d130e1cda2c2971fb3c7f28ce71d20f98d68b40555232b6bed0331b410b7adc0ac0737cea126f05ace629e5afb41fc7f19138d8a116b2985c210824
|
7
|
+
data.tar.gz: 502d10233ddc89a0ed940d3cfd32e4a6046e00b944d3094199b55b9f58028526ac0e21d8527f27c8aad888825f7c6a3b84f16386698e78d309d6e84b2a8203e0
|
data/README.md
CHANGED
@@ -83,10 +83,9 @@ _Javascript_
|
|
83
83
|
|
84
84
|
## TIYO-Assistant Integration
|
85
85
|
|
86
|
-
This provides a message bus to allow TIYO assistant to send json to our local binary. This is used to open a terminal window (Apple Terminal or iTerm2) using appleScript and start a `$ hw <submission-id>` command. We use the
|
86
|
+
This provides a message bus to allow TIYO assistant to send json to our local binary. This is used to open a terminal window (Apple Terminal or iTerm2) using appleScript and start a `$ hw <submission-id>` command. We use the Newline Api to backfill data required to run the remainder of the commands.
|
87
87
|
|
88
88
|
1. You MUST be on a MAC (hope to drop this in the future)
|
89
|
-
1. You MUST have `newline_cli` installed
|
90
89
|
2. You MUST be running a ruby 2.3 or higher
|
91
90
|
3. You MUST have that ruby either in the system loadpath or use, rbenv, rvm, or chruby.
|
92
91
|
4. THIS IS ALPHA so please send logs.
|
data/lib/newline_hw.rb
CHANGED
@@ -7,11 +7,10 @@ require_relative "newline_hw/chrome_manifest"
|
|
7
7
|
require_relative "newline_hw/gui_trigger"
|
8
8
|
require_relative "newline_hw/stream_command_handler"
|
9
9
|
require_relative "newline_hw/stream_processor"
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
require "newline_cli/auth"
|
10
|
+
require_relative "newline_hw/api"
|
11
|
+
require_relative "newline_hw/token"
|
12
|
+
require_relative "newline_hw/errors"
|
13
|
+
|
15
14
|
require "active_support/core_ext/string"
|
16
15
|
|
17
16
|
module NewlineHw
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require "json"
|
2
|
+
require "excon"
|
3
|
+
require "netrc"
|
4
|
+
|
5
|
+
module NewlineHw
|
6
|
+
|
7
|
+
class Api
|
8
|
+
DEFAULT_HOST = "https://newline.theironyard.com"
|
9
|
+
|
10
|
+
attr_reader :host
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@host = Api.host
|
14
|
+
token = NewlineHw::Token.get_for_user
|
15
|
+
@connection = Excon.new(@host, headers: {
|
16
|
+
"Authorization" => "token #{token}"
|
17
|
+
})
|
18
|
+
end
|
19
|
+
|
20
|
+
def post(path, data)
|
21
|
+
response = @connection.post(path: "/api/#{path}", body: data.to_json, headers: {
|
22
|
+
"Accept" => "application/json",
|
23
|
+
"Content-Type" => "application/json"
|
24
|
+
}, expects: [200, 201])
|
25
|
+
JSON.parse(response.body)
|
26
|
+
end
|
27
|
+
|
28
|
+
def put(path, data)
|
29
|
+
response = @connection.put(path: "/api/#{path}", body: data.to_json, headers: {
|
30
|
+
"Accept" => "application/json",
|
31
|
+
"Content-Type" => "application/json"
|
32
|
+
}, expects: [200, 201])
|
33
|
+
JSON.parse(response.body)
|
34
|
+
end
|
35
|
+
|
36
|
+
def get(path)
|
37
|
+
response = @connection.get(path: "/api/#{path}", expects: 200)
|
38
|
+
JSON.parse(response.body)
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.auth(data)
|
42
|
+
response = Excon.post("#{host}/api/auth", headers: {
|
43
|
+
"Content-Type" => "application/json"
|
44
|
+
}, body: data)
|
45
|
+
raise NewlineHw::AuthenticationError, "Invalid email or password" if response.status != 200
|
46
|
+
JSON.parse(response.body)
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def self.host
|
52
|
+
ENV["NEWLINE_API_HOST"] || DEFAULT_HOST
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/newline_hw/cli.rb
CHANGED
@@ -66,7 +66,7 @@ module NewlineHw
|
|
66
66
|
option :editor
|
67
67
|
def setup_command(submission_id)
|
68
68
|
puts Shell::Setup.new(submission_id, config).cmd
|
69
|
-
rescue
|
69
|
+
rescue NewlineHw::AuthenticationError => e
|
70
70
|
say "Could not log into Newline using NewlineCLI, have you logged in?"
|
71
71
|
say "Error from NewlineCli #{e.message}"
|
72
72
|
exit 3
|
@@ -35,7 +35,6 @@ module NewlineHw
|
|
35
35
|
message_at: message_at,
|
36
36
|
data: {
|
37
37
|
newline_hw_version: NewlineHw::VERSION,
|
38
|
-
newline_cli_version: NewlineCli::VERSION,
|
39
38
|
ruby_version: RUBY_VERSION,
|
40
39
|
newline_hw_config_path: Config::CONFIG_PATH,
|
41
40
|
newline_hw_path: NewlineHw.root_path,
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "jwt"
|
2
|
+
require "yaml"
|
3
|
+
|
4
|
+
module NewlineHw
|
5
|
+
class Token
|
6
|
+
NETRC_KEY = "newline.theironyard.com"
|
7
|
+
|
8
|
+
def self.decode(token)
|
9
|
+
payload = JWT.decode(token, nil, false)
|
10
|
+
payload[0]
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.get_for_path
|
14
|
+
path_config = YAML.load_file(".path.config")
|
15
|
+
path_config["token"]
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.get_for_user
|
19
|
+
return ENV["NEWLINE_API_TOKEN"] if ENV["NEWLINE_API_TOKEN"]
|
20
|
+
if (netrc = netrc_file[NETRC_KEY])
|
21
|
+
netrc["password"]
|
22
|
+
else
|
23
|
+
raise NewlineHw::AuthenticationError, "No stored credentials or ENV[\"NEWLINE_API_TOKEN\"]"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def self.netrc_file
|
30
|
+
Netrc.read("#{Netrc.home_path}/#{Netrc.netrc_filename}")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/newline_hw/version.rb
CHANGED
data/newline_hw.gemspec
CHANGED
@@ -30,7 +30,9 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_dependency "activesupport", ">= 5.0"
|
31
31
|
spec.add_dependency "json", ">= 2.0.0"
|
32
32
|
spec.add_dependency "thor", "~> 0.19.1"
|
33
|
-
spec.add_dependency "
|
33
|
+
spec.add_dependency "excon", ">= 0.46.0"
|
34
|
+
spec.add_dependency "netrc", "~> 0.11.0"
|
35
|
+
spec.add_dependency "jwt", ">= 1.5.6"
|
34
36
|
|
35
37
|
spec.add_development_dependency "bundler", "~> 1.11"
|
36
38
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: newline_hw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Russell Osborne
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -53,19 +53,47 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.19.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: excon
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.46.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.46.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: netrc
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.11.0
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.11.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: jwt
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.5.6
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.5.6
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: bundler
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,9 +175,11 @@ files:
|
|
147
175
|
- exe/newline_hw_stream
|
148
176
|
- exe/newline_hw_stream_shim
|
149
177
|
- lib/newline_hw.rb
|
178
|
+
- lib/newline_hw/api.rb
|
150
179
|
- lib/newline_hw/chrome_manifest.rb
|
151
180
|
- lib/newline_hw/cli.rb
|
152
181
|
- lib/newline_hw/config.rb
|
182
|
+
- lib/newline_hw/errors.rb
|
153
183
|
- lib/newline_hw/gui_trigger.rb
|
154
184
|
- lib/newline_hw/shell/function.rb
|
155
185
|
- lib/newline_hw/shell/run.rb
|
@@ -159,6 +189,7 @@ files:
|
|
159
189
|
- lib/newline_hw/shell/setup.rb
|
160
190
|
- lib/newline_hw/stream_command_handler.rb
|
161
191
|
- lib/newline_hw/stream_processor.rb
|
192
|
+
- lib/newline_hw/token.rb
|
162
193
|
- lib/newline_hw/version.rb
|
163
194
|
- newline_hw.gemspec
|
164
195
|
homepage: https://online.theironyard.com.
|