aspera-cli 4.26.1 → 4.27.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +300 -22
- data/CONTRIBUTING.md +100 -12
- data/bin/ascli +5 -5
- data/docs/README.md +10757 -0
- data/docs/test-mcp-with-ai.md +202 -0
- data/lib/aspera/agent/base.rb +20 -6
- data/lib/aspera/agent/connect.rb +53 -16
- data/lib/aspera/agent/desktop.rb +52 -17
- data/lib/aspera/agent/direct.rb +27 -25
- data/lib/aspera/agent/factory.rb +4 -0
- data/lib/aspera/agent/httpgw.rb +2 -2
- data/lib/aspera/agent/node.rb +34 -2
- data/lib/aspera/agent/transferd.rb +39 -3
- data/lib/aspera/api/alee.rb +1 -1
- data/lib/aspera/api/aoc.rb +56 -51
- data/lib/aspera/api/cos_node.rb +2 -2
- data/lib/aspera/api/faspex.rb +22 -20
- data/lib/aspera/api/httpgw.rb +4 -4
- data/lib/aspera/api/node.rb +33 -30
- data/lib/aspera/api/queries/bss_subscription_account.graphql +18 -0
- data/lib/aspera/api/queries/bss_subscription_usage.graphql +18 -0
- data/lib/aspera/ascmd.rb +25 -23
- data/lib/aspera/ascp/installation.rb +43 -40
- data/lib/aspera/ascp/management.rb +2 -3
- data/lib/aspera/cli/ascp_actions.rb +155 -0
- data/lib/aspera/cli/async_transfer_store.rb +81 -0
- data/lib/aspera/cli/bootstrapper.rb +197 -0
- data/lib/aspera/cli/command_registry.rb +145 -0
- data/lib/aspera/cli/command_spec.rb +138 -0
- data/lib/aspera/cli/context.rb +71 -0
- data/lib/aspera/cli/error.rb +16 -0
- data/lib/aspera/cli/extended_value.rb +5 -3
- data/lib/aspera/cli/formatter.rb +122 -209
- data/lib/aspera/cli/gem_checker.rb +65 -0
- data/lib/aspera/cli/hints.rb +2 -2
- data/lib/aspera/cli/http.rb +218 -0
- data/lib/aspera/cli/info.rb +2 -0
- data/lib/aspera/cli/mailer.rb +97 -0
- data/lib/aspera/cli/mcp_tool.rb +198 -0
- data/lib/aspera/cli/options.schema.yaml +364 -7
- data/lib/aspera/cli/{manager.rb → parser.rb} +337 -144
- data/lib/aspera/cli/plugins/alee.rb +20 -22
- data/lib/aspera/cli/plugins/aoc.rb +1173 -849
- data/lib/aspera/cli/plugins/ats.rb +200 -161
- data/lib/aspera/cli/plugins/base.rb +470 -107
- data/lib/aspera/cli/plugins/basic_auth.rb +14 -4
- data/lib/aspera/cli/plugins/config.rb +434 -1032
- data/lib/aspera/cli/plugins/console.rb +106 -64
- data/lib/aspera/cli/plugins/cos.rb +44 -32
- data/lib/aspera/cli/plugins/factory.rb +7 -4
- data/lib/aspera/cli/plugins/faspex.rb +296 -259
- data/lib/aspera/cli/plugins/faspex5.rb +592 -344
- data/lib/aspera/cli/plugins/faspio.rb +49 -51
- data/lib/aspera/cli/plugins/httpgw.rb +18 -25
- data/lib/aspera/cli/plugins/mcp.rb +279 -0
- data/lib/aspera/cli/plugins/node.rb +1001 -797
- data/lib/aspera/cli/plugins/oauth.rb +7 -10
- data/lib/aspera/cli/plugins/orchestrator.rb +111 -139
- data/lib/aspera/cli/plugins/preview.rb +183 -142
- data/lib/aspera/cli/plugins/server.rb +125 -80
- data/lib/aspera/cli/plugins/shares.rb +301 -107
- data/lib/aspera/cli/preset_actions.rb +139 -0
- data/lib/aspera/cli/preset_manager.rb +236 -0
- data/lib/aspera/cli/result.rb +360 -0
- data/lib/aspera/cli/runner.rb +473 -0
- data/lib/aspera/cli/secret_finder.rb +40 -0
- data/lib/aspera/cli/special_values.rb +1 -0
- data/lib/aspera/cli/sync_actions.rb +84 -56
- data/lib/aspera/cli/terminal_formatter.rb +65 -0
- data/lib/aspera/cli/transfer_actions.rb +83 -0
- data/lib/aspera/cli/transfer_agent.rb +116 -51
- data/lib/aspera/cli/transfer_progress.rb +9 -9
- data/lib/aspera/cli/vault_manager.rb +57 -0
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/cli/wizard.rb +26 -26
- data/lib/aspera/command_line_builder.rb +23 -23
- data/lib/aspera/data_repository.rb +6 -1
- data/lib/aspera/dot_container.rb +5 -5
- data/lib/aspera/environment.rb +39 -13
- data/lib/aspera/exec_spec.rb +13 -0
- data/lib/aspera/faspex_gw.rb +2 -2
- data/lib/aspera/faspex_postproc.rb +4 -3
- data/lib/aspera/graphql.rb +35 -0
- data/lib/aspera/hash_ext.rb +6 -0
- data/lib/aspera/json_rpc/client.rb +62 -0
- data/lib/aspera/json_rpc/version.rb +7 -0
- data/lib/aspera/keychain/base.rb +1 -1
- data/lib/aspera/keychain/encrypted_hash.rb +2 -2
- data/lib/aspera/keychain/factory.rb +4 -4
- data/lib/aspera/keychain/macos_security.rb +4 -4
- data/lib/aspera/link_header.rb +82 -0
- data/lib/aspera/log.rb +23 -5
- data/lib/aspera/markdown.rb +85 -2
- data/lib/aspera/nagios.rb +2 -2
- data/lib/aspera/node_simulator.rb +3 -1
- data/lib/aspera/oauth/base.rb +10 -10
- data/lib/aspera/oauth/boot.rb +43 -0
- data/lib/aspera/oauth/factory.rb +41 -15
- data/lib/aspera/oauth/jwt.rb +4 -4
- data/lib/aspera/oauth/web.rb +4 -4
- data/lib/aspera/oauth.rb +1 -0
- data/lib/aspera/persistency_action_once.rb +10 -10
- data/lib/aspera/persistency_folder.rb +10 -3
- data/lib/aspera/preview/file_types.rb +7 -3
- data/lib/aspera/preview/generator.rb +3 -3
- data/lib/aspera/preview/utils.rb +1 -1
- data/lib/aspera/products/connect.rb +4 -1
- data/lib/aspera/products/other.rb +1 -1
- data/lib/aspera/products/transferd.rb +3 -3
- data/lib/aspera/proxy_auto_config.rb +10 -9
- data/lib/aspera/rest.rb +18 -40
- data/lib/aspera/rest_error_analyzer.rb +7 -3
- data/lib/aspera/rest_errors_aspera.rb +0 -10
- data/lib/aspera/rest_list.rb +13 -6
- data/lib/aspera/schema/IBM Aspera Faspex API-5.0-enhanced.yaml +14 -4
- data/lib/aspera/schema/IBM Aspera on Cloud API-0.2.6-enhanced.yaml +2730 -648
- data/lib/aspera/schema/async_tables.yaml +361 -0
- data/lib/aspera/schema/documentation.rb +57 -26
- data/lib/aspera/schema/reader.rb +60 -11
- data/lib/aspera/schema/registry.rb +50 -10
- data/lib/aspera/secret_hider.rb +11 -2
- data/lib/aspera/ssl.rb +4 -4
- data/lib/aspera/sync/conf.schema.yaml +2 -2
- data/lib/aspera/sync/database.rb +14 -10
- data/lib/aspera/sync/operations.rb +15 -18
- data/lib/aspera/temp_file_manager.rb +5 -1
- data/lib/aspera/timer_limiter.rb +1 -1
- data/lib/aspera/transfer/faux_file.rb +24 -11
- data/lib/aspera/transfer/parameters.rb +27 -25
- data/lib/aspera/transfer/result.rb +74 -0
- data/lib/aspera/transfer/resumer.rb +7 -7
- data/lib/aspera/transfer/spec.rb +18 -1
- data/lib/aspera/transfer/spec.schema.yaml +26 -8
- data/lib/aspera/transfer/uri.rb +1 -1
- data/lib/aspera/uri_reader.rb +2 -2
- data/lib/aspera/web_auth.rb +2 -2
- data/lib/aspera/web_server_simple.rb +8 -5
- data/lib/aspera/yaml.rb +2 -1
- data.tar.gz.sig +0 -0
- metadata +45 -16
- metadata.gz.sig +0 -0
- data/lib/aspera/cli/main.rb +0 -480
- data/lib/aspera/json_rpc.rb +0 -51
data/lib/aspera/rest_list.rb
CHANGED
|
@@ -15,7 +15,7 @@ module Aspera
|
|
|
15
15
|
# @param value [String] Value of field of searched entity
|
|
16
16
|
# @param field [String] Field of searched entity
|
|
17
17
|
# @param query [Hash] Optional additional search query parameters
|
|
18
|
-
# @
|
|
18
|
+
# @return [Hash] A single entity matching the search, or an exception if not found or multiple found
|
|
19
19
|
def lookup_with_q(entity, value:, field: 'name', query: {})
|
|
20
20
|
Aspera.assert_type(query, Hash){'query'}
|
|
21
21
|
Aspera.assert_type(field, String){'field'}
|
|
@@ -35,8 +35,8 @@ module Aspera
|
|
|
35
35
|
value_matches = matching_items.select{ |i| i[field].casecmp?(value)}
|
|
36
36
|
case value_matches.length
|
|
37
37
|
when 1 then return value_matches.first
|
|
38
|
-
when 0 then raise
|
|
39
|
-
else raise "Two entities cannot have the same case insensitive #{field}: #{value_matches.map{ |i| i[field]}}"
|
|
38
|
+
when 0 then raise Error, "#{entity}: Multiple case insensitive partial match for: \"#{value}\" in #{matching_items.map{ |i| i[field]}.join(', ')} but no case insensitive full match. Please be more specific or give exact #{field}."
|
|
39
|
+
else raise Error, "Two entities cannot have the same case insensitive #{field}: #{value_matches.map{ |i| i[field]}}"
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
end
|
|
@@ -50,6 +50,7 @@ module Aspera
|
|
|
50
50
|
# @return [Array<(Array<Hash>, Integer)>] items, total_count
|
|
51
51
|
def list_entities_limit_offset_total_count(
|
|
52
52
|
entity:,
|
|
53
|
+
operation: 'GET',
|
|
53
54
|
items_key: nil,
|
|
54
55
|
query: nil
|
|
55
56
|
)
|
|
@@ -67,9 +68,15 @@ module Aspera
|
|
|
67
68
|
# Merge default parameters, by default 100 per page
|
|
68
69
|
query = {'limit'=> PER_PAGE_DEFAULT}.merge(query)
|
|
69
70
|
total_count = nil
|
|
71
|
+
call_args = {
|
|
72
|
+
operation: operation,
|
|
73
|
+
subpath: entity,
|
|
74
|
+
query: query,
|
|
75
|
+
headers: {'Accept' => Mime::JSON}
|
|
76
|
+
}
|
|
70
77
|
loop do
|
|
71
78
|
query['offset'] = offset
|
|
72
|
-
page_result =
|
|
79
|
+
page_result = call(**call_args)
|
|
73
80
|
Aspera.assert_type(page_result[items_key], Array)
|
|
74
81
|
result.concat(page_result[items_key])
|
|
75
82
|
# Reach the limit set by user ?
|
|
@@ -97,7 +104,7 @@ module Aspera
|
|
|
97
104
|
# @param query [Hash] Additional query parameters (Default: `:default`)
|
|
98
105
|
def lookup_entity_by_field(entity:, value:, field: 'name', items_key: nil, query: :default)
|
|
99
106
|
if query.eql?(:default)
|
|
100
|
-
Aspera.
|
|
107
|
+
Aspera.assert_values(field, ['name']){'Default query field'}
|
|
101
108
|
query = {'q'=> value}
|
|
102
109
|
end
|
|
103
110
|
lookup_entity_generic(entity: entity, field: field, value: value){list_entities_limit_offset_total_count(entity: entity, items_key: items_key, query: query).first}
|
|
@@ -113,7 +120,7 @@ module Aspera
|
|
|
113
120
|
# @return [Hash] The unique matching object.
|
|
114
121
|
# @raise [Cli::BadIdentifier] If 0 or >1 matches are found.
|
|
115
122
|
def lookup_entity_generic(entity:, value:, field: 'name')
|
|
116
|
-
Aspera.assert(block_given
|
|
123
|
+
Aspera.assert(block_given?, 'block required for lookup_entity_generic')
|
|
117
124
|
found = yield
|
|
118
125
|
Aspera.assert_array_all(found, Hash)
|
|
119
126
|
found = found.select{ |i| i[field].eql?(value)}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
# DO NOT EDIT THIS FILE MANUALLY
|
|
2
|
+
# This file is automatically downloaded from:
|
|
3
|
+
# https://raw.githubusercontent.com/laurent-martin/aspera-api-examples/refs/heads/main/openapi/IBM%20Aspera%20Faspex%20API-5.0-enhanced.yaml
|
|
4
|
+
# Use 'rake tools:openapi' to update this file
|
|
5
|
+
|
|
1
6
|
openapi: 3.1.0
|
|
2
7
|
info:
|
|
3
8
|
title: IBM Aspera Faspex API
|
|
@@ -32646,7 +32651,12 @@ components:
|
|
|
32646
32651
|
maxLength: 255
|
|
32647
32652
|
minLength: 1
|
|
32648
32653
|
expiration_policy:
|
|
32649
|
-
description:
|
|
32654
|
+
description: |-
|
|
32655
|
+
The expiration policy for the package.
|
|
32656
|
+
* `none`: Default, for no expiration policy (a package will not be marked for deletion based on recipient downloads).
|
|
32657
|
+
* `delete_after_all_download` for deleting a package after ALL users do a full download of the package (download of all files/folders in the package).
|
|
32658
|
+
* `delete_after_any_download` for deleting a package after ANY user fully downloads.
|
|
32659
|
+
* `delete_after_expiration_date` for deleting a package after the date set in expiration_date parameter.
|
|
32650
32660
|
type: string
|
|
32651
32661
|
default: none
|
|
32652
32662
|
enum:
|
|
@@ -40721,9 +40731,9 @@ components:
|
|
|
40721
40731
|
type: boolean
|
|
40722
40732
|
can_have_public_url:
|
|
40723
40733
|
description: |-
|
|
40724
|
-
Specifies whether the user can share public submission submission links
|
|
40725
|
-
|
|
40726
|
-
|
|
40734
|
+
Specifies whether the user can share public submission submission links.
|
|
40735
|
+
A user can share public submission links to invite external users to
|
|
40736
|
+
send packages to the user.
|
|
40727
40737
|
type: string
|
|
40728
40738
|
default: default
|
|
40729
40739
|
enum:
|