aspera-cli 4.27.2 → 4.27.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.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +133 -0
  4. data/CONTRIBUTING.md +5 -2
  5. data/bin/ascli +3 -1
  6. data/docs/README.md +1006 -766
  7. data/lib/aspera/agent/base.rb +7 -2
  8. data/lib/aspera/agent/connect.rb +6 -8
  9. data/lib/aspera/agent/desktop.rb +2 -6
  10. data/lib/aspera/agent/direct.rb +52 -22
  11. data/lib/aspera/agent/node.rb +9 -8
  12. data/lib/aspera/agent/transferd.rb +2 -2
  13. data/lib/aspera/api/alee.rb +1 -1
  14. data/lib/aspera/api/aoc.rb +14 -12
  15. data/lib/aspera/api/ats.rb +1 -1
  16. data/lib/aspera/api/cos_node.rb +2 -2
  17. data/lib/aspera/api/faspex.rb +11 -7
  18. data/lib/aspera/api/httpgw.rb +38 -35
  19. data/lib/aspera/api/node.rb +39 -34
  20. data/lib/aspera/ascmd.rb +3 -1
  21. data/lib/aspera/ascp/installation.rb +63 -28
  22. data/lib/aspera/ascp/management.rb +1 -0
  23. data/lib/aspera/assert.rb +4 -0
  24. data/lib/aspera/cli/ascp_actions.rb +20 -41
  25. data/lib/aspera/cli/async_transfer_store.rb +12 -11
  26. data/lib/aspera/cli/bootstrapper.rb +14 -16
  27. data/lib/aspera/cli/command_line.rb +252 -0
  28. data/lib/aspera/cli/command_registry.rb +215 -37
  29. data/lib/aspera/cli/command_spec.rb +104 -15
  30. data/lib/aspera/cli/completion/ascli.bash +12 -0
  31. data/lib/aspera/cli/completion/ascli.fish +16 -0
  32. data/lib/aspera/cli/completion/ascli.zsh +19 -0
  33. data/lib/aspera/cli/context.rb +3 -0
  34. data/lib/aspera/cli/deprecation.rb +37 -0
  35. data/lib/aspera/cli/extended_value.rb +6 -3
  36. data/lib/aspera/cli/formatter.rb +94 -80
  37. data/lib/aspera/cli/gem_checker.rb +1 -1
  38. data/lib/aspera/cli/hints.rb +7 -6
  39. data/lib/aspera/cli/http.rb +22 -34
  40. data/lib/aspera/cli/info.rb +3 -0
  41. data/lib/aspera/cli/mcp_tool.rb +47 -83
  42. data/lib/aspera/cli/option_declarator.rb +33 -42
  43. data/lib/aspera/cli/option_registry.rb +69 -0
  44. data/lib/aspera/cli/option_types.rb +105 -0
  45. data/lib/aspera/cli/option_value.rb +278 -0
  46. data/lib/aspera/cli/options.schema.yaml +124 -15
  47. data/lib/aspera/cli/parser.rb +333 -862
  48. data/lib/aspera/cli/plugins/alee.rb +7 -4
  49. data/lib/aspera/cli/plugins/aoc.rb +545 -518
  50. data/lib/aspera/cli/plugins/ats.rb +59 -80
  51. data/lib/aspera/cli/plugins/base.rb +221 -265
  52. data/lib/aspera/cli/plugins/basic_auth.rb +2 -10
  53. data/lib/aspera/cli/plugins/config.rb +263 -184
  54. data/lib/aspera/cli/plugins/console.rb +103 -39
  55. data/lib/aspera/cli/plugins/cos.rb +6 -23
  56. data/lib/aspera/cli/plugins/factory.rb +3 -0
  57. data/lib/aspera/cli/plugins/faspex5.rb +204 -182
  58. data/lib/aspera/cli/plugins/faspio.rb +6 -11
  59. data/lib/aspera/cli/plugins/httpgw.rb +8 -11
  60. data/lib/aspera/cli/plugins/mcp.rb +20 -55
  61. data/lib/aspera/cli/plugins/node.rb +300 -327
  62. data/lib/aspera/cli/plugins/orchestrator.rb +152 -110
  63. data/lib/aspera/cli/plugins/preview.rb +96 -105
  64. data/lib/aspera/cli/plugins/server.rb +78 -53
  65. data/lib/aspera/cli/plugins/shares.rb +80 -131
  66. data/lib/aspera/cli/preset_actions.rb +44 -27
  67. data/lib/aspera/cli/preset_manager.rb +44 -19
  68. data/lib/aspera/cli/prompt.rb +36 -0
  69. data/lib/aspera/cli/result.rb +42 -36
  70. data/lib/aspera/cli/runner.rb +32 -59
  71. data/lib/aspera/cli/special_values.rb +5 -0
  72. data/lib/aspera/cli/sync_actions.rb +51 -46
  73. data/lib/aspera/cli/terminal_formatter.rb +9 -3
  74. data/lib/aspera/cli/transfer_actions.rb +14 -9
  75. data/lib/aspera/cli/transfer_agent.rb +34 -38
  76. data/lib/aspera/cli/transfer_progress.rb +290 -55
  77. data/lib/aspera/cli/vault_manager.rb +0 -17
  78. data/lib/aspera/cli/version.rb +1 -1
  79. data/lib/aspera/cli/wizard.rb +5 -3
  80. data/lib/aspera/coverage.rb +1 -1
  81. data/lib/aspera/environment.rb +35 -5
  82. data/lib/aspera/faspex_gw.rb +2 -1
  83. data/lib/aspera/faspex_postproc.rb +1 -0
  84. data/lib/aspera/graphql.rb +5 -5
  85. data/lib/aspera/json_rpc/client.rb +5 -5
  86. data/lib/aspera/keychain/encrypted_hash.rb +2 -2
  87. data/lib/aspera/keychain/factory.rb +2 -1
  88. data/lib/aspera/keychain/one_password_api.rb +1 -1
  89. data/lib/aspera/link_header.rb +2 -2
  90. data/lib/aspera/log.rb +47 -27
  91. data/lib/aspera/markdown.rb +2 -0
  92. data/lib/aspera/mime.rb +25 -0
  93. data/lib/aspera/node_emulator.rb +759 -0
  94. data/lib/aspera/oauth/base.rb +37 -26
  95. data/lib/aspera/oauth/factory.rb +7 -3
  96. data/lib/aspera/oauth/generic.rb +1 -1
  97. data/lib/aspera/oauth/json_credentials.rb +34 -0
  98. data/lib/aspera/oauth/jwt.rb +4 -5
  99. data/lib/aspera/oauth/web.rb +9 -8
  100. data/lib/aspera/oauth.rb +1 -0
  101. data/lib/aspera/persistency_folder.rb +1 -3
  102. data/lib/aspera/preview/file_types.rb +4 -4
  103. data/lib/aspera/preview/generator.rb +11 -1
  104. data/lib/aspera/preview/options.schema.yaml +119 -0
  105. data/lib/aspera/preview/terminal.rb +4 -3
  106. data/lib/aspera/preview/utils.rb +9 -6
  107. data/lib/aspera/products/connect.rb +1 -1
  108. data/lib/aspera/rainbow.rb +7 -0
  109. data/lib/aspera/rest/aspera_errors.rb +72 -0
  110. data/lib/aspera/rest/call_error.rb +27 -0
  111. data/lib/aspera/rest/client.rb +523 -0
  112. data/lib/aspera/rest/error_analyzer.rb +113 -0
  113. data/lib/aspera/rest/list.rb +149 -0
  114. data/lib/aspera/rest/parameters.rb +55 -0
  115. data/lib/aspera/rest/util.rb +176 -0
  116. data/lib/aspera/rest.rb +7 -621
  117. data/lib/aspera/schema/IBM Aspera Console-enhanced.yaml +1125 -0
  118. data/lib/aspera/schema/IBM Aspera Faspex API-5.0-enhanced.yaml +0 -20
  119. data/lib/aspera/schema/IBM Aspera Orchestrator API-v1.yaml +1784 -0
  120. data/lib/aspera/schema/IBM Aspera on Cloud API-0.2.6-enhanced.yaml +1230 -137
  121. data/lib/aspera/schema/IBM Aspera on Cloud Automation API-1.0.5-enhanced.yaml +2395 -0
  122. data/lib/aspera/schema/IBM_Aspera_Shares.yaml +14 -13
  123. data/lib/aspera/schema/documentation.rb +13 -3
  124. data/lib/aspera/schema/reader.rb +12 -18
  125. data/lib/aspera/schema/registry.rb +23 -1
  126. data/lib/aspera/schema/validator.rb +92 -0
  127. data/lib/aspera/secret_hider.rb +36 -25
  128. data/lib/aspera/string_ext.rb +15 -0
  129. data/lib/aspera/temp_file_manager.rb +6 -5
  130. data/lib/aspera/transfer/parameters.rb +2 -0
  131. data/lib/aspera/transfer/spec.rb +1 -0
  132. data/lib/aspera/uri_reader.rb +11 -11
  133. data/lib/aspera/web_auth/index.html +147 -0
  134. data/lib/aspera/web_auth/server.rb +81 -0
  135. data.tar.gz.sig +0 -0
  136. metadata +43 -9
  137. metadata.gz.sig +0 -0
  138. data/lib/aspera/colors.rb +0 -79
  139. data/lib/aspera/node_simulator.rb +0 -344
  140. data/lib/aspera/preview/options.rb +0 -45
  141. data/lib/aspera/rest_call_error.rb +0 -25
  142. data/lib/aspera/rest_error_analyzer.rb +0 -111
  143. data/lib/aspera/rest_errors_aspera.rb +0 -58
  144. data/lib/aspera/rest_list.rb +0 -136
  145. data/lib/aspera/web_auth.rb +0 -211
