aspera-cli 4.19.0 → 4.20.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 (80) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +20 -0
  4. data/CONTRIBUTING.md +16 -4
  5. data/README.md +344 -164
  6. data/bin/asession +26 -19
  7. data/examples/build_exec +65 -76
  8. data/examples/build_exec_rubyc +40 -0
  9. data/examples/get_proto_file.rb +7 -0
  10. data/lib/aspera/agent/alpha.rb +8 -8
  11. data/lib/aspera/agent/base.rb +2 -18
  12. data/lib/aspera/agent/connect.rb +14 -13
  13. data/lib/aspera/agent/direct.rb +23 -24
  14. data/lib/aspera/agent/httpgw.rb +2 -3
  15. data/lib/aspera/agent/node.rb +10 -10
  16. data/lib/aspera/agent/trsdk.rb +17 -20
  17. data/lib/aspera/api/alee.rb +15 -0
  18. data/lib/aspera/api/aoc.rb +126 -97
  19. data/lib/aspera/api/ats.rb +1 -1
  20. data/lib/aspera/api/cos_node.rb +1 -1
  21. data/lib/aspera/api/httpgw.rb +15 -10
  22. data/lib/aspera/api/node.rb +33 -12
  23. data/lib/aspera/ascmd.rb +56 -48
  24. data/lib/aspera/ascp/installation.rb +99 -42
  25. data/lib/aspera/ascp/management.rb +3 -2
  26. data/lib/aspera/ascp/products.rb +12 -0
  27. data/lib/aspera/assert.rb +10 -5
  28. data/lib/aspera/cli/formatter.rb +27 -17
  29. data/lib/aspera/cli/hints.rb +2 -1
  30. data/lib/aspera/cli/info.rb +12 -10
  31. data/lib/aspera/cli/main.rb +16 -13
  32. data/lib/aspera/cli/manager.rb +5 -0
  33. data/lib/aspera/cli/plugin.rb +15 -29
  34. data/lib/aspera/cli/plugins/alee.rb +3 -3
  35. data/lib/aspera/cli/plugins/aoc.rb +222 -194
  36. data/lib/aspera/cli/plugins/ats.rb +16 -14
  37. data/lib/aspera/cli/plugins/config.rb +53 -45
  38. data/lib/aspera/cli/plugins/console.rb +3 -3
  39. data/lib/aspera/cli/plugins/faspex.rb +11 -21
  40. data/lib/aspera/cli/plugins/faspex5.rb +44 -42
  41. data/lib/aspera/cli/plugins/faspio.rb +2 -2
  42. data/lib/aspera/cli/plugins/httpgw.rb +1 -1
  43. data/lib/aspera/cli/plugins/node.rb +153 -95
  44. data/lib/aspera/cli/plugins/orchestrator.rb +14 -13
  45. data/lib/aspera/cli/plugins/preview.rb +8 -9
  46. data/lib/aspera/cli/plugins/server.rb +5 -9
  47. data/lib/aspera/cli/plugins/shares.rb +2 -2
  48. data/lib/aspera/cli/sync_actions.rb +2 -2
  49. data/lib/aspera/cli/transfer_agent.rb +12 -14
  50. data/lib/aspera/cli/transfer_progress.rb +35 -17
  51. data/lib/aspera/cli/version.rb +1 -1
  52. data/lib/aspera/command_line_builder.rb +3 -4
  53. data/lib/aspera/coverage.rb +13 -1
  54. data/lib/aspera/environment.rb +34 -18
  55. data/lib/aspera/faspex_gw.rb +2 -2
  56. data/lib/aspera/json_rpc.rb +1 -1
  57. data/lib/aspera/keychain/macos_security.rb +7 -12
  58. data/lib/aspera/log.rb +3 -4
  59. data/lib/aspera/oauth/base.rb +39 -45
  60. data/lib/aspera/oauth/factory.rb +11 -4
  61. data/lib/aspera/oauth/generic.rb +4 -8
  62. data/lib/aspera/oauth/jwt.rb +3 -3
  63. data/lib/aspera/oauth/url_json.rb +1 -2
  64. data/lib/aspera/oauth/web.rb +5 -2
  65. data/lib/aspera/persistency_action_once.rb +16 -8
  66. data/lib/aspera/preview/utils.rb +5 -16
  67. data/lib/aspera/rest.rb +100 -76
  68. data/lib/aspera/transfer/faux_file.rb +4 -4
  69. data/lib/aspera/transfer/parameters.rb +14 -16
  70. data/lib/aspera/transfer/spec.rb +12 -12
  71. data/lib/aspera/transfer/sync.rb +1 -5
  72. data/lib/aspera/transfer/uri.rb +1 -1
  73. data/lib/aspera/uri_reader.rb +1 -1
  74. data/lib/aspera/web_auth.rb +166 -17
  75. data/lib/aspera/web_server_simple.rb +4 -3
  76. data/lib/transfer_pb.rb +84 -0
  77. data/lib/transfer_services_pb.rb +82 -0
  78. data.tar.gz.sig +0 -0
  79. metadata +24 -5
  80. metadata.gz.sig +0 -0
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'aspera/web_server_simple'
4
+ require 'aspera/assert'
4
5
 
5
6
  module Aspera
6
7
  # servlet called on callback: it records the callback request
@@ -15,41 +16,189 @@ module Aspera
15
16
 
16
17
  def service(request, response)
17
18
  Log.log.debug{"received request from browser #{request.request_method} #{request.path}"}
18
- raise WEBrick::HTTPStatus::MethodNotAllowed, "unexpected method: #{request.request_method}" unless request.request_method.eql?('GET')
19
- raise WEBrick::HTTPStatus::NotFound, "unexpected path: #{request.path}" unless request.path.eql?(@web_auth.expected_path)
20
- # acquire lock and signal change
21
- @web_auth.mutex.synchronize do
22
- @web_auth.query = request.query
23
- @web_auth.cond.signal
24
- end
19
+ Aspera.assert_values(request.request_method, ['GET'], exception_class: WEBrick::HTTPStatus::MethodNotAllowed){'HTTP verb'}
20
+ additionnal_info = @web_auth.signal_request(request)
25
21
  response.status = 200
26
22
  response.content_type = 'text/html'
