brick_ftp 0.3.8 → 0.4.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
- data/CHANGELOG.md +26 -0
- data/README.md +20 -0
- data/brick_ftp.gemspec +2 -0
- data/exe/brick_ftp +8 -0
- data/lib/brick_ftp.rb +5 -0
- data/lib/brick_ftp/api/base.rb +11 -2
- data/lib/brick_ftp/cli.rb +7 -0
- data/lib/brick_ftp/cli/config.rb +20 -0
- data/lib/brick_ftp/cli/main.rb +26 -0
- data/lib/brick_ftp/cli/site.rb +10 -0
- data/lib/brick_ftp/client.rb +6 -3
- data/lib/brick_ftp/configuration.rb +56 -7
- data/lib/brick_ftp/http_client.rb +5 -1
- data/lib/brick_ftp/version.rb +1 -1
- metadata +38 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b78f7e304c91c69572da2f15f66b53240beb5b5
|
4
|
+
data.tar.gz: dd5b06efbee8b4f23f91f33de2c36350cbb50d31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f0b2464782ee7d0bb7660d3da573abfd302818492aa8f6675df312c70e9c0940c36524e0db692c1806686864ed12a565e8e9e0407a199d95bd0f5f779579f9f
|
7
|
+
data.tar.gz: d43aa3d504faf23f03b7d73f43e2f58593c68c04228cc4790fe96b6fadc311415d92cf16ba4fc6158fbaa441aa61304a642d78988d1110e689f349d5f1b17bae
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Changelog
|
2
|
+
====
|
3
|
+
|
4
|
+
|
5
|
+
[unreleased](https://github.com/koshigoe/brick_ftp/compare/v0.4.0...master)
|
6
|
+
----
|
7
|
+
|
8
|
+
[Full Changelog](https://github.com/koshigoe/brick_ftp/compare/v0.4.0...master)
|
9
|
+
|
10
|
+
### Enhancements:
|
11
|
+
|
12
|
+
### Fixed Bugs:
|
13
|
+
|
14
|
+
|
15
|
+
[0.4.0](https://github.com/koshigoe/brick_ftp/compare/v0.3.8...v0.4.0)
|
16
|
+
----
|
17
|
+
|
18
|
+
[Full Changelog](https://github.com/koshigoe/brick_ftp/compare/v0.3.8...v0.4.0)
|
19
|
+
|
20
|
+
### Enhancements:
|
21
|
+
|
22
|
+
- [#36](https://github.com/koshigoe/brick_ftp/pull/36) Add Changelog.
|
23
|
+
- [#46](https://github.com/koshigoe/brick_ftp/pull/46) Add CLI.
|
24
|
+
- [#53](https://github.com/koshigoe/brick_ftp/pull/53) Allow to pass `action=stat` to Files: Download API.
|
25
|
+
|
26
|
+
### Fixed Bugs:
|
data/README.md
CHANGED
@@ -49,6 +49,26 @@ BrickFTP::API::Authentication.login('koshigoe', 'password')
|
|
49
49
|
|
50
50
|
see [API document](http://www.rubydoc.info/github/koshigoe/brick_ftp/master) or source code.
|
51
51
|
|
52
|
+
### CLI (experimental)
|
53
|
+
|
54
|
+
#### Configuration
|
55
|
+
|
56
|
+
```
|
57
|
+
$ brick_ftp config set subdomain mydomain
|
58
|
+
$ brick_ftp config set api_key XXXXXXXXXX
|
59
|
+
```
|
60
|
+
|
61
|
+
#### e.g. Get site usage (disk usage)
|
62
|
+
|
63
|
+
```
|
64
|
+
$ brick_ftp site usage
|
65
|
+
```
|
66
|
+
|
67
|
+
### More
|
68
|
+
|
69
|
+
Please read help by run `brick_ftp help`, or read source code.
|
70
|
+
|
71
|
+
|
52
72
|
## Development
|
53
73
|
|
54
74
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/brick_ftp.gemspec
CHANGED
data/exe/brick_ftp
ADDED
data/lib/brick_ftp.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'deep_hash_transform'
|
2
|
+
require 'thor'
|
2
3
|
require "brick_ftp/version"
|
3
4
|
require 'brick_ftp/configuration'
|
4
5
|
require 'brick_ftp/log_formatter'
|
@@ -35,6 +36,10 @@ require 'brick_ftp/api/file_operation/upload'
|
|
35
36
|
require 'brick_ftp/api/site_usage'
|
36
37
|
require 'brick_ftp/webhook'
|
37
38
|
require 'brick_ftp/webhook/request'
|
39
|
+
require 'brick_ftp/cli'
|
40
|
+
require 'brick_ftp/cli/config'
|
41
|
+
require 'brick_ftp/cli/site'
|
42
|
+
require 'brick_ftp/cli/main'
|
38
43
|
|
39
44
|
module BrickFTP
|
40
45
|
# https://brickftp.com/redundancy/
|
data/lib/brick_ftp/api/base.rb
CHANGED
@@ -18,10 +18,11 @@ module BrickFTP
|
|
18
18
|
data.map { |x| new(x.symbolize_keys) }
|
19
19
|
end
|
20
20
|
|
21
|
-
def self.find(id)
|
21
|
+
def self.find(id, params: {})
|
22
22
|
data = BrickFTP::HTTPClient.new.send(
|
23
23
|
endpoints[:show][:http_method],
|
24
|
-
api_path_for(:show, id)
|
24
|
+
api_path_for(:show, id),
|
25
|
+
params: params
|
25
26
|
)
|
26
27
|
data.empty? ? nil : new(data.symbolize_keys)
|
27
28
|
end
|
@@ -66,6 +67,14 @@ module BrickFTP
|
|
66
67
|
)
|
67
68
|
true
|
68
69
|
end
|
70
|
+
|
71
|
+
def as_json
|
72
|
+
self.class.attributes.each_with_object({}) { |name, res| res[name] = send(name) }
|
73
|
+
end
|
74
|
+
|
75
|
+
def to_json
|
76
|
+
as_json.to_json
|
77
|
+
end
|
69
78
|
end
|
70
79
|
end
|
71
80
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module BrickFTP
|
2
|
+
module CLI
|
3
|
+
class Config < Thor
|
4
|
+
desc 'get NAME', 'Show specified configuration.'
|
5
|
+
def get(name)
|
6
|
+
abort 'No such configuration.' unless BrickFTP.config.respond_to?(name)
|
7
|
+
|
8
|
+
puts BrickFTP.config.send(name)
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'set NAME VALUE', 'Set configuration value.'
|
12
|
+
def set(name, value)
|
13
|
+
abort 'No such configuration.' unless BrickFTP.config.respond_to?("#{name}=")
|
14
|
+
|
15
|
+
BrickFTP.config.send("#{name}=", value)
|
16
|
+
BrickFTP.config.save!
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module BrickFTP
|
2
|
+
module CLI
|
3
|
+
class Main < Thor
|
4
|
+
class_option :profile,
|
5
|
+
desc: 'Configuration profile.',
|
6
|
+
default: 'global',
|
7
|
+
type: :string
|
8
|
+
|
9
|
+
class_option :config,
|
10
|
+
desc: 'Path for configuration file.',
|
11
|
+
default: BrickFTP::Configuration::CONFIG_FILE_PATH,
|
12
|
+
type: :string
|
13
|
+
|
14
|
+
def initialize(*args)
|
15
|
+
super
|
16
|
+
BrickFTP.config = BrickFTP::Configuration.new(profile: options[:profile], config_file_path: options[:config])
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'config COMMAND', 'Manage configuration.'
|
20
|
+
subcommand 'config', BrickFTP::CLI::Config
|
21
|
+
|
22
|
+
desc 'site COMMAND', 'Manage site.'
|
23
|
+
subcommand 'site', BrickFTP::CLI::Site
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/brick_ftp/client.rb
CHANGED
@@ -315,10 +315,13 @@ module BrickFTP
|
|
315
315
|
|
316
316
|
# provides a download URL that will enable you to download a file.
|
317
317
|
# @see https://brickftp.com/ja/docs/rest-api/file-operations/
|
318
|
-
# @param
|
318
|
+
# @param path [String] path for file.
|
319
|
+
# @param omit_download_uri [Boolean] If true, omit download_uri. (Add query `action=stat`)
|
319
320
|
# @return [BrickFTP::API::File] file object.
|
320
|
-
def show_file(
|
321
|
-
|
321
|
+
def show_file(path, omit_download_uri: false)
|
322
|
+
params = {}
|
323
|
+
params[:action] = 'stat' if omit_download_uri
|
324
|
+
BrickFTP::API::File.find(path, params: params)
|
322
325
|
end
|
323
326
|
|
324
327
|
# Move or renames a file or folder to the destination provided in the move_destination parameter.
|
@@ -1,7 +1,14 @@
|
|
1
1
|
require 'logger'
|
2
|
+
require 'inifile'
|
2
3
|
|
3
4
|
module BrickFTP
|
4
5
|
class Configuration
|
6
|
+
# Name of configuration profile.
|
7
|
+
# @return [String] profile
|
8
|
+
attr_reader :profile
|
9
|
+
# Path for configuration file.
|
10
|
+
# @return [String] path
|
11
|
+
attr_reader :config_file_path
|
5
12
|
# Subdomain of API endpoint. If not specified, get value from enviroment variable `BRICK_FTP_SUBDOMAIN`.
|
6
13
|
# @return [String] subdomain
|
7
14
|
attr_accessor :subdomain
|
@@ -16,10 +23,10 @@ module BrickFTP
|
|
16
23
|
attr_accessor :logger
|
17
24
|
# Log level
|
18
25
|
# @return [Integer]
|
19
|
-
|
26
|
+
attr_accessor :log_level
|
20
27
|
# Log formatter
|
21
28
|
# @return [Logger::Formatter]
|
22
|
-
|
29
|
+
attr_accessor :log_formatter
|
23
30
|
# Open timeout
|
24
31
|
# @return [Integer]
|
25
32
|
attr_accessor :open_timeout
|
@@ -30,16 +37,34 @@ module BrickFTP
|
|
30
37
|
DEFAULT_OPEN_TIMEOUT = 10
|
31
38
|
DEFAULT_READ_TIMEOUT = 30
|
32
39
|
|
33
|
-
|
34
|
-
|
35
|
-
|
40
|
+
DEFAULT_PROFILE = 'global'.freeze
|
41
|
+
CONFIG_FILE_PATH = File.expand_path('~/.brick_ftp/config').freeze
|
42
|
+
# Name of storable configurations. (TODO: log_path, log_level, log_formatter)
|
43
|
+
STORABLE_CONFIGURATION_KEYS = %w(subdomain api_key open_timeout read_timeout).freeze
|
44
|
+
|
45
|
+
STORABLE_CONFIGURATION_KEYS.each do |name|
|
46
|
+
define_method("#{name}=") do |value|
|
47
|
+
dirty_attributes.add(name)
|
48
|
+
instance_variable_set(:"@#{name}", value)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def initialize(profile: DEFAULT_PROFILE, config_file_path: CONFIG_FILE_PATH)
|
53
|
+
@profile = profile
|
54
|
+
@config_file_path = config_file_path
|
55
|
+
load_config_file(config_file_path)
|
56
|
+
|
57
|
+
self.subdomain = ENV.fetch('BRICK_FTP_SUBDOMAIN', inifile[profile]['subdomain'])
|
58
|
+
self.api_key = ENV.fetch('BRICK_FTP_API_KEY', inifile[profile]['api_key'])
|
36
59
|
self.session = nil
|
37
|
-
self.open_timeout = DEFAULT_OPEN_TIMEOUT
|
38
|
-
self.read_timeout = DEFAULT_READ_TIMEOUT
|
60
|
+
self.open_timeout = (inifile[profile]['open_timeout'] || DEFAULT_OPEN_TIMEOUT).to_i
|
61
|
+
self.read_timeout = (inifile[profile]['read_timeout'] || DEFAULT_READ_TIMEOUT).to_i
|
39
62
|
self.logger = Logger.new(STDOUT)
|
40
63
|
self.log_level = Logger::WARN
|
41
64
|
self.log_formatter = Logger::Formatter.new
|
42
65
|
logger.level = log_level
|
66
|
+
|
67
|
+
dirty_attributes.clear
|
43
68
|
end
|
44
69
|
|
45
70
|
# Host name of API endpoint.
|
@@ -61,5 +86,29 @@ module BrickFTP
|
|
61
86
|
@log_formatter = formatter
|
62
87
|
logger.formatter = @log_formatter
|
63
88
|
end
|
89
|
+
|
90
|
+
def save!
|
91
|
+
dirty_attributes.each do |key|
|
92
|
+
inifile[profile][key] = send(key)
|
93
|
+
end
|
94
|
+
FileUtils.mkdir_p(File.dirname(inifile.filename)) unless File.exist?(File.dirname(inifile.filename))
|
95
|
+
inifile.save
|
96
|
+
end
|
97
|
+
|
98
|
+
private
|
99
|
+
|
100
|
+
attr_reader :inifile, :dirty_attributes
|
101
|
+
|
102
|
+
def load_config_file(config_file_path)
|
103
|
+
@inifile = if File.exist?(config_file_path)
|
104
|
+
IniFile.load(config_file_path, encoding: 'UTF-8')
|
105
|
+
else
|
106
|
+
IniFile.new(filename: config_file_path, encoding: 'UTF-8')
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def dirty_attributes
|
111
|
+
@dirty_attributes ||= Set.new
|
112
|
+
end
|
64
113
|
end
|
65
114
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'net/https'
|
2
2
|
require 'json'
|
3
|
+
require 'cgi'
|
3
4
|
|
4
5
|
module BrickFTP
|
5
6
|
class HTTPClient
|
@@ -35,7 +36,10 @@ module BrickFTP
|
|
35
36
|
end
|
36
37
|
|
37
38
|
def get(path, params: {}, headers: {})
|
38
|
-
|
39
|
+
query = params.map { |k, v| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}" }.join('&')
|
40
|
+
path = "#{path}?#{query}" unless query.empty?
|
41
|
+
|
42
|
+
case res = request(:get, path, headers: headers)
|
39
43
|
when Net::HTTPSuccess
|
40
44
|
res.body.nil? || res.body.empty? ? {} : JSON.parse(res.body)
|
41
45
|
else
|
data/lib/brick_ftp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brick_ftp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- koshigoe
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -108,16 +108,46 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '1.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: thor
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.19.1
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.19.1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: inifile
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 3.0.0
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 3.0.0
|
111
139
|
description: BrickFTP's REST API client.
|
112
140
|
email:
|
113
141
|
- koshigoeb@gmail.com
|
114
|
-
executables:
|
142
|
+
executables:
|
143
|
+
- brick_ftp
|
115
144
|
extensions: []
|
116
145
|
extra_rdoc_files: []
|
117
146
|
files:
|
118
147
|
- ".gitignore"
|
119
148
|
- ".rspec"
|
120
149
|
- ".travis.yml"
|
150
|
+
- CHANGELOG.md
|
121
151
|
- Gemfile
|
122
152
|
- LICENSE.txt
|
123
153
|
- README.md
|
@@ -125,6 +155,7 @@ files:
|
|
125
155
|
- bin/console
|
126
156
|
- bin/setup
|
127
157
|
- brick_ftp.gemspec
|
158
|
+
- exe/brick_ftp
|
128
159
|
- lib/brick_ftp.rb
|
129
160
|
- lib/brick_ftp/api.rb
|
130
161
|
- lib/brick_ftp/api/authentication.rb
|
@@ -155,6 +186,10 @@ files:
|
|
155
186
|
- lib/brick_ftp/api/user.rb
|
156
187
|
- lib/brick_ftp/api_component.rb
|
157
188
|
- lib/brick_ftp/api_definition.rb
|
189
|
+
- lib/brick_ftp/cli.rb
|
190
|
+
- lib/brick_ftp/cli/config.rb
|
191
|
+
- lib/brick_ftp/cli/main.rb
|
192
|
+
- lib/brick_ftp/cli/site.rb
|
158
193
|
- lib/brick_ftp/client.rb
|
159
194
|
- lib/brick_ftp/configuration.rb
|
160
195
|
- lib/brick_ftp/http_client.rb
|