@@ -0,0 +1,147 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <link rel="icon" type="image/svg+xml"
7
+ href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIiBmaWxsPSJub25lIiBzdHJva2U9IiMyMjIiIHN0cm9rZS13aWR0aD0iMyI+CiAgPGxpbmUgeDE9IjMiIHkxPSIzIiB4Mj0iMjkiIHkyPSIyOSIgIHN0cm9rZT0icmVkIi8+CiAgPGxpbmUgeDE9IjI5IiB5MT0iMyIgeDI9IjMiIHkyPSIyOSIgc3Ryb2tlPSJyZWQiIC8+Cjwvc3ZnPg==">
8
+ <title>Close Now</title>
9
+ <style>
10
+ body {
11
+ font-family: Arial, sans-serif;
12
+ text-align: center;
13
+ padding: 2rem;
14
+ margin: 0;
15
+ background: linear-gradient(135deg, #f0f4f8, #d9e2ec);
16
+ color: #333;
17
+ overflow: hidden;
18
+ /* Ensure no scrollbars for the background animation */
19
+ position: relative;
20
+ }
21
+
22
+ h1 {
23
+ font-size: 2.5rem;
24
+ color: #0078d4;
25
+ }
26
+
27
+ p {
28
+ font-size: 1.2rem;
29
+ margin-top: 1rem;
30
+ }
31
+
32
+ /* Styling for animated IBM logos */
33
+ .logo {
34
+ position: absolute;
35
+ bottom: -100px;
36
+ width: 40px;
37
+ height: 40px;
38
+ background: none;
39
+ display: flex;
40
+ justify-content: center;
41
+ align-items: center;
42
+ animation: rise 10s infinite ease-in-out;
43
+ }
44
+
45
+ .logo svg {
46
+ width: 100%;
47
+ height: 100%;
48
+ }
49
+
50
+ .logo:nth-child(odd) {
51
+ animation-duration: 8s;
52
+ }
53
+
54
+ .logo:nth-child(even) {
55
+ animation-duration: 12s;
56
+ }
57
+
58
+ @keyframes rise {
59
+ 0% {
60
+ transform: translateY(0) scale(1);
61
+ opacity: 1;
62
+ }
63
+
64
+ 50% {
65
+ opacity: 0.7;
66
+ }
67
+
68
+ 100% {
69
+ transform: translateY(-120vh) scale(0.7);
70
+ opacity: 0;
71
+ }
72
+ }
73
+ </style>
74
+ </head>
75
+
76
+ <body>
77
+ <h1>Thank You!</h1>
78
+ <p>You can close this window.</p>
79
+ __ADD_INFO__
80
+
81
+ <!-- JavaScript to generate IBM logos -->
82
+ <script>
83
+ // Function to create logos dynamically
84
+ function createLogos() {
85
+ const body = document.body;
86
+ const svgContent = `
87
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1000px" height="401.149px" viewBox="0 0 1000 401.149" xml:space="preserve">
88
+ <g>
89
+ <rect fill="#1F70C1" x="0" y="373.217" width="194.433" height="27.833"/>
90
+ <rect fill="#1F70C1" x="0" y="319.83" width="194.433" height="27.931"/>
91
+ <rect fill="#1F70C1" x="55.468" y="266.541" width="83.399" height="27.932"/>
92
+ <rect fill="#1F70C1" x="55.468" y="213.253" width="83.399" height="27.932"/>
93
+ <rect fill="#1F70C1" x="55.468" y="159.964" width="83.399" height="27.932"/>
94
+ <rect fill="#1F70C1" x="55.468" y="106.577" width="83.399" height="27.932"/>
95
+ <rect fill="#1F70C1" x="0" y="53.288" width="194.433" height="27.932"/>
96
+ <rect fill="#1F70C1" x="0" y="0" width="194.433" height="27.932"/>
97
+ <path fill="#1F70C1" d="M222.167,347.761h299.029c5.051-8.617,8.815-18.027,11.094-27.932H222.167V347.761z"/>
98
+ <path fill="#1F70C1" d="M497.92,213.253H277.734v27.932h243.463C514.857,230.487,507.032,221.078,497.92,213.253z"/>
99
+ <path fill="#1F70C1" d="M277.734,159.964v27.932H497.92c9.311-7.825,17.135-17.235,23.277-27.932H277.734z"/>
100
+ <path fill="#1F70C1" d="M521.197,53.288H222.167V81.22H532.29C529.715,71.315,525.951,61.906,521.197,53.288z"/>
101
+ <path fill="#1F70C1" d="M429.279,0H222.167v27.932h278.526C482.072,10.697,456.815,0,429.279,0z"/>
102
+ <rect fill="#1F70C1" x="277.734" y="106.577" width="83.3" height="27.932"/>
103
+ <path fill="#1F70C1" d="M444.433,134.509h87.163c2.476-8.914,3.764-18.324,3.764-27.932h-90.927z"/>
104
+ <rect fill="#1F70C1" x="277.734" y="266.541" width="83.3" height="27.932"/>
105
+ <path fill="#1F70C1" d="M444.433,266.541v27.932h90.927c0-9.608-1.288-19.017-3.764-27.932H444.433z"/>
106
+ <path fill="#1F70C1" d="M222.167,400.852h207.112c27.734,0,52.793-10.697,71.513-27.932H222.167V400.852z"/>
107
+ <rect fill="#1F70C1" x="555.567" y="373.217" width="138.866" height="27.833"/>
108
+ <rect fill="#1F70C1" x="555.567" y="319.83" width="138.866" height="27.931"/>
109
+ <rect fill="#1F70C1" x="611.034" y="266.541" width="83.399" height="27.932"/>
110
+ <rect fill="#1F70C1" x="611.034" y="213.253" width="83.399" height="27.932"/>
111
+ <polygon fill="#1F70C1" points="733.063,53.288 555.567,53.288 555.567,81.22 742.67,81.22"/>
112
+ <polygon fill="#1F70C1" points="714.639,0 555.567,0 555.567,27.932 724.247,27.932"/>
113
+ <rect fill="#1F70C1" x="861.034" y="373.217" width="138.866" height="27.833"/>
114
+ <rect fill="#1F70C1" x="861.034" y="319.83" width="138.866" height="27.931"/>
115
+ <rect fill="#1F70C1" x="861.034" y="266.541" width="83.399" height="27.932"/>
116
+ <rect fill="#1F70C1" x="861.034" y="213.253" width="83.399" height="27.932"/>
117
+ <polygon fill="#1F70C1" points="861.034,187.896 944.433,187.896 944.433,159.964 861.034,159.964 694.433,159.964 611.034,159.964 611.034,187.896 694.433,187.896 852.219,187.896"/>
118
+ <polygon fill="#1F70C1" points="944.433,106.577 803.982,106.577 794.374,134.509 944.433,134.509"/>
119
+ <polygon fill="#1F70C1" points="840.927,0 831.319,27.932 1000,27.932 1000,0"/>
120
+ <polygon fill="#1F70C1" points="777.734,400.852 787.341,373.217 768.126,373.217"/>
121
+ <polygon fill="#1F70C1" points="759.311,347.761 796.157,347.761 806.062,319.83 749.505,319.83"/>
122
+ <polygon fill="#1F70C1" points="740.59,294.473 814.877,294.473 824.683,266.541 730.784,266.541"/>
123
+ <polygon fill="#1F70C1" points="721.969,241.185 833.597,241.185 843.106,213.253 712.361,213.253"/>
124
+ <polygon fill="#1F70C1" points="611.034,134.509 761.093,134.509 751.486,106.577 611.034,106.577"/>
125
+ <polygon fill="#1F70C1" points="812.896,81.22 1000,81.22 1000,53.288 822.405,53.288"/>
126
+ </g>
127
+ </svg>
128
+ `;
129
+ for (let i = 0; i < 20; i++) {
130
+ const logo = document.createElement('div');
131
+ logo.className = 'logo';
132
+ const size = Math.random() * 30 + 20; // Random size between 20px and 50px
133
+ logo.style.width = `${size}px`;
134
+ logo.style.height = `${size}px`;
135
+ logo.style.left = `${Math.random() * 100}vw`;
136
+ logo.style.animationDelay = `${Math.random() * 5}s`;
137
+ logo.innerHTML = svgContent;
138
+ body.appendChild(logo);
139
+ }
140
+ }
141
+
142
+ // Call the function to create logos on load
143
+ createLogos();
144
+ </script>
145
+ </body>
146
+
147
+ </html>
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aspera/web_server_simple'
4
+ require 'aspera/assert'
5
+ require 'erb'
6
+
7
+ module Aspera
8
+ module WebAuth
9
+ # servlet called on callback: it records the callback request
10
+ class Servlet < WEBrick::HTTPServlet::AbstractServlet
11
+ # @param server [WEBrick::HTTPServer] the HTTP server instance
12
+ # @param web_auth [Server] the Server instance to record the callback
13
+ def initialize(server, web_auth)
14
+ Log.log.debug('Servlet initialize')
15
+ super(server)
16
+ @web_auth = web_auth
17
+ end
18
+
19
+ # called on request
20
+
21
+ def service(request, response)
22
+ Log.log.debug { "received request from browser #{request.request_method} #{request.path}" }
23
+ Aspera.assert_values(request.request_method, ['GET'], type: WEBrick::HTTPStatus::MethodNotAllowed) { "Unsupported method: #{req.request_method}" }
24
+ Aspera.assert_values(request.path, ['/'], type: WEBrick::HTTPStatus::NotFound) { "Unsupported path: #{req.request_method}" }
25
+ # response to browser
26
+ response.status = 200
27
+ response.content_type = 'text/html'
28
+ response.body = File.read("#{__dir__}/index.html").gsub('__ADD_INFO__', @web_auth.info_html)
29
+ # continue internal processing
30
+ @web_auth.signal_request(request)
31
+ nil
32
+ end
33
+ end
34
+
35
+ # start a local web server
36
+ # then start a browser that will callback the local server upon authentication
37
+ # store the final query
38
+ class Server < WebServerSimple
39
+ attr_reader :info_html
40
+
41
+ # @param endpoint_url [String] e.g. 'https://127.0.0.1:12345'
42
+ # @param additional_info [String] Information in web page
43
+ def initialize(endpoint_url, additional_info = nil)
44
+ uri = URI.parse(endpoint_url)
45
+ super(uri)
46
+ @mutex = Mutex.new
47
+ @cond = ConditionVariable.new
48
+ @expected_path = uri.path.empty? ? '/' : uri.path
49
+ @query = nil
50
+ @info_html = additional_info.to_s
51
+ @info_html = "<p>#{ERB::Util.html_escape(@info_html)}</p>" unless @info_html.empty?
52
+ # last argument (self) is provided to constructor of servlet
53
+ mount(@expected_path, Servlet, self)
54
+ # server runs in thread
55
+ Thread.new { start }
56
+ end
57
+
58
+ # Called by web server thread on received request
59
+ # @return [nil]
60
+ def signal_request(request)
61
+ raise WEBrick::HTTPStatus::NotFound, "unexpected path: #{request.path}" unless request.path.eql?(@expected_path)
62
+ # acquire lock and signal change
63
+ @mutex.synchronize do
64
+ @query = request.query
65
+ @cond.signal
66
+ end
67
+ nil
68
+ end
69
+
70
+ # wait for request on web server (main thread)
71
+ # @return [Hash] the query
72
+ def received_request
73
+ # wait for signal from thread
74
+ @mutex.synchronize { @cond.wait(@mutex) }
75
+ # tell server thread to stop
76
+ shutdown
77
+ return @query
78
+ end
79
+ end
80
+ end
81
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aspera-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.27.2
4
+ version: 4.27.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent Martin
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '2.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: json_schemer
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.4'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.4'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: jwt
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -346,9 +360,14 @@ files:
346
360
  - lib/aspera/cli/ascp_actions.rb
347
361
  - lib/aspera/cli/async_transfer_store.rb
348
362
  - lib/aspera/cli/bootstrapper.rb
363
+ - lib/aspera/cli/command_line.rb
349
364
  - lib/aspera/cli/command_registry.rb
350
365
  - lib/aspera/cli/command_spec.rb
366
+ - lib/aspera/cli/completion/ascli.bash
367
+ - lib/aspera/cli/completion/ascli.fish
368
+ - lib/aspera/cli/completion/ascli.zsh
351
369
  - lib/aspera/cli/context.rb
370
+ - lib/aspera/cli/deprecation.rb
352
371
  - lib/aspera/cli/error.rb
353
372
  - lib/aspera/cli/extended_value.rb
354
373
  - lib/aspera/cli/formatter.rb
@@ -359,6 +378,9 @@ files:
359
378
  - lib/aspera/cli/mailer.rb
360
379
  - lib/aspera/cli/mcp_tool.rb
361
380
  - lib/aspera/cli/option_declarator.rb
381
+ - lib/aspera/cli/option_registry.rb
382
+ - lib/aspera/cli/option_types.rb
383
+ - lib/aspera/cli/option_value.rb
362
384
  - lib/aspera/cli/options.schema.yaml
363
385
  - lib/aspera/cli/parser.rb
364
386
  - lib/aspera/cli/plugins/alee.rb
@@ -382,6 +404,7 @@ files:
382
404
  - lib/aspera/cli/plugins/shares.rb
383
405
  - lib/aspera/cli/preset_actions.rb
384
406
  - lib/aspera/cli/preset_manager.rb
407
+ - lib/aspera/cli/prompt.rb
385
408
  - lib/aspera/cli/result.rb
386
409
  - lib/aspera/cli/runner.rb
387
410
  - lib/aspera/cli/secret_finder.rb
@@ -394,7 +417,6 @@ files:
394
417
  - lib/aspera/cli/vault_manager.rb
395
418
  - lib/aspera/cli/version.rb
396
419
  - lib/aspera/cli/wizard.rb
397
- - lib/aspera/colors.rb
398
420
  - lib/aspera/command_line_builder.rb
399
421
  - lib/aspera/command_line_converter.rb
400
422
  - lib/aspera/coverage.rb
@@ -428,13 +450,15 @@ files:
428
450
  - lib/aspera/link_header.rb
429
451
  - lib/aspera/log.rb
430
452
  - lib/aspera/markdown.rb
453
+ - lib/aspera/mime.rb
431
454
  - lib/aspera/nagios.rb
432
- - lib/aspera/node_simulator.rb
455
+ - lib/aspera/node_emulator.rb
433
456
  - lib/aspera/oauth.rb
434
457
  - lib/aspera/oauth/base.rb
435
458
  - lib/aspera/oauth/boot.rb
436
459
  - lib/aspera/oauth/factory.rb
437
460
  - lib/aspera/oauth/generic.rb
461
+ - lib/aspera/oauth/json_credentials.rb
438
462
  - lib/aspera/oauth/jwt.rb
439
463
  - lib/aspera/oauth/url_json.rb
440
464
  - lib/aspera/oauth/web.rb
@@ -443,7 +467,7 @@ files:
443
467
  - lib/aspera/preview/file_types.rb
444
468
  - lib/aspera/preview/generator.rb
445
469
  - lib/aspera/preview/image_error.png
446
- - lib/aspera/preview/options.rb
470
+ - lib/aspera/preview/options.schema.yaml
447
471
  - lib/aspera/preview/terminal.rb
448
472
  - lib/aspera/preview/utils.rb
449
473
  - lib/aspera/preview/video_error.png
@@ -453,23 +477,32 @@ files:
453
477
  - lib/aspera/products/transferd.rb
454
478
  - lib/aspera/proxy_auto_config.js
455
479
  - lib/aspera/proxy_auto_config.rb
480
+ - lib/aspera/rainbow.rb
456
481
  - lib/aspera/rest.rb
457
- - lib/aspera/rest_call_error.rb
458
- - lib/aspera/rest_error_analyzer.rb
459
- - lib/aspera/rest_errors_aspera.rb
460
- - lib/aspera/rest_list.rb
482
+ - lib/aspera/rest/aspera_errors.rb
483
+ - lib/aspera/rest/call_error.rb
484
+ - lib/aspera/rest/client.rb
485
+ - lib/aspera/rest/error_analyzer.rb
486
+ - lib/aspera/rest/list.rb
487
+ - lib/aspera/rest/parameters.rb
488
+ - lib/aspera/rest/util.rb
489
+ - lib/aspera/schema/IBM Aspera Console-enhanced.yaml
461
490
  - lib/aspera/schema/IBM Aspera Faspex API-5.0-enhanced.yaml
462
491
  - lib/aspera/schema/IBM Aspera Node API-4.4.6.yaml
492
+ - lib/aspera/schema/IBM Aspera Orchestrator API-v1.yaml
463
493
  - lib/aspera/schema/IBM Aspera faspio Gateway API-1.0.0.yaml
464
494
  - lib/aspera/schema/IBM Aspera on Cloud API-0.2.6-enhanced.yaml
495
+ - lib/aspera/schema/IBM Aspera on Cloud Automation API-1.0.5-enhanced.yaml
465
496
  - lib/aspera/schema/IBM_Aspera_Shares.yaml
466
497
  - lib/aspera/schema/async_tables.yaml
467
498
  - lib/aspera/schema/documentation.rb
468
499
  - lib/aspera/schema/reader.rb
469
500
  - lib/aspera/schema/registry.rb
501
+ - lib/aspera/schema/validator.rb
470
502
  - lib/aspera/secret_hider.rb
471
503
  - lib/aspera/ssh.rb
472
504
  - lib/aspera/ssl.rb
505
+ - lib/aspera/string_ext.rb
473
506
  - lib/aspera/sync/args.schema.yaml
474
507
  - lib/aspera/sync/conf.schema.yaml
475
508
  - lib/aspera/sync/database.rb
@@ -484,7 +517,8 @@ files:
484
517
  - lib/aspera/transfer/spec.rb
485
518
  - lib/aspera/transfer/spec.schema.yaml
486
519
  - lib/aspera/uri_reader.rb
487
- - lib/aspera/web_auth.rb
520
+ - lib/aspera/web_auth/index.html
521
+ - lib/aspera/web_auth/server.rb
488
522
  - lib/aspera/web_server_simple.rb
489
523
  - lib/aspera/yaml.rb
490
524
  - lib/transferd_pb.rb
metadata.gz.sig CHANGED
Binary file
data/lib/aspera/colors.rb DELETED
@@ -1,79 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # cspell:words
4
-
5
- # simple vt100 colors
6
- class String
7
- class << self
8
- private
9
-
10
- def vt_cmd(code); "\e[#{code}m"; end
11
- end
12
- # see https://en.wikipedia.org/wiki/ANSI_escape_code
13
- # symbol is the method name added to String, e.g. "hello".bold
14
- # it adds control chars to set color (and reset at the end).
15
- VT_STYLES = {
16
- bold: 1,
17
- dim: 2,
18
- italic: 3,
19
- underline: 4,
20
- blink: 5,
21
- reverse_color: 7,
22
- invisible: 8,
23
- strike: 9,
24
- black: 30,
25
- red: 31,
26
- green: 32,
27
- brown: 33,
28
- blue: 34,
29
- magenta: 35,
30
- cyan: 36,
31
- gray: 37,
32
- bg_black: 40,
33
- bg_red: 41,
34
- bg_green: 42,
35
- bg_brown: 43,
36
- bg_blue: 44,
37
- bg_magenta: 45,
38
- bg_cyan: 46,
39
- bg_gray: 47
40
- }.freeze
41
- private_constant :VT_STYLES
42
- # Defines methods to String, one per entry in VT_STYLES
43
- VT_STYLES.each do |name, code|
44
- if $stdout.tty?
45
- begin_seq = vt_cmd(code)
46
- end_seq = vt_cmd(
47
- if code <= 2 then 22
48
- elsif code <= 8 then code + 20
49
- elsif code <= 37 then 39
50
- elsif code <= 47 then 49
51
- else
52
- 0 # by default reset all
53
- end
54
- )
55
- define_method(name) { "#{begin_seq}#{self}#{end_seq}" }
56
- else
57
- define_method(name) { self }
58
- end
59
- end
60
-
61
- # Applies the provided list of string decoration (colors).
62
- # @param colors [Array<Symbol>] List of decorations.
63
- # @return [String] Enhanced String.
64
- def apply(*colors)
65
- colors.reduce(self) { |s, c| s.public_send(c) }
66
- end
67
-
68
- # Transform capitalized to snake case
69
- def capital_to_snake
70
- return gsub(/([a-z\d])([A-Z])/, '\1_\2')
71
- .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
72
- .downcase
73
- end
74
-
75
- # Transform snake case to capitalized
76
- def snake_to_capital
77
- split('_').map(&:capitalize).join
78
- end
79
- end