27
- response.body = '<html><head><title>Ok</title></head><body><h1>Thank you !</h1><p>You can close this window.</p></body></html>'
23
+ response.body = <<~HTML
24
+ <!DOCTYPE html>
25
+ <html lang="en">
26
+ <head>
27
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
28
+ <link rel="icon" href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIiBmaWxsPSJub25lIiBzdHJva2U9IiMyMjIiIHN0cm9rZS13aWR0aD0iMyI+CiAgPGxpbmUgeDE9IjMiIHkxPSIzIiB4Mj0iMjkiIHkyPSIyOSIgIHN0cm9rZT0icmVkIi8+CiAgPGxpbmUgeDE9IjI5IiB5MT0iMyIgeDI9IjMiIHkyPSIyOSIgc3Ryb2tlPSJyZWQiIC8+Cjwvc3ZnPg==" type="image/svg+xml">
29
+ <title>Close Now</title>
30
+ <style>
31
+ body {
32
+ font-family: Arial, sans-serif;
33
+ text-align: center;
34
+ padding: 2rem;
35
+ margin: 0;
36
+ background: linear-gradient(135deg, #f0f4f8, #d9e2ec);
37
+ color: #333;
38
+ overflow: hidden; /* Ensure no scrollbars for the background animation */
39
+ position: relative;
40
+ }
41
+ h1 {
42
+ font-size: 2.5rem;
43
+ color: #0078d4;
44
+ }
45
+ p {
46
+ font-size: 1.2rem;
47
+ margin-top: 1rem;
48
+ }
49
+
50
+ /* Styling for animated IBM logos */
51
+ .logo {
52
+ position: absolute;
53
+ bottom: -100px;
54
+ width: 40px;
55
+ height: 40px;
56
+ background: none;
57
+ display: flex;
58
+ justify-content: center;
59
+ align-items: center;
60
+ animation: rise 10s infinite ease-in-out;
61
+ }
62
+
63
+ .logo svg {
64
+ width: 100%;
65
+ height: 100%;
66
+ }
67
+
68
+ .logo:nth-child(odd) {
69
+ animation-duration: 8s;
70
+ }
71
+
72
+ .logo:nth-child(even) {
73
+ animation-duration: 12s;
74
+ }
75
+
76
+ @keyframes rise {
77
+ 0% {
78
+ transform: translateY(0) scale(1);
79
+ opacity: 1;
80
+ }
81
+ 50% {
82
+ opacity: 0.7;
83
+ }
84
+ 100% {
85
+ transform: translateY(-120vh) scale(0.7);
86
+ opacity: 0;
87
+ }
88
+ }
89
+ </style>
90
+ </head>
91
+ <body>
92
+ <h1>Thank You!</h1>
93
+ <p>You can close this window.</p>
94
+ <p>#{additionnal_info}</p>
95
+
96
+ <!-- JavaScript to generate IBM logos -->
97
+ <script>
98
+ // Function to create logos dynamically
99
+ function createLogos() {
100
+ const body = document.body;
101
+ const svgContent = `
102
+ <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">
103
+ <g>
104
+ <rect fill="#1F70C1" x="0" y="373.217" width="194.433" height="27.833"/>
105
+ <rect fill="#1F70C1" x="0" y="319.83" width="194.433" height="27.931"/>
106
+ <rect fill="#1F70C1" x="55.468" y="266.541" width="83.399" height="27.932"/>
107
+ <rect fill="#1F70C1" x="55.468" y="213.253" width="83.399" height="27.932"/>
108
+ <rect fill="#1F70C1" x="55.468" y="159.964" width="83.399" height="27.932"/>
109
+ <rect fill="#1F70C1" x="55.468" y="106.577" width="83.399" height="27.932"/>
110
+ <rect fill="#1F70C1" x="0" y="53.288" width="194.433" height="27.932"/>
111
+ <rect fill="#1F70C1" x="0" y="0" width="194.433" height="27.932"/>
112
+ <path fill="#1F70C1" d="M222.167,347.761h299.029c5.051-8.617,8.815-18.027,11.094-27.932H222.167V347.761z"/>
113
+ <path fill="#1F70C1" d="M497.92,213.253H277.734v27.932h243.463C514.857,230.487,507.032,221.078,497.92,213.253z"/>
114
+ <path fill="#1F70C1" d="M277.734,159.964v27.932H497.92c9.311-7.825,17.135-17.235,23.277-27.932H277.734z"/>
115
+ <path fill="#1F70C1" d="M521.197,53.288H222.167V81.22H532.29C529.715,71.315,525.951,61.906,521.197,53.288z"/>
116
+ <path fill="#1F70C1" d="M429.279,0H222.167v27.932h278.526C482.072,10.697,456.815,0,429.279,0z"/>
117
+ <rect fill="#1F70C1" x="277.734" y="106.577" width="83.3" height="27.932"/>
118
+ <path fill="#1F70C1" d="M444.433,134.509h87.163c2.476-8.914,3.764-18.324,3.764-27.932h-90.927z"/>
119
+ <rect fill="#1F70C1" x="277.734" y="266.541" width="83.3" height="27.932"/>
120
+ <path fill="#1F70C1" d="M444.433,266.541v27.932h90.927c0-9.608-1.288-19.017-3.764-27.932H444.433z"/>
121
+ <path fill="#1F70C1" d="M222.167,400.852h207.112c27.734,0,52.793-10.697,71.513-27.932H222.167V400.852z"/>
122
+ <rect fill="#1F70C1" x="555.567" y="373.217" width="138.866" height="27.833"/>
123
+ <rect fill="#1F70C1" x="555.567" y="319.83" width="138.866" height="27.931"/>
124
+ <rect fill="#1F70C1" x="611.034" y="266.541" width="83.399" height="27.932"/>
125
+ <rect fill="#1F70C1" x="611.034" y="213.253" width="83.399" height="27.932"/>
126
+ <polygon fill="#1F70C1" points="733.063,53.288 555.567,53.288 555.567,81.22 742.67,81.22"/>
127
+ <polygon fill="#1F70C1" points="714.639,0 555.567,0 555.567,27.932 724.247,27.932"/>
128
+ <rect fill="#1F70C1" x="861.034" y="373.217" width="138.866" height="27.833"/>
129
+ <rect fill="#1F70C1" x="861.034" y="319.83" width="138.866" height="27.931"/>
130
+ <rect fill="#1F70C1" x="861.034" y="266.541" width="83.399" height="27.932"/>
131
+ <rect fill="#1F70C1" x="861.034" y="213.253" width="83.399" height="27.932"/>
132
+ <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"/>
133
+ <polygon fill="#1F70C1" points="944.433,106.577 803.982,106.577 794.374,134.509 944.433,134.509"/>
134
+ <polygon fill="#1F70C1" points="840.927,0 831.319,27.932 1000,27.932 1000,0"/>
135
+ <polygon fill="#1F70C1" points="777.734,400.852 787.341,373.217 768.126,373.217"/>
136
+ <polygon fill="#1F70C1" points="759.311,347.761 796.157,347.761 806.062,319.83 749.505,319.83"/>
137
+ <polygon fill="#1F70C1" points="740.59,294.473 814.877,294.473 824.683,266.541 730.784,266.541"/>
138
+ <polygon fill="#1F70C1" points="721.969,241.185 833.597,241.185 843.106,213.253 712.361,213.253"/>
139
+ <polygon fill="#1F70C1" points="611.034,134.509 761.093,134.509 751.486,106.577 611.034,106.577"/>
140
+ <polygon fill="#1F70C1" points="812.896,81.22 1000,81.22 1000,53.288 822.405,53.288"/>
141
+ </g>
142
+ </svg>
143
+ `;
144
+ for (let i = 0; i < 20; i++) {
145
+ const logo = document.createElement('div');
146
+ logo.className = 'logo';
147
+ const size = Math.random() * 30 + 20; // Random size between 20px and 50px
148
+ logo.style.width = `${size}px`;
149
+ logo.style.height = `${size}px`;
150
+ logo.style.left = `${Math.random() * 100}vw`;
151
+ logo.style.animationDelay = `${Math.random() * 5}s`;
152
+ logo.innerHTML = svgContent;
153
+ body.appendChild(logo);
154
+ }
155
+ }
156
+
157
+ // Call the function to create logos on load
158
+ createLogos();
159
+ </script>
160
+ </body>
161
+ </html>
162
+ HTML
163
+
28
164
  return nil
29
165
  end
30
166
  end
31
167
 
32
- # start a local web server, then start a browser that will callback the local server upon authentication
168
+ # start a local web server
169
+ # then start a browser that will callback the local server upon authentication
170
+ # store the final query
33
171
  class WebAuth < WebServerSimple
34
- attr_reader :expected_path, :mutex, :cond
35
- attr_writer :query
36
-
37
- # @param endpoint_url [String] e.g. 'https://127.0.0.1:12345'
38
- def initialize(endpoint_url)
172
+ # @param endpoint_url [String] e.g. 'https://127.0.0.1:12345'
173
+ # @param additionnal_info [String] Information in web page
174
+ def initialize(endpoint_url, additionnal_info = nil)
39
175
  uri = URI.parse(endpoint_url)
40
176
  super(uri)
41
- # parameters for servlet
42
177
  @mutex = Mutex.new
43
178
  @cond = ConditionVariable.new
44
179
  @expected_path = uri.path.empty? ? '/' : uri.path
45
180
  @query = nil
181
+ @additionnal_info = additionnal_info
46
182
  # last argument (self) is provided to constructor of servlet
47
183
  mount(@expected_path, WebAuthServlet, self)
184
+ # server runs in thread
48
185
  Thread.new { start }
49
186
  end
50
187
 
51
- # wait for request on web server
52
- # @return Hash the query
188
+ # Called by web server thread on received request
189
+ # @return [String] additional information for web page
190
+ def signal_request(request)
191
+ raise WEBrick::HTTPStatus::NotFound, "unexpected path: #{request.path}" unless request.path.eql?(@expected_path)
192
+ # acquire lock and signal change
193
+ @mutex.synchronize do
194
+ @query = request.query
195
+ @cond.signal
196
+ end
197
+ return @additionnal_info
198
+ end
199
+
200
+ # wait for request on web server (main thread)
201
+ # @return [Hash] the query
53
202
  def received_request
54
203
  # wait for signal from thread
55
204
  @mutex.synchronize{@cond.wait(@mutex)}
@@ -17,7 +17,7 @@ module Aspera
17
17
  private_constant :CERT_PARAMETERS, :GENERIC_ISSUER, :ONE_YEAR_SECONDS
18
18
 
19
19
  class << self
20
- # generates and adds self signed cert to provided webrick options
20
+ # Fill and self sign provided certificate
21
21
  def fill_self_signed_cert(cert, key, digest = 'SHA256')
22
22
  cert.subject = cert.issuer = OpenSSL::X509::Name.parse(GENERIC_ISSUER)
23
23
  cert.not_before = cert.not_after = Time.now
@@ -61,7 +61,7 @@ module Aspera
61
61
  raise "unexpected key in certificate config: only: #{CERT_PARAMETERS.join(', ')}" if certificate.keys.any?{|key|!CERT_PARAMETERS.include?(key)}
62
62
  if certificate.key?(:pkcs12)
63
63
  Log.log.debug('Using PKCS12 certificate')
64
- raise 'pkcs12 requires a password' unless certificate.key?(:key)
64
+ raise 'pkcs12 requires a key (password)' unless certificate.key?(:key)
65
65
  pkcs12 = OpenSSL::PKCS12.new(File.read(certificate[:pkcs12]), certificate[:key])
66
66
  webrick_options[:SSLCertificate] = pkcs12.certificate
67
67
  webrick_options[:SSLPrivateKey] = pkcs12.key
@@ -86,7 +86,8 @@ module Aspera
86
86
  end
87
87
  end
88
88
  # call constructor of parent class, but capture STDERR
89
- # self signed certificate generates characters on STDERR, see create_self_signed_cert in webrick/ssl.rb
89
+ # self signed certificate generates characters on STDERR
90
+ # see create_self_signed_cert in webrick/ssl.rb
90
91
  Log.capture_stderr { super(webrick_options) }
91
92
  end
92
93
 
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: transfer.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+
8
+ descriptor_data = "\n\x0etransfer.proto\x12\x0btransfersdk\"*\n\x05\x45rror\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"\x13\n\x11\x41PIVersionRequest\"/\n\x12\x41PIVersionResponse\x12\x19\n\x11supportedVersions\x18\x01 \x03(\t\"\x8f\x01\n\rRetryStrategy\x12\x30\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x1f.transfersdk.BasicRetryStrategyH\x00\x12?\n\x07\x62\x61\x63koff\x18\x02 \x01(\x0b\x32,.transfersdk.ExponentialBackoffRetryStrategyH\x00\x42\x0b\n\tretryType\"=\n\x12\x42\x61sicRetryStrategy\x12\x10\n\x08maxCount\x18\x01 \x01(\x03\x12\x15\n\rretryInterval\x18\x02 \x01(\x03\"r\n\x1f\x45xponentialBackoffRetryStrategy\x12\x13\n\x0bmaxAttempts\x18\x01 \x01(\x03\x12\x12\n\nmultiplier\x18\x02 \x01(\x03\x12\x14\n\x0cinitialDelay\x18\x03 \x01(\x03\x12\x10\n\x08maxDelay\x18\x04 \x01(\x03\"\x97\x01\n\x0eTransferConfig\x12)\n\x05retry\x18\x01 \x01(\x0b\x32\x1a.transfersdk.RetryStrategy\x12\x0f\n\x07license\x18\x02 \x01(\t\x12\x10\n\x08localLog\x18\x03 \x01(\t\x12\x11\n\tremoteLog\x18\x04 \x01(\t\x12\x10\n\x08logLevel\x18\x05 \x01(\x0f\x12\x12\n\nasperaConf\x18\x06 \x01(\t\"/\n\rTransferRange\x12\x0e\n\x06offset\x18\x01 \x01(\x03\x12\x0e\n\x06length\x18\x02 \x01(\x03\"\x85\x01\n\x0fTransferRequest\x12/\n\x0ctransferType\x18\x01 \x01(\x0e\x32\x19.transfersdk.TransferType\x12+\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x1b.transfersdk.TransferConfig\x12\x14\n\x0ctransferSpec\x18\x03 \x01(\t\"\xcf\x01\n\x15StartTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12/\n\x0ctransferType\x18\x04 \x01(\x0e\x32\x19.transfersdk.TransferType\x12+\n\x06status\x18\x05 \x01(\x0e\x32\x1b.transfersdk.TransferStatus\x12!\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x12.transfersdk.Error\")\n\x13TransferInfoRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\"\xb5\x03\n\x10TransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12/\n\x0ctransferType\x18\x04 \x01(\x0e\x32\x19.transfersdk.TransferType\x12+\n\x06status\x18\x05 \x01(\x0e\x32\x1b.transfersdk.TransferStatus\x12!\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x12.transfersdk.Error\x12\x31\n\rtransferEvent\x18\x07 \x01(\x0e\x32\x1a.transfersdk.TransferEvent\x12/\n\x0ctransferInfo\x18\x08 \x01(\x0b\x32\x19.transfersdk.TransferInfo\x12\x0f\n\x07message\x18\t \x01(\t\x12<\n\x0bsessionInfo\x18\n \x01(\x0b\x32\'.transfersdk.SessionTransferInformation\x12\x36\n\x08\x66ileInfo\x18\x0b \x01(\x0b\x32$.transfersdk.FileTransferInformation\"\x91\x02\n\x15QueryTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12/\n\x0ctransferType\x18\x04 \x01(\x0e\x32\x19.transfersdk.TransferType\x12+\n\x06status\x18\x05 \x01(\x0e\x32\x1b.transfersdk.TransferStatus\x12!\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x12.transfersdk.Error\x12/\n\x0ctransferInfo\x18\x07 \x01(\x0b\x32\x19.transfersdk.TransferInfo\x12\x0f\n\x07message\x18\x08 \x01(\t\"\x8f\x04\n\x0cTransferInfo\x12\x17\n\x0f\x61verageRateKbps\x18\x01 \x01(\x03\x12\x11\n\tbytesLost\x18\x02 \x01(\x03\x12\x18\n\x10\x62ytesTransferred\x18\x03 \x01(\x03\x12\x14\n\x0c\x62ytesWritten\x18\x04 \x01(\x03\x12\x1c\n\x14\x64irectoriesCompleted\x18\x05 \x01(\x03\x12\x15\n\rstartTimeUsec\x18\x06 \x01(\x03\x12\x13\n\x0b\x65lapsedUsec\x18\x07 \x01(\x03\x12\x13\n\x0b\x65ndTimeUsec\x18\x08 \x01(\x03\x12\x11\n\terrorCode\x18\t \x01(\t\x12\x18\n\x10\x65rrorDescription\x18\n \x01(\t\x12\x16\n\x0e\x66ilesCompleted\x18\x0b \x01(\x03\x12\x16\n\x0etargetRateKbps\x18\x0c \x01(\x03\x12\x13\n\x0bminRateKbps\x18\r \x01(\x03\x12\x1d\n\x15\x61rgTransfersAttempted\x18\x0e \x01(\x03\x12\x1a\n\x12\x61rgTransfersPassed\x18\x0f \x01(\x03\x12\x1b\n\x13\x61rgTransfersSkipped\x18\x10 \x01(\x03\x12\x1a\n\x12\x61rgTransfersFailed\x18\x11 \x01(\x03\x12\x18\n\x10\x66ileChecksumType\x18\x12 \x01(\t\x12\x0e\n\x06\x63ookie\x18\x13 \x01(\t\x12\x11\n\tdirection\x18\x14 \x01(\t\x12\x11\n\toperation\x18\x15 \x01(\t\x12\x0e\n\x06tags64\x18\x16 \x01(\t\"\xfe\x11\n\x1aSessionTransferInformation\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0c\n\x04user\x18\x03 \x01(\t\x12\x12\n\nclientUser\x18\x04 \x01(\t\x12\x14\n\x0c\x63lientNodeId\x18\x05 \x01(\t\x12\x17\n\x0f\x63lientClusterId\x18\x06 \x01(\t\x12\x14\n\x0cserverNodeId\x18\x07 \x01(\t\x12\x17\n\x0fserverClusterId\x18\x08 \x01(\t\x12\x17\n\x0f\x63lientIPAddress\x18\t \x01(\t\x12\x17\n\x0fserverIPAddress\x18\n \x01(\t\x12\x0c\n\x04port\x18\x0b \x01(\x03\x12\x0f\n\x07tcpPort\x18\x0c \x01(\x03\x12\x0e\n\x06status\x18\r \x01(\t\x12\x15\n\rstartTimeUsec\x18\x0e \x01(\x03\x12\x13\n\x0b\x65ndTimeUsec\x18\x0f \x01(\x03\x12\x13\n\x0b\x65lapsedUsec\x18\x10 \x01(\x03\x12\x18\n\x10\x62ytesTransferred\x18\x11 \x01(\x03\x12\x14\n\x0c\x62ytesWritten\x18\x12 \x01(\x03\x12\x11\n\tbytesLost\x18\x13 \x01(\x03\x12\x16\n\x0e\x66ilesCompleted\x18\x14 \x01(\x03\x12\x13\n\x0b\x66ilesFailed\x18\x15 \x01(\x03\x12\x14\n\x0c\x66ilesSkipped\x18\x16 \x01(\x03\x12\x1c\n\x14\x64irectoriesCompleted\x18\x17 \x01(\x03\x12\x16\n\x0etargetRateKbps\x18\x18 \x01(\x03\x12\x13\n\x0bminRateKbps\x18\x19 \x01(\x03\x12\x14\n\x0c\x63\x61lcRateKbps\x18\x1a \x01(\x03\x12\x18\n\x10networkDelayUsec\x18\x1b \x01(\x03\x12\x11\n\terrorCode\x18\x1c \x01(\x03\x12\x11\n\terrorDesc\x18\x1d \x01(\t\x12\x18\n\x10manifestFilePath\x18\x1e \x01(\t\x12\x1f\n\x17sourcePathsScanExcluded\x18\x1f \x01(\x03\x12 \n\x18sourcePathsScanIrregular\x18 \x01(\x03\x12\x1d\n\x15sourcePathsScanFailed\x18! \x01(\x03\x12 \n\x18sourcePathsScanAttempted\x18\" \x01(\x03\x12\x18\n\x10transfersSkipped\x18# \x01(\x03\x12\x17\n\x0ftransfersPassed\x18$ \x01(\x03\x12\x17\n\x0ftransfersFailed\x18% \x01(\x03\x12\x1a\n\x12transfersAttempted\x18& \x01(\x03\x12\x0e\n\x06\x63ookie\x18\' \x01(\t\x12\x11\n\tdirection\x18( \x01(\t\x12\x18\n\x10\x66ileChecksumType\x18) \x01(\t\x12\x11\n\toperation\x18* \x01(\t\x12\x0c\n\x04tags\x18+ \x01(\t\x12\x1d\n\x15\x61rgTransfersAttempted\x18, \x01(\x03\x12\x1a\n\x12\x61rgTransfersPassed\x18- \x01(\x03\x12\x1b\n\x13\x61rgTransfersSkipped\x18. \x01(\x03\x12\x1a\n\x12\x61rgTransfersFailed\x18/ \x01(\x03\x12\x12\n\nencryption\x18\x30 \x01(\t\x12\x10\n\x08\x61\x64\x61ptive\x18\x31 \x01(\t\x12\x0e\n\x06remote\x18\x32 \x01(\t\x12\x13\n\x0b\x64\x65stination\x18\x33 \x01(\t\x12\x10\n\x08priority\x18\x34 \x01(\x03\x12\x12\n\ntransferId\x18\x35 \x01(\t\x12\x0f\n\x07rateCap\x18\x36 \x01(\x03\x12\x12\n\nminRateCap\x18\x37 \x01(\x03\x12\x11\n\tpolicyCap\x18\x38 \x01(\t\x12\x10\n\x08rateLock\x18\x39 \x01(\t\x12\x13\n\x0bminRateLock\x18: \x01(\t\x12\x12\n\npolicyLock\x18; \x01(\t\x12\x16\n\x0eserverHostname\x18< \x01(\t\x12\x15\n\rremoteAddress\x18= \x01(\t\x12\x0e\n\x06\x63ipher\x18> \x01(\t\x12\x14\n\x0cresumePolicy\x18? \x01(\t\x12\x14\n\x0c\x63reatePolicy\x18@ \x01(\x03\x12\x16\n\x0emanifestPolicy\x18\x41 \x01(\t\x12\x0f\n\x07precalc\x18\x42 \x01(\t\x12\x17\n\x0foverwritePolicy\x18\x43 \x01(\t\x12\x16\n\x0erttAutocorrect\x18\x44 \x01(\t\x12\x12\n\ntimePolicy\x18\x45 \x01(\x03\x12\x1a\n\x12manifestInprogress\x18\x46 \x01(\t\x12\x14\n\x0c\x66ilesEncrypt\x18G \x01(\t\x12\x14\n\x0c\x66ilesDecrypt\x18H \x01(\t\x12\x14\n\x0c\x64\x61tagramSize\x18I \x01(\x03\x12\x14\n\x0cvLinkVersion\x18J \x01(\x03\x12\x18\n\x10peerVLinkVersion\x18K \x01(\x03\x12\x19\n\x11vLinkLocalEnabled\x18L \x01(\t\x12\x1a\n\x12vLinkRemoteEnabled\x18M \x01(\t\x12\x15\n\rreadBlockSize\x18N \x01(\x03\x12\x16\n\x0ewriteBlockSize\x18O \x01(\x03\x12\x17\n\x0f\x63lusterNumNodes\x18P \x01(\x03\x12\x15\n\rclusterNodeId\x18Q \x01(\x03\x12\x11\n\tmoveRange\x18R \x01(\t\x12\x11\n\tkeepalive\x18S \x01(\t\x12\x11\n\ttestLogin\x18T \x01(\t\x12\x10\n\x08useProxy\x18U \x01(\t\x12\x1c\n\x14rateControlAlgorithm\x18V \x01(\t\x12\x0c\n\x04pmtu\x18W \x01(\x03\x12\x18\n\x10preTransferFiles\x18X \x01(\x03\x12\x18\n\x10preTransferBytes\x18Y \x01(\x03\x12\x17\n\x0fpreTransferDirs\x18Z \x01(\x03\x12\x1a\n\x12preTransferSpecial\x18[ \x01(\x03\x12 \n\x18sourcePathsScanCompleted\x18\\ \x01(\x03\x12\x19\n\x11\x61rgScansAttempted\x18] \x01(\x03\x12\x19\n\x11\x61rgScansCompleted\x18^ \x01(\x03\x12\x1b\n\x13\x61rgFaspFileArgIndex\x18_ \x01(\x03\x12\x1b\n\x13\x64irCreatesAttempted\x18` \x01(\x03\x12\x18\n\x10\x64irCreatesFailed\x18\x61 \x01(\x03\x12\x18\n\x10\x64irCreatesPassed\x18\x62 \x01(\x03\x12\x19\n\x11\x64irScansCompleted\x18\x63 \x01(\x03\"\xdb\x02\n\x17\x46ileTransferInformation\x12\x0e\n\x06\x66ileId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x15\n\rstartTimeUsec\x18\x03 \x01(\x03\x12\x13\n\x0b\x65lapsedUsec\x18\x04 \x01(\x03\x12\x0e\n\x06status\x18\x05 \x01(\t\x12\x11\n\terrorCode\x18\x06 \x01(\x03\x12\x18\n\x10\x65rrorDescription\x18\x07 \x01(\t\x12\x0c\n\x04size\x18\t \x01(\x03\x12\x10\n\x08\x66ileType\x18\n \x01(\t\x12\x18\n\x10\x66ileChecksumType\x18\x0b \x01(\t\x12\x10\n\x08\x63hecksum\x18\x0c \x01(\t\x12\x11\n\tstartByte\x18\r \x01(\x03\x12\x14\n\x0c\x62ytesWritten\x18\x0e \x01(\x03\x12\x17\n\x0f\x62ytesContiguous\x18\x0f \x01(\x03\x12\x11\n\tsessionId\x18\x10 \x01(\t\x12\x18\n\x10\x66\x61spFileArgIndex\x18\x11 \x01(\x03\"G\n\x1bTransferModificationRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x14\n\x0ctransferSpec\x18\x02 \x01(\t\"\x96\x01\n\x1cTransferModificationResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12+\n\x06status\x18\x03 \x01(\x0e\x32\x1b.transfersdk.TransferStatus\x12!\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x12.transfersdk.Error\"Z\n\x13TransferPathRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12/\n\x0ctransferPath\x18\x02 \x03(\x0b\x32\x19.transfersdk.TransferPath\"^\n\x0cTransferPath\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65stination\x18\x02 \x01(\t\x12)\n\x05range\x18\x03 \x01(\x0b\x32\x1a.transfersdk.TransferRange\"a\n\x14TransferPathResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12!\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x12.transfersdk.Error\"3\n\x1dLockPersistentTransferRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\"k\n\x1eLockPersistentTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12!\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x12.transfersdk.Error\"[\n\x13RegistrationRequest\x12\x12\n\ntransferId\x18\x01 \x03(\t\x12\x30\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x1f.transfersdk.RegistrationFilter\"\xc0\x02\n\x12RegistrationFilter\x12\x39\n\x08operator\x18\x01 \x01(\x0e\x32\'.transfersdk.RegistrationFilterOperator\x12-\n\teventType\x18\x02 \x03(\x0e\x32\x1a.transfersdk.TransferEvent\x12\x12\n\ntransferId\x18\x03 \x03(\t\x12\x0e\n\x06\x63ookie\x18\x04 \x03(\t\x12\x0e\n\x06tags64\x18\x05 \x03(\t\x12\x11\n\tdirection\x18\x06 \x01(\t\x12\x13\n\x0b\x63ookieRegex\x18\x07 \x01(\t\x12/\n\x0ctransferType\x18\x08 \x03(\x0e\x32\x19.transfersdk.TransferType\x12\x33\n\x0etransferStatus\x18\t \x03(\x0e\x32\x1b.transfersdk.TransferStatus\"8\n\x13StopTransferRequest\x12\x12\n\ntransferId\x18\x01 \x03(\t\x12\r\n\x05\x64\x65lay\x18\x02 \x01(\x03\"U\n\x14StopTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12)\n\nstopResult\x18\x02 \x03(\x0b\x32\x15.transfersdk.StopInfo\"R\n\x08StopInfo\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x0f\n\x07stopped\x18\x02 \x01(\x08\x12!\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x12.transfersdk.Error\"\x15\n\x13InstanceInfoRequest\"v\n\x14InstanceInfoResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\'\n\x04info\x18\x02 \x01(\x0b\x32\x19.transfersdk.InstanceInfo\x12!\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x12.transfersdk.Error\"\x9b\x01\n\x0cInstanceInfo\x12\x16\n\x0emanagementPort\x18\x01 \x01(\x03\x12+\n\nasperaInfo\x18\x02 \x03(\x0b\x32\x17.transfersdk.AsperaInfo\x12-\n\x0blicenseInfo\x18\x03 \x01(\x0b\x32\x18.transfersdk.LicenseInfo\x12\x17\n\x0fpromiscuousMode\x18\x04 \x01(\x08\"]\n\x0bLicenseInfo\x12\x0f\n\x07maxRate\x18\x01 \x01(\t\x12\x15\n\raccountNumber\x18\x02 \x01(\t\x12\x15\n\rlicenseNumber\x18\x03 \x01(\t\x12\x0f\n\x07license\x18\x04 \x01(\t\"u\n\nAsperaInfo\x12\x14\n\x0c\x61speraBinary\x18\x01 \x01(\t\x12\x15\n\rasperaVersion\x18\x02 \x01(\t\x12\x17\n\x0foperatingSystem\x18\x03 \x01(\t\x12!\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x12.transfersdk.Error\"(\n\x10PeerCheckRequest\x12\x14\n\x0ctransferSpec\x18\x01 \x01(\t\"]\n\x11PeerCheckResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x11\n\treachable\x18\x02 \x01(\x08\x12!\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x12.transfersdk.Error\"\x89\x01\n\x17WriteStreamChunkRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12)\n\x05range\x18\x03 \x01(\x0b\x32\x1a.transfersdk.TransferRange\x12!\n\x05\x63hunk\x18\x04 \x01(\x0b\x32\x12.transfersdk.Chunk\"e\n\x18WriteStreamChunkResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12!\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x12.transfersdk.Error\"g\n\x12WriteStreamRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12!\n\x05\x63hunk\x18\x04 \x01(\x0b\x32\x12.transfersdk.Chunk\"`\n\x13WriteStreamResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12!\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x12.transfersdk.Error\"\'\n\x11ReadStreamRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\"\x8e\x01\n\x12ReadStreamResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x10\n\x08pathSize\x18\x03 \x01(\x03\x12!\n\x05\x63hunk\x18\x04 \x01(\x0b\x32\x12.transfersdk.Chunk\x12!\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x12.transfersdk.Error\"\x19\n\x05\x43hunk\x12\x10\n\x08\x63ontents\x18\x01 \x01(\x0c\"Z\n\x11ValidationRequest\x12\x14\n\x0ctransferSpec\x18\x01 \x01(\t\x12/\n\x0ctransferType\x18\x02 \x01(\x0e\x32\x19.transfersdk.TransferType\"\x8a\x01\n\x12ValidationResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\r\n\x05valid\x18\x02 \x01(\x08\x12\x18\n\x10validatorVersion\x18\x03 \x01(\t\x12\x14\n\x0cunknownField\x18\x04 \x03(\t\x12!\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x12.transfersdk.Error\"\xbf\x0e\n\x0eTransferSpecV1\x12\x0e\n\x06\x63ipher\x18\x01 \x01(\t\x12\x1a\n\x12\x63ontent_protection\x18\x02 \x01(\t\x12#\n\x1b\x63ontent_protection_password\x18\x03 \x01(\t\x12\x0e\n\x06\x63ookie\x18\x04 \x01(\t\x12\x12\n\ncreate_dir\x18\x05 \x01(\x08\x12\x1e\n\x16\x64\x65lete_before_transfer\x18\x06 \x01(\x08\x12\x15\n\rdelete_source\x18\x07 \x01(\x08\x12\x1b\n\x13\x64\x65stination_root_id\x18\x08 \x01(\t\x12\x11\n\tdirection\x18\t \x01(\t\x12\x1a\n\x12\x65xclude_newer_than\x18\n \x01(\t\x12\x1a\n\x12\x65xclude_older_than\x18\x0b \x01(\t\x12\x11\n\tfasp_port\x18\x0c \x01(\x03\x12\x15\n\rhttp_fallback\x18\r \x01(\x08\x12\x1a\n\x12http_fallback_port\x18\x0e \x01(\x03\x12\x1b\n\x13https_fallback_port\x18\x0f \x01(\x03\x12\x1b\n\x13move_after_transfer\x18\x10 \x01(\t\x12\x15\n\rmulti_session\x18\x11 \x01(\x03\x12\x1f\n\x17multi_session_threshold\x18\x12 \x01(\x03\x12\x11\n\toverwrite\x18\x13 \x01(\t\x12 \n\x05paths\x18\x14 \x03(\x0b\x32\x11.transfersdk.Path\x12\x1d\n\x15precalculate_job_size\x18\x15 \x01(\x08\x12\x1c\n\x14preserve_access_time\x18\x16 \x01(\x08\x12\x1e\n\x16preserve_creation_time\x18\x17 \x01(\x08\x12\"\n\x1apreserve_modification_time\x18\x18 \x01(\x08\x12\x16\n\x0epreserve_times\x18\x19 \x01(\x08\x12\x13\n\x0brate_policy\x18\x1a \x01(\t\x12\x19\n\x11remote_access_key\x18\x1b \x01(\t\x12\x13\n\x0bremote_host\x18\x1c \x01(\t\x12\x17\n\x0fremote_password\x18\x1d \x01(\t\x12\x13\n\x0bremote_user\x18\x1e \x01(\t\x12\x1d\n\x15remove_after_transfer\x18\x1f \x01(\x08\x12 \n\x18remove_empty_directories\x18 \x01(\x08\x12\x15\n\rresume_policy\x18! \x01(\t\x12\x16\n\x0eretry_duration\x18\" \x01(\x03\x12\x16\n\x0esource_root_id\x18# \x01(\t\x12\x10\n\x08ssh_port\x18$ \x01(\x03\x12\x17\n\x0fssh_private_key\x18% \x01(\t\x12\"\n\x1assh_private_key_passphrase\x18& \x01(\t\x12\x16\n\x0esymlink_policy\x18\' \x01(\t\x12\x0c\n\x04tags\x18( \x01(\t\x12\x0e\n\x06tags64\x18) \x01(\t\x12\x1c\n\x14target_rate_cap_kbps\x18* \x01(\x03\x12\x18\n\x10target_rate_kbps\x18+ \x01(\x03\x12\r\n\x05title\x18, \x01(\t\x12\r\n\x05token\x18- \x01(\t\x12\x11\n\tuse_ascp4\x18. \x01(\x08\x12*\n\nfasp_proxy\x18/ \x01(\x0b\x32\x16.transfersdk.FASPProxy\x12\x18\n\x10\x64\x65stination_root\x18\x30 \x01(\t\x12\x13\n\x0bsource_root\x18\x31 \x01(\t\x12\x19\n\x11min_rate_cap_kbps\x18\x32 \x01(\x03\x12\x18\n\x10lock_rate_policy\x18\x33 \x01(\x08\x12\x1d\n\x15lock_target_rate_kbps\x18\x34 \x01(\x08\x12\x1a\n\x12lock_min_rate_kbps\x18\x35 \x01(\x08\x12\x12\n\nsrc_base64\x18\x36 \x01(\t\x12#\n\x04icos\x18\x37 \x01(\x0b\x32\x15.transfersdk.ICOSSpec\x12*\n\x08node_api\x18\x38 \x01(\x0b\x32\x18.transfersdk.NodeAPISpec\x12\x1b\n\x13\x61pply_local_docroot\x18\x39 \x01(\x08\x12\x15\n\rpreserve_acls\x18: \x01(\t\x12\x1c\n\x14preserve_remote_acls\x18; \x01(\t\x12\x1f\n\x17preserve_file_owner_uid\x18< \x01(\x08\x12\x1f\n\x17preserve_file_owner_gid\x18= \x01(\x08\x12\x1f\n\x17preserve_extended_attrs\x18> \x01(\t\x12&\n\x1epreserve_remote_extended_attrs\x18? \x01(\t\x12#\n\x1bpreserve_source_access_time\x18@ \x01(\x08\x12\x1f\n\x17remove_empty_source_dir\x18\x41 \x01(\x08\x12\x1d\n\x15save_before_overwrite\x18\x42 \x01(\x08\x12\x1c\n\x14skip_duplicate_check\x18\x43 \x01(\x08\x12\x1a\n\x12skip_special_files\x18\x44 \x01(\x08\"+\n\x04Path\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65stination\x18\x02 \x01(\t\"<\n\tFASPProxy\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t\"\xcc\x02\n\x0eTransferSpecV2\x12\x33\n\x12session_initiation\x18\x01 \x01(\x0b\x32\x17.transfersdk.Initiation\x12\'\n\x08security\x18\x02 \x01(\x0b\x32\x15.transfersdk.Security\x12\'\n\x08tracking\x18\x03 \x01(\x0b\x32\x15.transfersdk.Tracking\x12,\n\x0b\x66ile_system\x18\x04 \x01(\x0b\x32\x17.transfersdk.Filesystem\x12)\n\ttransport\x18\x05 \x01(\x0b\x32\x16.transfersdk.Transport\x12#\n\x06\x61ssets\x18\x06 \x01(\x0b\x32\x13.transfersdk.Assets\x12\x11\n\tdirection\x18\x07 \x01(\t\x12\x13\n\x0bremote_host\x18\x08 \x01(\t\x12\r\n\x05title\x18\t \x01(\t\"\x80\x01\n\nInitiation\x12!\n\x03ssh\x18\x01 \x01(\x0b\x32\x14.transfersdk.SSHSpec\x12#\n\x04icos\x18\x02 \x01(\x0b\x32\x15.transfersdk.ICOSSpec\x12*\n\x08node_api\x18\x03 \x01(\x0b\x32\x18.transfersdk.NodeAPISpec\"\x9f\x01\n\x07SSHSpec\x12\x10\n\x08ssh_port\x18\x01 \x01(\x03\x12\x17\n\x0fremote_password\x18\x02 \x01(\t\x12\x13\n\x0bremote_user\x18\x03 \x01(\t\x12\x17\n\x0fssh_private_key\x18\x04 \x01(\t\x12\"\n\x1assh_private_key_passphrase\x18\x05 \x01(\t\x12\x17\n\x0fssh_fingerprint\x18\x06 \x01(\t\"j\n\x08ICOSSpec\x12\x0f\n\x07\x61pi_key\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12\x1f\n\x17ibm_service_instance_id\x18\x03 \x01(\t\x12\x1c\n\x14ibm_service_endpoint\x18\x04 \x01(\t\"/\n\x11NodeAPIHeaderSpec\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"K\n\x0bNodeAPISpec\x12\x0b\n\x03url\x18\x01 \x01(\t\x12/\n\x07headers\x18\x02 \x03(\x0b\x32\x1e.transfersdk.NodeAPIHeaderSpec\"i\n\x08Security\x12#\n\x1b\x63ontent_protection_password\x18\x01 \x01(\t\x12\x19\n\x11remote_access_key\x18\x02 \x01(\t\x12\r\n\x05token\x18\x03 \x01(\t\x12\x0e\n\x06\x63ipher\x18\x04 \x01(\t\"8\n\x08Tracking\x12\x0e\n\x06\x63ookie\x18\x01 \x01(\t\x12\x0c\n\x04tags\x18\x02 \x01(\t\x12\x0e\n\x06tags64\x18\x03 \x01(\t\"\xc4\x07\n\nFilesystem\x12\x12\n\ncreate_dir\x18\x01 \x01(\x08\x12\x1e\n\x16\x64\x65lete_before_transfer\x18\x02 \x01(\x08\x12\x1a\n\x12\x65xclude_newer_than\x18\x03 \x01(\t\x12\x1a\n\x12\x65xclude_older_than\x18\x04 \x01(\t\x12\x1b\n\x13move_after_transfer\x18\x05 \x01(\t\x12\x11\n\toverwrite\x18\x06 \x01(\t\x12\x1d\n\x15precalculate_job_size\x18\x07 \x01(\x08\x12\x1c\n\x14preserve_access_time\x18\x08 \x01(\x08\x12\x1e\n\x16preserve_creation_time\x18\t \x01(\x08\x12\"\n\x1apreserve_modification_time\x18\n \x01(\x08\x12\x16\n\x0epreserve_times\x18\x0b \x01(\x08\x12\x1d\n\x15remove_after_transfer\x18\x0c \x01(\x08\x12 \n\x18remove_empty_directories\x18\r \x01(\x08\x12\x15\n\rresume_policy\x18\x0e \x01(\t\x12\x16\n\x0esymlink_policy\x18\x0f \x01(\t\x12\x15\n\rchecksum_type\x18\x10 \x01(\t\x12\x12\n\nsrc_base64\x18\x11 \x01(\t\x12\x34\n\x12inclusion_patterns\x18\x12 \x03(\x0b\x32\x18.transfersdk.PathPattern\x12\x34\n\x12\x65xclusion_patterns\x18\x13 \x03(\x0b\x32\x18.transfersdk.PathPattern\x12\x1b\n\x13\x61pply_local_docroot\x18\x14 \x01(\x08\x12\x15\n\rpreserve_acls\x18\x15 \x01(\t\x12\x1c\n\x14preserve_remote_acls\x18\x16 \x01(\t\x12\x1f\n\x17preserve_file_owner_uid\x18\x17 \x01(\x08\x12\x1f\n\x17preserve_file_owner_gid\x18\x18 \x01(\x08\x12\x1f\n\x17preserve_extended_attrs\x18\x19 \x01(\t\x12&\n\x1epreserve_remote_extended_attrs\x18\x1a \x01(\t\x12#\n\x1bpreserve_source_access_time\x18\x1b \x01(\x08\x12\x1f\n\x17remove_empty_source_dir\x18\x1c \x01(\x08\x12\x1d\n\x15save_before_overwrite\x18\x1d \x01(\x08\x12\x1c\n\x14skip_duplicate_check\x18\x1e \x01(\x08\x12\x1a\n\x12skip_special_files\x18\x1f \x01(\x08\"\xe1\x03\n\tTransport\x12\x11\n\tfasp_port\x18\x01 \x01(\x03\x12\x30\n\rhttp_fallback\x18\x02 \x01(\x0b\x32\x19.transfersdk.HTTPFallback\x12*\n\nfasp_proxy\x18\x03 \x01(\x0b\x32\x16.transfersdk.FASPProxy\x12)\n\tstreaming\x18\x04 \x01(\x0b\x32\x16.transfersdk.Streaming\x12\x30\n\rmulti_session\x18\x05 \x01(\x0b\x32\x19.transfersdk.MultiSession\x12\x1f\n\x17multi_session_threshold\x18\x06 \x01(\x03\x12\x13\n\x0brate_policy\x18\x07 \x01(\t\x12\x18\n\x10lock_rate_policy\x18\x08 \x01(\x08\x12\x1c\n\x14target_rate_cap_kbps\x18\t \x01(\x03\x12\x18\n\x10target_rate_kbps\x18\n \x01(\x03\x12\x19\n\x11min_rate_cap_kbps\x18\x0b \x01(\x03\x12\x15\n\rmin_rate_kbps\x18\x0c \x01(\x03\x12\x1d\n\x15lock_target_rate_kbps\x18\r \x01(\x08\x12\x1a\n\x12lock_min_rate_kbps\x18\x0e \x01(\x08\x12\x11\n\tuse_ascp4\x18\x0f \x01(\x08\"\x8e\x01\n\x06\x41ssets\x12\x1b\n\x13\x64\x65stination_root_id\x18\x01 \x01(\t\x12\x16\n\x0esource_root_id\x18\x02 \x01(\t\x12\x18\n\x10\x64\x65stination_root\x18\x03 \x01(\t\x12\x13\n\x0bsource_root\x18\x04 \x01(\t\x12 \n\x05paths\x18\x05 \x03(\x0b\x32\x11.transfersdk.Path\"\x1e\n\x0bPathPattern\x12\x0f\n\x07pattern\x18\x01 \x01(\t\"+\n\x0cHTTPFallback\x12\x0c\n\x04port\x18\x01 \x01(\x03\x12\r\n\x05proxy\x18\x02 \x01(\t\"\x90\x01\n\tStreaming\x12\x12\n\nchunk_size\x18\x01 \x01(\x03\x12\x14\n\x0clocal_memory\x18\x02 \x01(\x03\x12\x15\n\rremote_memory\x18\x03 \x01(\x03\x12\x13\n\x0bsparse_file\x18\x04 \x01(\x08\x12-\n\x0b\x63ompression\x18\x05 \x01(\x0b\x32\x18.transfersdk.Compression\"+\n\x0b\x43ompression\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0c\n\x04hint\x18\x02 \x01(\x05\"\xe0\x01\n\x0cMultiSession\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\x12\x1a\n\x12number_of_sessions\x18\x02 \x01(\x05\x12-\n\x05hosts\x18\x03 \x01(\x0b\x32\x1e.transfersdk.MultiSessionHosts\x12>\n\x0e\x66ile_splitting\x18\x04 \x01(\x0b\x32&.transfersdk.MultiSessionFileSplitting\x12\x35\n\tbandwidth\x18\x05 \x01(\x0b\x32\".transfersdk.MultiSessionBandwidth\"2\n\x11MultiSessionHosts\x12\x0e\n\x06usedns\x18\x01 \x01(\x08\x12\r\n\x05hosts\x18\x02 \x03(\t\"6\n\x19MultiSessionFileSplitting\x12\x19\n\x11size_kb_threshold\x18\x01 \x01(\x05\"9\n\x15MultiSessionBandwidth\x12 \n\x18\x62\x61ndwidth_kpbs_threshold\x18\x01 \x01(\x05*\xd3\x01\n\x0cTransferType\x12\x19\n\x15UNKNOWN_TRANSFER_TYPE\x10\x00\x12\x10\n\x0c\x46ILE_REGULAR\x10\x01\x12\x13\n\x0f\x46ILE_PERSISTENT\x10\x02\x12\x18\n\x14URL_STREAM_TO_STREAM\x10\x03\x12\x1b\n\x17\x46ILE_TO_STREAM_DOWNLOAD\x10\x04\x12\x19\n\x15STREAM_TO_FILE_UPLOAD\x10\x05\x12\x1c\n\x18PERSISTENT_STREAM_UPLOAD\x10\x06\x12\x11\n\rASYNC_SESSION\x10\x07*\x80\x01\n\x0eTransferStatus\x12\x12\n\x0eUNKNOWN_STATUS\x10\x00\x12\n\n\x06QUEUED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\r\n\tCOMPLETED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\x0c\n\x08\x43\x41NCELED\x10\x05\x12\n\n\x06PAUSED\x10\x06\x12\x0c\n\x08ORPHANED\x10\x07*\x8c\x02\n\rTransferEvent\x12\x11\n\rUNKNOWN_EVENT\x10\x00\x12\x11\n\rSESSION_START\x10\x01\x12\x10\n\x0cSESSION_STOP\x10\x02\x12\x11\n\rSESSION_ERROR\x10\x03\x12\x0e\n\nFILE_START\x10\x04\x12\r\n\tFILE_STOP\x10\x05\x12\x0e\n\nFILE_ERROR\x10\x06\x12\x0c\n\x08\x41RG_STOP\x10\x07\x12\x0c\n\x08PROGRESS\x10\x08\x12\x0e\n\nCONNECTING\x10\t\x12\x15\n\x11RATE_MODIFICATION\x10\n\x12\r\n\tFILE_SKIP\x10\x0b\x12\x19\n\x15\x42\x41NDWIDTH_MEASUREMENT\x10\x0c\x12\x14\n\x10SESSION_CANCELED\x10\r*-\n\x1aRegistrationFilterOperator\x12\x06\n\x02OR\x10\x00\x12\x07\n\x03\x41ND\x10\x01\x32\xdc\n\n\x0fTransferService\x12M\n\x08Validate\x12\x1e.transfersdk.ValidationRequest\x1a\x1f.transfersdk.ValidationResponse\"\x00\x12S\n\rStartTransfer\x12\x1c.transfersdk.TransferRequest\x1a\".transfersdk.StartTransferResponse\"\x00\x12[\n\x18StartTransferWithMonitor\x12\x1c.transfersdk.TransferRequest\x1a\x1d.transfersdk.TransferResponse\"\x00\x30\x01\x12W\n\rQueryTransfer\x12 .transfersdk.TransferInfoRequest\x1a\".transfersdk.QueryTransferResponse\"\x00\x12g\n\x0eModifyTransfer\x12(.transfersdk.TransferModificationRequest\x1a).transfersdk.TransferModificationResponse\"\x00\x12Y\n\x10\x41\x64\x64TransferPaths\x12 .transfersdk.TransferPathRequest\x1a!.transfersdk.TransferPathResponse\"\x00\x12s\n\x16LockPersistentTransfer\x12*.transfersdk.LockPersistentTransferRequest\x1a+.transfersdk.LockPersistentTransferResponse\"\x00\x12U\n\x0cStopTransfer\x12 .transfersdk.StopTransferRequest\x1a!.transfersdk.StopTransferResponse\"\x00\x12W\n\x10MonitorTransfers\x12 .transfersdk.RegistrationRequest\x1a\x1d.transfersdk.TransferResponse\"\x00\x30\x01\x12R\n\rGetAPIVersion\x12\x1e.transfersdk.APIVersionRequest\x1a\x1f.transfersdk.APIVersionResponse\"\x00\x12P\n\x07GetInfo\x12 .transfersdk.InstanceInfoRequest\x1a!.transfersdk.InstanceInfoResponse\"\x00\x12R\n\x0fIsPeerReachable\x12\x1d.transfersdk.PeerCheckRequest\x1a\x1e.transfersdk.PeerCheckResponse\"\x00\x12\x63\n\x10WriteStreamChunk\x12$.transfersdk.WriteStreamChunkRequest\x1a%.transfersdk.WriteStreamChunkResponse\"\x00(\x01\x12T\n\x0bWriteStream\x12\x1f.transfersdk.WriteStreamRequest\x1a .transfersdk.WriteStreamResponse\"\x00(\x01\x12Q\n\nReadStream\x12\x1e.transfersdk.ReadStreamRequest\x1a\x1f.transfersdk.ReadStreamResponse\"\x00\x30\x01\x42\x38\n\x1aibm.aspera.transferserviceZ\x1aibm.com/aspera/transfersdkb\x06proto3"
9
+
10
+ pool = Google::Protobuf::DescriptorPool.generated_pool
11
+ pool.add_serialized_file(descriptor_data)
12
+
13
+ module Transfersdk
14
+ Error = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Error").msgclass
15
+ APIVersionRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.APIVersionRequest").msgclass
16
+ APIVersionResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.APIVersionResponse").msgclass
17
+ RetryStrategy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.RetryStrategy").msgclass
18
+ BasicRetryStrategy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.BasicRetryStrategy").msgclass
19
+ ExponentialBackoffRetryStrategy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.ExponentialBackoffRetryStrategy").msgclass
20
+ TransferConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferConfig").msgclass
21
+ TransferRange = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferRange").msgclass
22
+ TransferRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferRequest").msgclass
23
+ StartTransferResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.StartTransferResponse").msgclass
24
+ TransferInfoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferInfoRequest").msgclass
25
+ TransferResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferResponse").msgclass
26
+ QueryTransferResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.QueryTransferResponse").msgclass
27
+ TransferInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferInfo").msgclass
28
+ SessionTransferInformation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.SessionTransferInformation").msgclass
29
+ FileTransferInformation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.FileTransferInformation").msgclass
30
+ TransferModificationRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferModificationRequest").msgclass
31
+ TransferModificationResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferModificationResponse").msgclass
32
+ TransferPathRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferPathRequest").msgclass
33
+ TransferPath = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferPath").msgclass
34
+ TransferPathResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferPathResponse").msgclass
35
+ LockPersistentTransferRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.LockPersistentTransferRequest").msgclass
36
+ LockPersistentTransferResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.LockPersistentTransferResponse").msgclass
37
+ RegistrationRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.RegistrationRequest").msgclass
38
+ RegistrationFilter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.RegistrationFilter").msgclass
39
+ StopTransferRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.StopTransferRequest").msgclass
40
+ StopTransferResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.StopTransferResponse").msgclass
41
+ StopInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.StopInfo").msgclass
42
+ InstanceInfoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.InstanceInfoRequest").msgclass
43
+ InstanceInfoResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.InstanceInfoResponse").msgclass
44
+ InstanceInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.InstanceInfo").msgclass
45
+ LicenseInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.LicenseInfo").msgclass
46
+ AsperaInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.AsperaInfo").msgclass
47
+ PeerCheckRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.PeerCheckRequest").msgclass
48
+ PeerCheckResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.PeerCheckResponse").msgclass
49
+ WriteStreamChunkRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.WriteStreamChunkRequest").msgclass
50
+ WriteStreamChunkResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.WriteStreamChunkResponse").msgclass
51
+ WriteStreamRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.WriteStreamRequest").msgclass
52
+ WriteStreamResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.WriteStreamResponse").msgclass
53
+ ReadStreamRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.ReadStreamRequest").msgclass
54
+ ReadStreamResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.ReadStreamResponse").msgclass
55
+ Chunk = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Chunk").msgclass
56
+ ValidationRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.ValidationRequest").msgclass
57
+ ValidationResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.ValidationResponse").msgclass
58
+ TransferSpecV1 = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferSpecV1").msgclass
59
+ Path = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Path").msgclass
60
+ FASPProxy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.FASPProxy").msgclass
61
+ TransferSpecV2 = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferSpecV2").msgclass
62
+ Initiation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Initiation").msgclass
63
+ SSHSpec = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.SSHSpec").msgclass
64
+ ICOSSpec = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.ICOSSpec").msgclass
65
+ NodeAPIHeaderSpec = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.NodeAPIHeaderSpec").msgclass
66
+ NodeAPISpec = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.NodeAPISpec").msgclass
67
+ Security = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Security").msgclass
68
+ Tracking = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Tracking").msgclass
69
+ Filesystem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Filesystem").msgclass
70
+ Transport = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Transport").msgclass
71
+ Assets = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Assets").msgclass
72
+ PathPattern = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.PathPattern").msgclass
73
+ HTTPFallback = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.HTTPFallback").msgclass
74
+ Streaming = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Streaming").msgclass
75
+ Compression = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.Compression").msgclass
76
+ MultiSession = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.MultiSession").msgclass
77
+ MultiSessionHosts = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.MultiSessionHosts").msgclass
78
+ MultiSessionFileSplitting = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.MultiSessionFileSplitting").msgclass
79
+ MultiSessionBandwidth = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.MultiSessionBandwidth").msgclass
80
+ TransferType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferType").enummodule
81
+ TransferStatus = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferStatus").enummodule
82
+ TransferEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.TransferEvent").enummodule
83
+ RegistrationFilterOperator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("transfersdk.RegistrationFilterOperator").enummodule
84
+ end
@@ -0,0 +1,82 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: transfer.proto for package 'transfersdk'
3
+
4
+ require 'grpc'
5
+ require 'transfer_pb'
6
+
7
+ module Transfersdk
8
+ module TransferService
9
+ #
10
+ # Transfer service definition. This service enables users to start, manage and monitor transfers.
11
+ # You can also get information about the transfer service settings and confirm the availability of
12
+ # communication between the engine and a remote transfer server.
13
+ class Service
14
+
15
+ include ::GRPC::GenericService
16
+
17
+ self.marshal_class_method = :encode
18
+ self.unmarshal_class_method = :decode
19
+ self.service_name = 'transfersdk.TransferService'
20
+
21
+ #
22
+ # Validate accepts a transfer spec string and a transfer type, and returns the validation result.
23
+ rpc :Validate, ::Transfersdk::ValidationRequest, ::Transfersdk::ValidationResponse
24
+ #
25
+ # StartTransfer starts a new transfer and returns the transfer information required to manage and monitor the transfer.
26
+ # This request doesn't close until the transfer is terminated or the request is canceled by the client.
27
+ rpc :StartTransfer, ::Transfersdk::TransferRequest, ::Transfersdk::StartTransferResponse
28
+ #
29
+ # StartTransferWithMonitor starts a new transfer and streams back the transfer events.
30
+ # The request doesn't return immediately, as it continues streaming responses to the client until the transfer is terminated or the request is canceled
31
+ # by the client.
32
+ rpc :StartTransferWithMonitor, ::Transfersdk::TransferRequest, stream(::Transfersdk::TransferResponse)
33
+ #
34
+ # QueryTransfer requests transfer data.
35
+ rpc :QueryTransfer, ::Transfersdk::TransferInfoRequest, ::Transfersdk::QueryTransferResponse
36
+ #
37
+ # ModifyTransfer modifies an existing transfer.
38
+ rpc :ModifyTransfer, ::Transfersdk::TransferModificationRequest, ::Transfersdk::TransferModificationResponse
39
+ #
40
+ # AddTransferPaths can be used with persistent transfer to add paths to an existing transfer.
41
+ # (type TransferType.FILE_PERSISTENT).
42
+ rpc :AddTransferPaths, ::Transfersdk::TransferPathRequest, ::Transfersdk::TransferPathResponse
43
+ #
44
+ # LockPersistentTransfer, used with persistent transfer, marks an existing persistent transfer as done.
45
+ # Once the method is called, any subsequent call to AddTransferPaths results in an error.
46
+ # (type TransferType.FILE_PERSISTENT).
47
+ rpc :LockPersistentTransfer, ::Transfersdk::LockPersistentTransferRequest, ::Transfersdk::LockPersistentTransferResponse
48
+ #
49
+ # StopTransfer stops a transfer.
50
+ rpc :StopTransfer, ::Transfersdk::StopTransferRequest, ::Transfersdk::StopTransferResponse
51
+ #
52
+ # MonitorTransfers monitors transfers matching the defined filters and streams back the transfer events.
53
+ # The request doesn't return an immediate response because MonitorTransfers continues streaming
54
+ # responses to the client until the client cancels the request.
55
+ rpc :MonitorTransfers, ::Transfersdk::RegistrationRequest, stream(::Transfersdk::TransferResponse)
56
+ #
57
+ # GetAPIVersion gets the API version.
58
+ rpc :GetAPIVersion, ::Transfersdk::APIVersionRequest, ::Transfersdk::APIVersionResponse
59
+ #
60
+ # GetInfo gets data about the Transfer SDK service instance.
61
+ rpc :GetInfo, ::Transfersdk::InstanceInfoRequest, ::Transfersdk::InstanceInfoResponse
62
+ #
63
+ # IsPeerReachable confirms whether or not the peer endpoint is reachable.
64
+ rpc :IsPeerReachable, ::Transfersdk::PeerCheckRequest, ::Transfersdk::PeerCheckResponse
65
+ #
66
+ # WriteStreamChunk writes chunks of streaming data for the specified in-progress
67
+ # transfer of type PERSISTENT_STREAM_UPLOAD, at a specific offset.
68
+ # When StopTransfer is called on the transfer, subsequent calls to this function will fail.
69
+ rpc :WriteStreamChunk, stream(::Transfersdk::WriteStreamChunkRequest), ::Transfersdk::WriteStreamChunkResponse
70
+ #
71
+ # WriteStream writes chunks of streaming data for the specified in-progress transfer of type STREAM_TO_FILE_UPLOAD.
72
+ # Once StopTransfer is called on the transfer, subsequent calls to this function will fail.
73
+ rpc :WriteStream, stream(::Transfersdk::WriteStreamRequest), ::Transfersdk::WriteStreamResponse
74
+ #
75
+ # ReadStream reads chunks of streaming data from a specified in-progress transfer of type FILE_TO_STREAM_DOWNLOAD.
76
+ # Once StopTransfer is called on this transfer, subsequent calls to this function will fail.
77
+ rpc :ReadStream, ::Transfersdk::ReadStreamRequest, stream(::Transfersdk::ReadStreamResponse)
78
+ end
79
+
80
+ Stub = Service.rpc_stub_class
81
+ end
82
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aspera-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.19.0
4
+ version: 4.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent Martin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
@@ -37,7 +37,7 @@ cert_chain:
37
37
  eTf9kxhVM40wGQOECVNA8UsEEZHD48eF+csUYZtAJOF5oxTI8UyV9T/o6CgO0c9/
38
38
  Gzz+Qm5ULOUcPiJLjSpaiTrkiIVYiDGnqNSr6R1Hb1c=
39
39
  -----END CERTIFICATE-----
40
- date: 2024-10-02 00:00:00.000000000 Z
40
+ date: 2025-01-21 00:00:00.000000000 Z
41
41
  dependencies:
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: blankslate
@@ -249,6 +249,20 @@ dependencies:
249
249
  - - "~>"
250
250
  - !ruby/object:Gem::Version
251
251
  version: '1.0'
252
+ - !ruby/object:Gem::Dependency
253
+ name: grpc-tools
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - "~>"
257
+ - !ruby/object:Gem::Version
258
+ version: 1.67.0
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - "~>"
264
+ - !ruby/object:Gem::Version
265
+ version: 1.67.0
252
266
  - !ruby/object:Gem::Dependency
253
267
  name: rake
254
268
  requirement: !ruby/object:Gem::Requirement
@@ -391,8 +405,10 @@ files:
391
405
  - bin/ascli
392
406
  - bin/asession
393
407
  - examples/build_exec
408
+ - examples/build_exec_rubyc
394
409
  - examples/build_package.sh
395
410
  - examples/dascli
411
+ - examples/get_proto_file.rb
396
412
  - examples/proxy.pac
397
413
  - lib/aspera/agent/alpha.rb
398
414
  - lib/aspera/agent/base.rb
@@ -401,6 +417,7 @@ files:
401
417
  - lib/aspera/agent/httpgw.rb
402
418
  - lib/aspera/agent/node.rb
403
419
  - lib/aspera/agent/trsdk.rb
420
+ - lib/aspera/api/alee.rb
404
421
  - lib/aspera/api/aoc.rb
405
422
  - lib/aspera/api/ats.rb
406
423
  - lib/aspera/api/cos_node.rb
@@ -501,6 +518,8 @@ files:
501
518
  - lib/aspera/uri_reader.rb
502
519
  - lib/aspera/web_auth.rb
503
520
  - lib/aspera/web_server_simple.rb
521
+ - lib/transfer_pb.rb
522
+ - lib/transfer_services_pb.rb
504
523
  homepage: https://github.com/IBM/aspera-cli
505
524
  licenses:
506
525
  - Apache-2.0
@@ -511,7 +530,7 @@ metadata:
511
530
  changelog_uri: https://github.com/IBM/aspera-cli/CHANGELOG.md
512
531
  rubygems_uri: https://rubygems.org/gems/aspera-cli
513
532
  documentation_uri: https://www.rubydoc.info/gems/aspera-cli
514
- post_install_message:
533
+ post_install_message:
515
534
  rdoc_options: []
516
535
  require_paths:
517
536
  - lib
@@ -528,7 +547,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
528
547
  requirements:
529
548
  - Read the manual for any requirement
530
549
  rubygems_version: 3.4.19
531
- signing_key:
550
+ signing_key:
532
551
  specification_version: 4
533
552
  summary: 'Execute actions using command line on IBM Aspera Server products: Aspera
534
553
  on Cloud, Faspex, Shares, Node, Console, Orchestrator, High Speed Transfer Server'
metadata.gz.sig CHANGED
Binary file