filestoraged/src/client/main.cr

101 lines
1.9 KiB
Crystal
Raw Normal View History

2019-12-19 11:47:32 +01:00
require "option_parser"
2020-06-08 04:49:55 +02:00
require "authd"
require "ipc"
require "json"
2020-01-02 09:21:11 +01:00
require "base64"
2020-06-08 04:49:55 +02:00
require "./authd_api.cr"
2020-10-21 03:27:51 +02:00
require "./lib.cr"
2020-06-08 04:49:55 +02:00
require "../server/network.cr"
require "../server/storage.cr"
require "../server/storage/*"
2020-01-02 09:21:11 +01:00
# TODO
# For now, this example only upload files.
# In a near future, we should be able to download files, too.
2019-12-19 11:47:32 +01:00
service_name = "filestorage"
files_and_directories_to_transfer = Array(String).new
2020-06-08 04:49:55 +02:00
authd_login : String = "test"
authd_pass : String = "test"
2019-12-19 11:47:32 +01:00
OptionParser.parse do |parser|
parser.on "-s service-name",
"--service-name service-name",
"Service name." do |name|
2019-12-19 11:47:32 +01:00
service_name = name
end
2020-06-08 04:49:55 +02:00
parser.on "-l login",
"--login login-name",
"Login name for authd." do |name|
authd_login = name
end
parser.on "-p pass",
"--pass pass",
"Password for authd." do |pass|
authd_pass = pass
end
2019-12-19 11:47:32 +01:00
parser.unknown_args do |arg|
files_and_directories_to_transfer = arg
end
parser.on "-h", "--help", "Show this help" do
puts parser
2020-01-02 09:21:11 +01:00
puts "program [OPTIONS] <files-to-upload>"
2020-06-08 04:49:55 +02:00
exit -1
2019-12-19 11:47:32 +01:00
end
end
#
2020-06-08 04:49:55 +02:00
# Verify we can read files
2019-12-19 11:47:32 +01:00
#
2020-06-08 04:49:55 +02:00
files = [] of String
2019-12-19 11:47:32 +01:00
puts "files and directories to transfer"
files_and_directories_to_transfer.each do |f|
if File.directory? f
# TODO
puts "Directories not supported, for now"
elsif File.file?(f) && File.readable? f
2020-06-08 04:49:55 +02:00
files << f
2019-12-19 11:47:32 +01:00
else
if ! File.exists? f
2019-12-19 11:47:32 +01:00
puts "#{f} does not exist"
elsif ! File.file? f
2019-12-19 11:47:32 +01:00
puts "#{f} is neither a directory or a file"
elsif ! File.readable? f
2019-12-19 11:47:32 +01:00
puts "#{f} is not readable"
end
end
end
#
# Connection to the service
#
2020-06-08 04:49:55 +02:00
# Authentication.
pp! authd_login
pp! authd_pass
token = authd_get_token login: authd_login, pass: authd_pass
2020-01-04 10:45:39 +01:00
2020-06-08 04:49:55 +02:00
# Connection and authentication to filestoraged.
client = FileStorage::Client.new token, service_name
client.login
2020-01-02 09:21:11 +01:00
2020-06-08 04:49:55 +02:00
files.each do |file|
puts "upload: #{file}"
pp! client.upload file
puts "transfer"
client.transfer file
2019-12-19 11:47:32 +01:00
end
client.close