ood_appkit 0.2.6 → 0.2.7
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 +4 -4
- data/README.md +5 -5
- data/config/clusters.yml +33 -2
- data/lib/ood_appkit/configuration.rb +15 -8
- data/lib/ood_appkit/servers/ganglia.rb +24 -24
- data/lib/ood_appkit/url.rb +32 -0
- data/lib/ood_appkit/urls/dashboard.rb +7 -0
- data/lib/ood_appkit/urls/editor.rb +20 -0
- data/lib/ood_appkit/urls/files.rb +29 -0
- data/lib/ood_appkit/urls/public.rb +7 -0
- data/lib/ood_appkit/urls/shell.rb +21 -0
- data/lib/ood_appkit/version.rb +1 -1
- data/lib/ood_appkit.rb +10 -8
- metadata +8 -7
- data/lib/ood_appkit/dashboard_url.rb +0 -26
- data/lib/ood_appkit/editor_url.rb +0 -35
- data/lib/ood_appkit/files_url.rb +0 -38
- data/lib/ood_appkit/public_url.rb +0 -26
- data/lib/ood_appkit/shell_url.rb +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3357fbdca016e8208120c92b174b7dbfc9ab40b9
|
4
|
+
data.tar.gz: 06b2d516f3028be6f12531cd7a167caaf7ad6088
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 506a025230543001aa94ef4dd3f8f6d58a35025abcb69ccd2b7dc823339a2c7e89e73433c9dd784ac8ed580a7af9ee94414206ec89a8f01d002acab2b71d9e6b
|
7
|
+
data.tar.gz: f1df95d9da1e843a62d2cc49f371f2640efdb90c8baea602e9aca679dd587f27b706d5ff957c20bb27dd55f1912db6f03da745d0fdea50f467f231c1c1afd477
|
data/README.md
CHANGED
@@ -76,7 +76,7 @@ Or by modifying the configuration in an initializer:
|
|
76
76
|
|
77
77
|
OodAppkit.configure do |config|
|
78
78
|
# Defaults
|
79
|
-
config.dashboard = OodAppkit::
|
79
|
+
config.dashboard = OodAppkit::Urls::Dashboard.new title: 'Dashboard', base_url: '/pun/sys/dashboard'
|
80
80
|
end
|
81
81
|
```
|
82
82
|
|
@@ -108,7 +108,7 @@ Or by modifying the configuration in an initializer:
|
|
108
108
|
|
109
109
|
OodAppkit.configure do |config|
|
110
110
|
# Defaults
|
111
|
-
config.files = OodAppkit::
|
111
|
+
config.files = OodAppkit::Urls::Files.new title: 'Files', base_url: '/pun/sys/files'
|
112
112
|
end
|
113
113
|
```
|
114
114
|
|
@@ -137,7 +137,7 @@ Or by modifying the configuration in an initializer:
|
|
137
137
|
|
138
138
|
OodAppkit.configure do |config|
|
139
139
|
# Defaults
|
140
|
-
config.editor = OodAppkit::
|
140
|
+
config.editor = OodAppkit::Urls::Editor.new title: 'Editor', base_url: '/pun/sys/file-editor'
|
141
141
|
end
|
142
142
|
```
|
143
143
|
|
@@ -171,7 +171,7 @@ Or by modifying the configuration in an initializer:
|
|
171
171
|
|
172
172
|
OodAppkit.configure do |config|
|
173
173
|
# Defaults
|
174
|
-
config.shell = OodAppkit::
|
174
|
+
config.shell = OodAppkit::Urls::Shell.new title: 'Shell', base_url: '/pun/sys/shell'
|
175
175
|
end
|
176
176
|
```
|
177
177
|
|
@@ -559,7 +559,7 @@ or by modifying the configuration in an initializer
|
|
559
559
|
# config/initializers/ood_appkit.rb
|
560
560
|
|
561
561
|
OodAppkit.configure do |config|
|
562
|
-
config.clusters.
|
562
|
+
config.clusters.cache = OodAppkit::Cluster.all(file: "/path/to/my/config.yml")
|
563
563
|
end
|
564
564
|
```
|
565
565
|
|
data/config/clusters.yml
CHANGED
@@ -23,7 +23,7 @@ v1:
|
|
23
23
|
segments:
|
24
24
|
- 'gweb'
|
25
25
|
- 'graph.php'
|
26
|
-
|
26
|
+
req_query:
|
27
27
|
c: 'Oakley nodes'
|
28
28
|
opt_query:
|
29
29
|
h: '%{h}.ten.osc.edu'
|
@@ -57,11 +57,42 @@ v1:
|
|
57
57
|
segments:
|
58
58
|
- 'gweb'
|
59
59
|
- 'graph.php'
|
60
|
-
|
60
|
+
req_query:
|
61
61
|
c: 'Ruby'
|
62
62
|
opt_query:
|
63
63
|
h: '%{h}.ten.osc.edu'
|
64
64
|
version: '3'
|
65
|
+
owens:
|
66
|
+
title: 'Owens'
|
67
|
+
validators:
|
68
|
+
in_valid_groups:
|
69
|
+
type: 'OodAppkit::Validators::Groups'
|
70
|
+
groups:
|
71
|
+
- 'owens'
|
72
|
+
- 'oscsys'
|
73
|
+
- 'hpcsys'
|
74
|
+
- 'sysp'
|
75
|
+
- 'appl'
|
76
|
+
- 'cons'
|
77
|
+
- 'oscgen'
|
78
|
+
- 'hpcsoft'
|
79
|
+
- 'oscadm'
|
80
|
+
servers:
|
81
|
+
login:
|
82
|
+
type: 'OodAppkit::Server'
|
83
|
+
host: 'owens.hpc.osc.edu'
|
84
|
+
ganglia:
|
85
|
+
type: 'OodAppkit::Servers::Ganglia'
|
86
|
+
host: 'cts05.osc.edu'
|
87
|
+
scheme: 'https://'
|
88
|
+
segments:
|
89
|
+
- 'gweb'
|
90
|
+
- 'graph.php'
|
91
|
+
req_query:
|
92
|
+
c: 'Owens'
|
93
|
+
opt_query:
|
94
|
+
h: '%{h}.ten.osc.edu'
|
95
|
+
version: '3'
|
65
96
|
quick:
|
66
97
|
title: 'Quick'
|
67
98
|
hpc_cluster: false
|
@@ -65,9 +65,16 @@ module OodAppkit
|
|
65
65
|
self.dataroot = ENV['OOD_DATAROOT'] || ENV['RAILS_DATAROOT']
|
66
66
|
|
67
67
|
# Initialize list of available clusters
|
68
|
-
|
69
|
-
|
70
|
-
clusters
|
68
|
+
# FIXME: use "/etc/ood/config/..." in the future
|
69
|
+
# FIXME: use `ood_cluster` gem instead in the future
|
70
|
+
self.clusters = OpenStruct.new(
|
71
|
+
cache: OodAppkit::Cluster.all(
|
72
|
+
file: ENV['OOD_CLUSTERS'] || File.expand_path('../../../config/clusters.yml', __FILE__)
|
73
|
+
)
|
74
|
+
)
|
75
|
+
def clusters.all
|
76
|
+
cache
|
77
|
+
end
|
71
78
|
def clusters.hpc
|
72
79
|
all.select {|k,v| v.hpc_cluster?}
|
73
80
|
end
|
@@ -86,23 +93,23 @@ module OodAppkit
|
|
86
93
|
)
|
87
94
|
|
88
95
|
# Initialize URL handlers for system apps
|
89
|
-
self.public =
|
96
|
+
self.public = Urls::Public.new(
|
90
97
|
title: ENV['OOD_PUBLIC_TITLE'] || 'Public Assets',
|
91
98
|
base_url: ENV['OOD_PUBLIC_URL'] || '/public'
|
92
99
|
)
|
93
|
-
self.dashboard =
|
100
|
+
self.dashboard = Urls::Dashboard.new(
|
94
101
|
title: ENV['OOD_DASHBOARD_TITLE'] || 'Dashboard',
|
95
102
|
base_url: ENV['OOD_DASHBOARD_URL'] || '/pun/sys/dashboard'
|
96
103
|
)
|
97
|
-
self.shell =
|
104
|
+
self.shell = Urls::Shell.new(
|
98
105
|
title: ENV['OOD_SHELL_TITLE'] || 'Shell',
|
99
106
|
base_url: ENV['OOD_SHELL_URL'] || '/pun/sys/shell'
|
100
107
|
)
|
101
|
-
self.files =
|
108
|
+
self.files = Urls::Files.new(
|
102
109
|
title: ENV['OOD_FILES_TITLE'] || 'Files',
|
103
110
|
base_url: ENV['OOD_FILES_URL'] || '/pun/sys/files'
|
104
111
|
)
|
105
|
-
self.editor =
|
112
|
+
self.editor = Urls::Editor.new(
|
106
113
|
title: ENV['OOD_EDITOR_TITLE'] || 'Editor',
|
107
114
|
base_url: ENV['OOD_EDITOR_URL'] || '/pun/sys/file-editor'
|
108
115
|
)
|
@@ -21,13 +21,17 @@ module OodAppkit
|
|
21
21
|
|
22
22
|
# The required query values of the URI
|
23
23
|
# @example Required cluster query value
|
24
|
-
# "my_ganglia.
|
24
|
+
# "my_ganglia.req_query"
|
25
25
|
# #=> {c: "MyCluster"}
|
26
26
|
# @return [Hash] required query values of uri
|
27
|
-
attr_reader :
|
27
|
+
attr_reader :req_query
|
28
28
|
|
29
29
|
# Optional query values of the URI, these query values are
|
30
30
|
# only defined if specified
|
31
|
+
# NB: All optional values will be evaluated for string interpolations
|
32
|
+
# @example Optional host query value
|
33
|
+
# "my_ganglia.opt_query"
|
34
|
+
# #=> {h: "%{h}.ten.osc.edu"}
|
31
35
|
# @return [Hash] optional query values of uri
|
32
36
|
attr_reader :opt_query
|
33
37
|
|
@@ -36,48 +40,44 @@ module OodAppkit
|
|
36
40
|
attr_reader :version
|
37
41
|
|
38
42
|
# @param scheme [String] the scheme used for URI
|
39
|
-
# @param segments [Array<String>] the segments used to
|
40
|
-
#
|
41
|
-
# @param
|
42
|
-
# URI
|
43
|
-
# @param opt_query [Hash] hash of optional query
|
44
|
-
# values if they exist
|
43
|
+
# @param segments [Array<String>] the segments used to construct path of URI
|
44
|
+
# @param req_query [Hash] hash of required query values used for URI
|
45
|
+
# @param opt_query [Hash] hash of optional query values if they exist
|
45
46
|
# @param version [String] version of server software
|
46
|
-
def initialize(scheme:, segments: [],
|
47
|
+
def initialize(scheme:, segments: [], req_query: {}, opt_query: {}, version:, **kwargs)
|
47
48
|
super(kwargs)
|
48
49
|
|
49
50
|
# uri
|
50
51
|
@scheme = scheme
|
51
52
|
@segments = segments
|
52
|
-
@
|
53
|
+
@req_query = req_query
|
53
54
|
@opt_query = opt_query
|
54
55
|
|
55
56
|
# version
|
56
57
|
@version = version
|
57
58
|
end
|
58
59
|
|
59
|
-
# The full hash of query values used to construct URI
|
60
|
-
# @param other_query [Hash] user specified query hash
|
61
|
-
# @return [Hash] full hash of query values
|
62
|
-
def query_values(other_query)
|
63
|
-
query.merge(
|
64
|
-
other_query.each_with_object({}) do |(k, v), h|
|
65
|
-
h[k] = opt_query.has_key?(k) ? (opt_query[k] % query.merge(other_query)) : v
|
66
|
-
end
|
67
|
-
)
|
68
|
-
end
|
69
|
-
|
70
60
|
# The URI used to access information about given cluster
|
71
|
-
# @param
|
61
|
+
# @param query [Hash] user specified query hash
|
72
62
|
# @return [Addressable] the uri for ganglia server
|
73
|
-
def uri(
|
63
|
+
def uri(query: {})
|
74
64
|
Addressable::Template.new(TEMPLATE).expand({
|
75
65
|
scheme: scheme,
|
76
66
|
host: host,
|
77
67
|
segments: segments,
|
78
|
-
query:
|
68
|
+
query: query_hash(query)
|
79
69
|
})
|
80
70
|
end
|
71
|
+
|
72
|
+
private
|
73
|
+
# The full hash of query values used to construct URI
|
74
|
+
def query_hash(query)
|
75
|
+
req_query.merge(
|
76
|
+
query.each_with_object({}) do |(k, v), h|
|
77
|
+
h[k] = opt_query.has_key?(k) ? (opt_query[k] % req_query.merge(query)) : v
|
78
|
+
end
|
79
|
+
)
|
80
|
+
end
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'addressable'
|
2
|
+
|
3
|
+
module OodAppkit
|
4
|
+
# A generic class used to handle URLs for an app
|
5
|
+
class Url
|
6
|
+
# The title for this URL
|
7
|
+
# @return [String] the title of the URL
|
8
|
+
attr_reader :title
|
9
|
+
|
10
|
+
# @param title [#to_s] the title of the URL
|
11
|
+
# @param base_url [#to_s] the base URL used to access this app
|
12
|
+
# @param template [#to_s] the template used to generate URLs for this app
|
13
|
+
# @see https://www.rfc-editor.org/rfc/rfc6570.txt RFC describing template format
|
14
|
+
def initialize(title: '', base_url: '/', template: '{/url*}/')
|
15
|
+
@title = title.to_s
|
16
|
+
@template = Addressable::Template.new template.to_s
|
17
|
+
@base_url = parse_url_segments(base_url.to_s)
|
18
|
+
end
|
19
|
+
|
20
|
+
# URL to access this app
|
21
|
+
# @return [Addressable::URI] the url used to access the app
|
22
|
+
def url
|
23
|
+
@template.expand url: @base_url
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
# Parse URL segments into an array
|
28
|
+
def parse_url_segments(url)
|
29
|
+
url.split('/').reject(&:empty?)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module OodAppkit
|
2
|
+
module Urls
|
3
|
+
# A class used to handle URLs for the system file Editor app.
|
4
|
+
class Editor < Url
|
5
|
+
# @param (see Url#initialize)
|
6
|
+
# @param edit_url [#to_s] the URL used to request the file editor api
|
7
|
+
def initialize(edit_url: '/edit', template: '{/url*}{+path}', **kwargs)
|
8
|
+
super(template: template, **kwargs)
|
9
|
+
@edit_url = parse_url_segments(edit_url.to_s)
|
10
|
+
end
|
11
|
+
|
12
|
+
# URL to access this app's file editor API for a given absolute file path
|
13
|
+
# @param path [#to_s] the absolute path to the file on the filesystem
|
14
|
+
# @return [Addressable::URI] absolute url to access path in file editor api
|
15
|
+
def edit(path: '')
|
16
|
+
@template.expand url: @base_url + @edit_url, path: path.to_s
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module OodAppkit
|
2
|
+
module Urls
|
3
|
+
# A class used to handle URLs for the system Files app.
|
4
|
+
class Files < Url
|
5
|
+
# @param (see Url#initialize)
|
6
|
+
# @param fs_url [#to_s] the URL used to request a filesystem view in the app
|
7
|
+
# @param api_url [#to_s] the URL used to request the app's api
|
8
|
+
def initialize(fs_url: '/fs', api_url: '/api/v1/fs', template: '{/url*}{+path}', **kwargs)
|
9
|
+
super(template: template, **kwargs)
|
10
|
+
@fs_url = parse_url_segments(fs_url.to_s)
|
11
|
+
@api_url = parse_url_segments(api_url.to_s)
|
12
|
+
end
|
13
|
+
|
14
|
+
# URL to access this app for a given absolute file path
|
15
|
+
# @param path [#to_s] the absolute path to the file on the filesystem
|
16
|
+
# @return [Addressable::URI] absolute url to access path in files app
|
17
|
+
def url(path: '')
|
18
|
+
@template.expand url: @base_url + @fs_url, path: path.to_s
|
19
|
+
end
|
20
|
+
|
21
|
+
# URL to access this app's API for a given absolute file path
|
22
|
+
# @param path [#to_s] the absolute path to the file on the filesystem
|
23
|
+
# @return [Addressable::URI] absolute url to access path in files app api
|
24
|
+
def api(path: '')
|
25
|
+
@template.expand url: @base_url + @api_url, path: path.to_s
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module OodAppkit
|
2
|
+
module Urls
|
3
|
+
# A class used to handle URLs for the system Shell app.
|
4
|
+
class Shell < Url
|
5
|
+
# @param (see Url#initialize)
|
6
|
+
# @param ssh_url [#to_s] the ssh URL used to access the terminal
|
7
|
+
def initialize(ssh_url: '/ssh', template: '{/url*}/{host}{+path}', **kwargs)
|
8
|
+
super(template: template, **kwargs)
|
9
|
+
@ssh_url = parse_url_segments(ssh_url.to_s)
|
10
|
+
end
|
11
|
+
|
12
|
+
# URL to access this app for a given host and absolute file path
|
13
|
+
# @param host [#to_s] the host the app will make an ssh connection with
|
14
|
+
# @param path [#to_s] the absolute path to the directory ssh app opens up in
|
15
|
+
# @return [Addressable::URI] the url used to access the app
|
16
|
+
def url(host: 'default', path: '')
|
17
|
+
@template.expand url: @base_url + @ssh_url, host: host.to_s, path: path.to_s
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/ood_appkit/version.rb
CHANGED
data/lib/ood_appkit.rb
CHANGED
@@ -2,11 +2,7 @@ require 'addressable'
|
|
2
2
|
|
3
3
|
require 'ood_appkit/version'
|
4
4
|
require 'ood_appkit/configuration'
|
5
|
-
require 'ood_appkit/
|
6
|
-
require 'ood_appkit/dashboard_url'
|
7
|
-
require 'ood_appkit/shell_url'
|
8
|
-
require 'ood_appkit/files_url'
|
9
|
-
require 'ood_appkit/editor_url'
|
5
|
+
require 'ood_appkit/url'
|
10
6
|
require 'ood_appkit/files_rack_app'
|
11
7
|
require 'ood_appkit/markdown_template_handler'
|
12
8
|
require 'ood_appkit/log_formatter'
|
@@ -15,12 +11,18 @@ require 'ood_appkit/server'
|
|
15
11
|
|
16
12
|
# The main namespace for OodAppkit. Provides a global configuration.
|
17
13
|
module OodAppkit
|
18
|
-
# Global OOD config location
|
19
|
-
OOD_CONFIG = Pathname.new '/etc/ood/config'
|
20
|
-
|
21
14
|
extend Configuration
|
22
15
|
require 'ood_appkit/engine' if defined?(Rails)
|
23
16
|
|
17
|
+
# A namespace to hold all subclasses of {Url}
|
18
|
+
module Urls
|
19
|
+
require 'ood_appkit/urls/public'
|
20
|
+
require 'ood_appkit/urls/dashboard'
|
21
|
+
require 'ood_appkit/urls/shell'
|
22
|
+
require 'ood_appkit/urls/files'
|
23
|
+
require 'ood_appkit/urls/editor'
|
24
|
+
end
|
25
|
+
|
24
26
|
# A namespace to hold all subclasses of {Server}
|
25
27
|
module Servers
|
26
28
|
require 'ood_appkit/servers/torque'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ood_appkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Franz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -119,19 +119,20 @@ files:
|
|
119
119
|
- lib/ood_appkit.rb
|
120
120
|
- lib/ood_appkit/cluster.rb
|
121
121
|
- lib/ood_appkit/configuration.rb
|
122
|
-
- lib/ood_appkit/dashboard_url.rb
|
123
|
-
- lib/ood_appkit/editor_url.rb
|
124
122
|
- lib/ood_appkit/engine.rb
|
125
123
|
- lib/ood_appkit/files_rack_app.rb
|
126
|
-
- lib/ood_appkit/files_url.rb
|
127
124
|
- lib/ood_appkit/log_formatter.rb
|
128
125
|
- lib/ood_appkit/markdown_template_handler.rb
|
129
|
-
- lib/ood_appkit/public_url.rb
|
130
126
|
- lib/ood_appkit/server.rb
|
131
127
|
- lib/ood_appkit/servers/ganglia.rb
|
132
128
|
- lib/ood_appkit/servers/moab.rb
|
133
129
|
- lib/ood_appkit/servers/torque.rb
|
134
|
-
- lib/ood_appkit/
|
130
|
+
- lib/ood_appkit/url.rb
|
131
|
+
- lib/ood_appkit/urls/dashboard.rb
|
132
|
+
- lib/ood_appkit/urls/editor.rb
|
133
|
+
- lib/ood_appkit/urls/files.rb
|
134
|
+
- lib/ood_appkit/urls/public.rb
|
135
|
+
- lib/ood_appkit/urls/shell.rb
|
135
136
|
- lib/ood_appkit/validators/groups.rb
|
136
137
|
- lib/ood_appkit/version.rb
|
137
138
|
- lib/tasks/ood_appkit_tasks.rake
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module OodAppkit
|
2
|
-
# A class used to handle URLs for the system Dashboard app.
|
3
|
-
class DashboardUrl
|
4
|
-
# The title for this URL
|
5
|
-
# @return [String] the title of the URL
|
6
|
-
attr_reader :title
|
7
|
-
|
8
|
-
# @param title [String] the title of the URL
|
9
|
-
# @param base_url [String] the base URL used to access this app
|
10
|
-
# @param template [String] the template used to generate URLs for this app
|
11
|
-
# @see https://www.rfc-editor.org/rfc/rfc6570.txt RFC describing template format
|
12
|
-
def initialize(title: '', base_url: '/', template: '{/url*}/')
|
13
|
-
@title = title
|
14
|
-
@template = Addressable::Template.new template
|
15
|
-
|
16
|
-
# Break up into arrays of strings
|
17
|
-
@base_url = base_url.split('/').reject(&:empty?)
|
18
|
-
end
|
19
|
-
|
20
|
-
# URL to access this app
|
21
|
-
# @return [Addressable::URI] the url used to access the app
|
22
|
-
def url
|
23
|
-
@template.expand url: @base_url
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module OodAppkit
|
2
|
-
# A class used to handle URLs for the system file Editor app.
|
3
|
-
class EditorUrl
|
4
|
-
# The title for this URL
|
5
|
-
# @return [String] the title of the URL
|
6
|
-
attr_reader :title
|
7
|
-
|
8
|
-
# @param title [String] the title of the URL
|
9
|
-
# @param base_url [String] the base URL used to access this app
|
10
|
-
# @param edit_url [String] the URL used to request the file editor api
|
11
|
-
# @param template [String] the template used to generate URLs for this app
|
12
|
-
# @see https://www.rfc-editor.org/rfc/rfc6570.txt RFC describing template format
|
13
|
-
def initialize(title: '', base_url: '/', edit_url: '/edit', template: '{/url*}{+path}')
|
14
|
-
@title = title
|
15
|
-
@template = Addressable::Template.new template
|
16
|
-
|
17
|
-
# Break up into arrays of strings
|
18
|
-
@base_url = base_url.split('/').reject(&:empty?)
|
19
|
-
@edit_url = edit_url.split('/').reject(&:empty?)
|
20
|
-
end
|
21
|
-
|
22
|
-
# URL to access this app
|
23
|
-
# @return [Addressable::URI] absolute url to access app
|
24
|
-
def url
|
25
|
-
@template.expand url: @base_url
|
26
|
-
end
|
27
|
-
|
28
|
-
# URL to access this app's file editor API for a given absolute file path
|
29
|
-
# @param path [String, #to_s] the absolute path to the file on the filesystem
|
30
|
-
# @return [Addressable::URI] absolute url to access path in file editor api
|
31
|
-
def edit(path: '')
|
32
|
-
@template.expand url: @base_url + @edit_url, path: path.to_s
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
data/lib/ood_appkit/files_url.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
module OodAppkit
|
2
|
-
# A class used to handle URLs for the system Files app.
|
3
|
-
class FilesUrl
|
4
|
-
# The title for this URL
|
5
|
-
# @return [String] the title of the URL
|
6
|
-
attr_reader :title
|
7
|
-
|
8
|
-
# @param title [String] the title of the URL
|
9
|
-
# @param base_url [String] the base URL used to access this app
|
10
|
-
# @param fs_url [String] the URL used to request a filesystem view in the app
|
11
|
-
# @param api_url [String] the URL used to request the app's api
|
12
|
-
# @param template [String] the template used to generate URLs for this app
|
13
|
-
# @see https://www.rfc-editor.org/rfc/rfc6570.txt RFC describing template format
|
14
|
-
def initialize(title: '', base_url: '/', fs_url: '/fs', api_url: '/api/v1/fs', template: '{/url*}{+path}')
|
15
|
-
@title = title
|
16
|
-
@template = Addressable::Template.new template
|
17
|
-
|
18
|
-
# Break up into arrays of strings
|
19
|
-
@base_url = base_url.split('/').reject(&:empty?)
|
20
|
-
@fs_url = fs_url.split('/').reject(&:empty?)
|
21
|
-
@api_url = api_url.split('/').reject(&:empty?)
|
22
|
-
end
|
23
|
-
|
24
|
-
# URL to access this app for a given absolute file path
|
25
|
-
# @param path [String, #to_s] the absolute path to the file on the filesystem
|
26
|
-
# @return [Addressable::URI] absolute url to access path in files app
|
27
|
-
def url(path: '')
|
28
|
-
@template.expand url: @base_url + @fs_url, path: path.to_s
|
29
|
-
end
|
30
|
-
|
31
|
-
# URL to access this app's API for a given absolute file path
|
32
|
-
# @param path [String, #to_s] the absolute path to the file on the filesystem
|
33
|
-
# @return [Addressable::URI] absolute url to access path in files app api
|
34
|
-
def api(path: '')
|
35
|
-
@template.expand url: @base_url + @api_url, path: path.to_s
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module OodAppkit
|
2
|
-
# A class used to handle URLs for the publicly available assets.
|
3
|
-
class PublicUrl
|
4
|
-
# The title for this URL
|
5
|
-
# @return [String] the title of the URL
|
6
|
-
attr_reader :title
|
7
|
-
|
8
|
-
# @param title [String] the title of the URL
|
9
|
-
# @param base_url [String] the base URL used to access this app
|
10
|
-
# @param template [String] the template used to generate URLs for this app
|
11
|
-
# @see https://www.rfc-editor.org/rfc/rfc6570.txt RFC describing template format
|
12
|
-
def initialize(title: '', base_url: '/', template: '{/url*}/')
|
13
|
-
@title = title
|
14
|
-
@template = Addressable::Template.new template
|
15
|
-
|
16
|
-
# Break up into arrays of strings
|
17
|
-
@base_url = base_url.split('/').reject(&:empty?)
|
18
|
-
end
|
19
|
-
|
20
|
-
# URL to access this app
|
21
|
-
# @return [Addressable::URI] the url used to access the app
|
22
|
-
def url
|
23
|
-
@template.expand url: @base_url
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
data/lib/ood_appkit/shell_url.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
module OodAppkit
|
2
|
-
# A class used to handle URLs for the system Shell app.
|
3
|
-
class ShellUrl
|
4
|
-
# The title for this URL
|
5
|
-
# @return [String] the title of the URL
|
6
|
-
attr_reader :title
|
7
|
-
|
8
|
-
# @param title [String] the title of the URL
|
9
|
-
# @param base_url [String] the base URL used to access this app
|
10
|
-
# @param template [String] the template used to generate URLs for this app
|
11
|
-
# @see https://www.rfc-editor.org/rfc/rfc6570.txt RFC describing template format
|
12
|
-
def initialize(title: '', base_url: '/', ssh_url: '/ssh', template: '{/url*}/{host}{+path}')
|
13
|
-
@title = title
|
14
|
-
@template = Addressable::Template.new template
|
15
|
-
|
16
|
-
# Break up into arrays of strings
|
17
|
-
@base_url = base_url.split('/').reject(&:empty?)
|
18
|
-
@ssh_url = ssh_url.split('/').reject(&:empty?)
|
19
|
-
end
|
20
|
-
|
21
|
-
# URL to access this app for a given host and absolute file path
|
22
|
-
# @param host [String] the host the app will make an ssh connection with
|
23
|
-
# @param path [#to_s] the absolute path to the directory ssh app opens up in
|
24
|
-
# @return [Addressable::URI] the url used to access the app
|
25
|
-
def url(host: 'default', path: '')
|
26
|
-
@template.expand url: @base_url + @ssh_url, host: host, path: path.to_s
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|