brick_ftp 0.8.4 → 1.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +0 -5
  3. data/.rubocop.yml +2 -1
  4. data/.yardopts +1 -0
  5. data/CHANGELOG.md +16 -12
  6. data/Gemfile +2 -0
  7. data/README.md +24 -43
  8. data/Rakefile +2 -0
  9. data/bin/console +1 -0
  10. data/brick_ftp.gemspec +10 -9
  11. data/exe/brick_ftp +1 -0
  12. data/lib/brick_ftp.rb +5 -78
  13. data/lib/brick_ftp/client.rb +35 -411
  14. data/lib/brick_ftp/core_ext.rb +8 -0
  15. data/lib/brick_ftp/core_ext/hash.rb +13 -0
  16. data/lib/brick_ftp/core_ext/hash/compact.rb +13 -0
  17. data/lib/brick_ftp/core_ext/struct.rb +13 -0
  18. data/lib/brick_ftp/core_ext/struct/new.rb +16 -0
  19. data/lib/brick_ftp/restful_api.rb +82 -0
  20. data/lib/brick_ftp/restful_api/add_group_member.rb +44 -0
  21. data/lib/brick_ftp/restful_api/client.rb +179 -0
  22. data/lib/brick_ftp/restful_api/command.rb +21 -0
  23. data/lib/brick_ftp/restful_api/complete_upload.rb +46 -0
  24. data/lib/brick_ftp/restful_api/continue_upload.rb +50 -0
  25. data/lib/brick_ftp/restful_api/copy_folder.rb +46 -0
  26. data/lib/brick_ftp/restful_api/count_folder_contents.rb +36 -0
  27. data/lib/brick_ftp/restful_api/count_users.rb +22 -0
  28. data/lib/brick_ftp/restful_api/create_api_key.rb +46 -0
  29. data/lib/brick_ftp/restful_api/create_behavior.rb +42 -0
  30. data/lib/brick_ftp/restful_api/create_bundle.rb +40 -0
  31. data/lib/brick_ftp/restful_api/create_folder.rb +25 -0
  32. data/lib/brick_ftp/restful_api/create_group.rb +42 -0
  33. data/lib/brick_ftp/restful_api/create_notification.rb +44 -0
  34. data/lib/brick_ftp/restful_api/create_permission.rb +48 -0
  35. data/lib/brick_ftp/restful_api/create_public_key.rb +42 -0
  36. data/lib/brick_ftp/restful_api/create_user.rb +90 -0
  37. data/lib/brick_ftp/restful_api/create_user_in_group.rb +60 -0
  38. data/lib/brick_ftp/restful_api/delete_api_key.rb +23 -0
  39. data/lib/brick_ftp/restful_api/delete_behavior.rb +22 -0
  40. data/lib/brick_ftp/restful_api/delete_bundle.rb +22 -0
  41. data/lib/brick_ftp/restful_api/delete_folder.rb +32 -0
  42. data/lib/brick_ftp/restful_api/delete_group.rb +23 -0
  43. data/lib/brick_ftp/restful_api/delete_notification.rb +23 -0
  44. data/lib/brick_ftp/restful_api/delete_permission.rb +23 -0
  45. data/lib/brick_ftp/restful_api/delete_public_key.rb +23 -0
  46. data/lib/brick_ftp/restful_api/delete_user.rb +25 -0
  47. data/lib/brick_ftp/restful_api/download_file.rb +44 -0
  48. data/lib/brick_ftp/restful_api/get_api_key.rb +25 -0
  49. data/lib/brick_ftp/restful_api/get_behavior.rb +25 -0
  50. data/lib/brick_ftp/restful_api/get_bundle.rb +25 -0
  51. data/lib/brick_ftp/restful_api/get_bundle_zip.rb +48 -0
  52. data/lib/brick_ftp/restful_api/get_file_in_bundle.rb +49 -0
  53. data/lib/brick_ftp/restful_api/get_folder_size.rb +25 -0
  54. data/lib/brick_ftp/restful_api/get_group.rb +26 -0
  55. data/lib/brick_ftp/restful_api/get_public_key.rb +25 -0
  56. data/lib/brick_ftp/restful_api/get_site_usage.rb +19 -0
  57. data/lib/brick_ftp/restful_api/get_user.rb +26 -0
  58. data/lib/brick_ftp/restful_api/list_api_keys.rb +25 -0
  59. data/lib/brick_ftp/restful_api/list_behaviors.rb +23 -0
  60. data/lib/brick_ftp/restful_api/list_bundle_contents.rb +58 -0
  61. data/lib/brick_ftp/restful_api/list_bundles.rb +23 -0
  62. data/lib/brick_ftp/restful_api/list_folder_behaviors.rb +39 -0
  63. data/lib/brick_ftp/restful_api/list_folders.rb +108 -0
  64. data/lib/brick_ftp/restful_api/list_groups.rb +23 -0
  65. data/lib/brick_ftp/restful_api/list_notifications.rb +23 -0
  66. data/lib/brick_ftp/restful_api/list_permissions.rb +41 -0
  67. data/lib/brick_ftp/restful_api/list_public_keys.rb +25 -0
  68. data/lib/brick_ftp/restful_api/list_users.rb +60 -0
  69. data/lib/brick_ftp/restful_api/move_folder.rb +41 -0
  70. data/lib/brick_ftp/restful_api/remove_group_member.rb +23 -0
  71. data/lib/brick_ftp/restful_api/retrieve_file_history.rb +41 -0
  72. data/lib/brick_ftp/restful_api/retrieve_folder_history.rb +41 -0
  73. data/lib/brick_ftp/restful_api/retrieve_history.rb +54 -0
  74. data/lib/brick_ftp/restful_api/retrieve_login_history.rb +38 -0
  75. data/lib/brick_ftp/restful_api/retrieve_site_history.rb +38 -0
  76. data/lib/brick_ftp/restful_api/retrieve_user_history.rb +40 -0
  77. data/lib/brick_ftp/restful_api/search_user.rb +28 -0
  78. data/lib/brick_ftp/restful_api/start_upload.rb +27 -0
  79. data/lib/brick_ftp/restful_api/unlock_user.rb +25 -0
  80. data/lib/brick_ftp/restful_api/update_behavior.rb +39 -0
  81. data/lib/brick_ftp/restful_api/update_group.rb +44 -0
  82. data/lib/brick_ftp/restful_api/update_group_member.rb +40 -0
  83. data/lib/brick_ftp/restful_api/update_user.rb +101 -0
  84. data/lib/brick_ftp/restful_api/upload_file.rb +65 -0
  85. data/lib/brick_ftp/types.rb +23 -0
  86. data/lib/brick_ftp/types/behavior.rb +27 -0
  87. data/lib/brick_ftp/types/bundle.rb +34 -0
  88. data/lib/brick_ftp/types/bundle_content.rb +25 -0
  89. data/lib/brick_ftp/types/bundle_zip.rb +19 -0
  90. data/lib/brick_ftp/types/file.rb +45 -0
  91. data/lib/brick_ftp/types/file_in_bundle.rb +25 -0
  92. data/lib/brick_ftp/types/folder_contents_count.rb +24 -0
  93. data/lib/brick_ftp/types/group.rb +31 -0
  94. data/lib/brick_ftp/types/group_membership.rb +27 -0
  95. data/lib/brick_ftp/types/history.rb +43 -0
  96. data/lib/brick_ftp/types/notification.rb +31 -0
  97. data/lib/brick_ftp/types/permission.rb +35 -0
  98. data/lib/brick_ftp/types/site_usage.rb +23 -0
  99. data/lib/brick_ftp/types/upload.rb +45 -0
  100. data/lib/brick_ftp/types/user.rb +79 -0
  101. data/lib/brick_ftp/types/user_api_key.rb +33 -0
  102. data/lib/brick_ftp/types/user_public_key.rb +28 -0
  103. data/lib/brick_ftp/utils.rb +2 -0
  104. data/lib/brick_ftp/utils/chunk_io.rb +5 -4
  105. data/lib/brick_ftp/version.rb +3 -1
  106. metadata +123 -86
  107. data/lib/brick_ftp/api.rb +0 -9
  108. data/lib/brick_ftp/api/authentication.rb +0 -28
  109. data/lib/brick_ftp/api/authentication/session.rb +0 -25
  110. data/lib/brick_ftp/api/base.rb +0 -119
  111. data/lib/brick_ftp/api/behavior.rb +0 -19
  112. data/lib/brick_ftp/api/bundle.rb +0 -17
  113. data/lib/brick_ftp/api/bundle_content.rb +0 -18
  114. data/lib/brick_ftp/api/bundle_download.rb +0 -18
  115. data/lib/brick_ftp/api/file.rb +0 -20
  116. data/lib/brick_ftp/api/file_operation.rb +0 -6
  117. data/lib/brick_ftp/api/file_operation/copy.rb +0 -10
  118. data/lib/brick_ftp/api/file_operation/move.rb +0 -10
  119. data/lib/brick_ftp/api/file_operation/upload.rb +0 -66
  120. data/lib/brick_ftp/api/file_operation/uploading_result.rb +0 -22
  121. data/lib/brick_ftp/api/file_operation/uploading_session.rb +0 -95
  122. data/lib/brick_ftp/api/folder.rb +0 -22
  123. data/lib/brick_ftp/api/folder_behavior.rb +0 -12
  124. data/lib/brick_ftp/api/group.rb +0 -16
  125. data/lib/brick_ftp/api/history.rb +0 -6
  126. data/lib/brick_ftp/api/history/file.rb +0 -23
  127. data/lib/brick_ftp/api/history/folder.rb +0 -23
  128. data/lib/brick_ftp/api/history/login.rb +0 -23
  129. data/lib/brick_ftp/api/history/site.rb +0 -23
  130. data/lib/brick_ftp/api/history/user.rb +0 -23
  131. data/lib/brick_ftp/api/notification.rb +0 -14
  132. data/lib/brick_ftp/api/permission.rb +0 -17
  133. data/lib/brick_ftp/api/public_key.rb +0 -15
  134. data/lib/brick_ftp/api/site_usage.rb +0 -21
  135. data/lib/brick_ftp/api/user.rb +0 -36
  136. data/lib/brick_ftp/api_component.rb +0 -81
  137. data/lib/brick_ftp/api_definition.rb +0 -65
  138. data/lib/brick_ftp/cli.rb +0 -7
  139. data/lib/brick_ftp/cli/config.rb +0 -20
  140. data/lib/brick_ftp/cli/main.rb +0 -26
  141. data/lib/brick_ftp/cli/site.rb +0 -10
  142. data/lib/brick_ftp/configuration.rb +0 -121
  143. data/lib/brick_ftp/http_client.rb +0 -130
  144. data/lib/brick_ftp/log_formatter.rb +0 -15
  145. data/lib/brick_ftp/webhook.rb +0 -4
  146. data/lib/brick_ftp/webhook/request.rb +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3026b27a022d2ac63fa9c5283e95de3d9d7fba0024f33d3154ebdacb13447c33
4
- data.tar.gz: 23de5d6cadf169edb04e9748cebb3714895cb69018d3181d99c71101a8ec9ef7
3
+ metadata.gz: 1c4ed28b9f5dcc9a24e2e0a8d5bb2193c96a8f4f37073389189c2355fcfdd311
4
+ data.tar.gz: 7ab0283efcb065f113cced95502211d2c42428369bf895d2feb3291da46dced4
5
5
  SHA512:
6
- metadata.gz: 4eadda95fa661c222e284c4ab2d674e4e07bdeb129f6832c0f6acf4082944adad3239476e916013a69307881ff930bcca9e152d7e985139e99db75e7f02e70a9
7
- data.tar.gz: 7ec9849a60523588b6757b5cfbd0a9aca967a7fd7c7407fe46e2494e77b95451835149ce211a6c99eebecf6822ace9deba3a795286615395fe1c8ebed9f5c597
6
+ metadata.gz: 0c11b1d4bbfbaedd952bcac92db8178b9238bd33fc2e294d0164b092abcb3efb35188c688ae9a2b8ac2b060f3a76628297348b50a16646585f067912c2c79cdb
7
+ data.tar.gz: 3541067fd5484dd587967665bbdba46770ef94f7e087353b247cb3ebf19b4f89de8bc121a52fbc4a22efbdb5cab918f1e41e46ed4076bef6c1951eb42db2f72c
data/.circleci/config.yml CHANGED
@@ -21,10 +21,6 @@ jobs:
21
21
  - store_artifacts:
22
22
  path: coverage
23
23
  destination: coverage
24
- ruby-2.2:
25
- <<: *build
26
- docker:
27
- - image: circleci/ruby:2.2
28
24
  ruby-2.3:
29
25
  <<: *build
30
26
  docker:
@@ -42,7 +38,6 @@ workflows:
42
38
  version: 2
43
39
  build-using-multi-rubies:
44
40
  jobs:
45
- - ruby-2.2
46
41
  - ruby-2.3
47
42
  - ruby-2.4
48
43
  - ruby-2.5
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.2
4
+ TargetRubyVersion: 2.3
5
5
 
6
6
  Style/EmptyCaseCondition:
7
7
  Enabled: false
@@ -24,6 +24,7 @@ Metrics/LineLength:
24
24
  URISchemes:
25
25
  - http
26
26
  - https
27
+ IgnoredPatterns: ['\A(?:\s)*?#']
27
28
 
28
29
  Metrics/BlockLength:
29
30
  Exclude:
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ -m markdown -M redcarpet
data/CHANGELOG.md CHANGED
@@ -2,10 +2,10 @@ Changelog
2
2
  ====
3
3
 
4
4
 
5
- [0.8.4](https://github.com/koshigoe/brick_ftp/compare/v0.8.3...v0.8.4)
5
+ [unreleased](https://github.com/koshigoe/brick_ftp/compare/v1.0.0.beta...master)
6
6
  ----
7
7
 
8
- [Full Changelog](https://github.com/koshigoe/brick_ftp/compare/v0.8.3...v0.8.4)
8
+ [Full Changelog](https://github.com/koshigoe/brick_ftp/compare/v1.0.0.beta...master)
9
9
 
10
10
  ### Enhancements:
11
11
 
@@ -13,26 +13,30 @@ Changelog
13
13
 
14
14
  ### Breaking Changes:
15
15
 
16
- ### Others
17
-
18
- - [#129](https://github.com/koshigoe/brick_ftp/pull/129) Update thor to 0.20 (by [cherbst-2112](https://github.com/cherbst-2112))
19
-
20
16
 
21
- [0.8.3](https://github.com/koshigoe/brick_ftp/compare/v0.8.2...v0.8.3)
17
+ [v1.0.0.beta](https://github.com/koshigoe/brick_ftp/compare/v0.8.2...v1.0.0.beta)
22
18
  ----
23
19
 
24
- [Full Changelog](https://github.com/koshigoe/brick_ftp/compare/v0.8.2...v0.8.3)
20
+ [Full Changelog](https://github.com/koshigoe/brick_ftp/compare/v0.8.2...v1.0.0.beta)
25
21
 
26
22
  ### Enhancements:
27
23
 
28
- - [#114](https://github.com/koshigoe/brick_ftp/pull/114) Allow to upload file using `StringIO`
29
-
30
24
  ### Fixed Bugs:
31
25
 
32
26
  ### Breaking Changes:
33
27
 
34
- ### Others
35
-
28
+ **CAUTION: There are huge breaking changes!!**
29
+
30
+ - [Dropping support for Ruby 2.2](https://github.com/koshigoe/brick_ftp/pull/104)
31
+ - Set `frozen_string_literal: true`
32
+ - [#105](https://github.com/koshigoe/brick_ftp/pull/105) Re-design (huge change!)
33
+ - Change to RPC like interface
34
+ - Only support token authentication
35
+ - Remove unuseful implementations
36
+ - Remove CLI
37
+ - Remove Webhook
38
+ - Remove Configuration
39
+ - etc.
36
40
 
37
41
  [0.8.2](https://github.com/koshigoe/brick_ftp/compare/v0.8.1...v0.8.2)
38
42
  ----
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in brick_ftp.gemspec
data/README.md CHANGED
@@ -2,11 +2,14 @@
2
2
  [![codecov](https://codecov.io/gh/koshigoe/brick_ftp/branch/master/graph/badge.svg)](https://codecov.io/gh/koshigoe/brick_ftp)
3
3
 
4
4
 
5
- # BrickFTP
5
+ BrickFTP
6
+ ====
6
7
 
7
- This is a [BrickFTP](https://brickftp.com/)'s _unofficial_ [REST API](https://brickftp.com/ja/docs/rest-api/) Client.
8
+ This is a [BrickFTP](https://brickftp.com/)'s _unofficial_ [RESTful API](https://developers.brickftp.com/) Client.
8
9
 
9
- ## Installation
10
+
11
+ Installation
12
+ ----
10
13
 
11
14
  Add this line to your application's Gemfile:
12
15
 
@@ -22,62 +25,40 @@ Or install it yourself as:
22
25
 
23
26
  $ gem install brick_ftp
24
27
 
25
- ## Usage
26
-
27
- ### Configuration
28
-
29
- ```ruby
30
- BrickFTP.configure do |c|
31
- c.subdomain = 'koshigoe' # Used by build API URL(e.g. https://{subdomain}.brickftp.com/api/rest/v1/...)
32
- c.api_key = 'xxxxx' # Used by set REST API key.
33
- c.logger = Logger.new(STDOUT) # Used by logging.
34
- end
35
- ```
36
-
37
- - Environment value `BRICK_FTP_SUBDOMAIN` is set to `subdomain`.
38
- - Environment value `BRICK_FTP_API_KEY` is set to `api_key`.
39
-
40
- ### Authentication
41
-
42
- If you authenticate by API key, you set API key to configuration.
43
- If you authenticate by session cookie, you must authenticate by API.
44
28
 
45
- ```ruby
46
- # Authenticate and set authentication session to configuration.
47
- BrickFTP::API::Authentication.login('koshigoe', 'password')
48
- ```
49
-
50
- ### Other APIs
51
-
52
- see [API document](http://www.rubydoc.info/github/koshigoe/brick_ftp/master) or source code.
53
-
54
- ### CLI (experimental)
55
-
56
- #### Configuration
29
+ Usage
30
+ ----
57
31
 
58
32
  ```
59
- $ brick_ftp config set subdomain mydomain
60
- $ brick_ftp config set api_key XXXXXXXXXX
33
+ $ bin/console
34
+ > client = BrickFTP::Client.new
35
+ > client.list_users
61
36
  ```
62
37
 
63
- #### e.g. Get site usage (disk usage)
64
-
65
38
  ```
66
- $ brick_ftp site usage
39
+ $ bin/console
40
+ > api_client = BrickFTP::RESTfulAPI::Client.new(ENV['BRICK_FTP_SUBDOMAIN'], ENV['BRICK_FTP_API_KEY'])
41
+ > BrickFTP::RESTfulAPI::ListUsers.new(api_client).call
67
42
  ```
68
43
 
69
- ### More
44
+ ### Environment Variables
70
45
 
71
- Please read help by run `brick_ftp help`, or read source code.
46
+ Name | Description
47
+ --------------------- | -----------
48
+ `BRICK_FTP_SUBDOMAIN` | Overwrite default subdomain
49
+ `BRICK_FTP_API_KEY` | Overwrite default API key
72
50
 
73
51
 
74
- ## Development
52
+ Development
53
+ ----
75
54
 
76
55
  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.
77
56
 
78
57
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
79
58
 
80
- ## Contributing
59
+
60
+ Contributing
61
+ ----
81
62
 
82
63
  Bug reports and pull requests are welcome on GitHub at https://github.com/koshigoe/brick_ftp.
83
64
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'rubocop/rake_task'
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'brick_ftp'
data/brick_ftp.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'brick_ftp/version'
@@ -18,19 +20,18 @@ Gem::Specification.new do |spec|
18
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
21
  spec.require_paths = ['lib']
20
22
 
21
- spec.required_ruby_version = '>= 2.2.0'
23
+ spec.required_ruby_version = '>= 2.3.0'
22
24
 
23
- spec.add_development_dependency 'bundler', '~> 1.12'
25
+ spec.add_development_dependency 'bundler', '~> 1.16'
24
26
  spec.add_development_dependency 'codecov', '~> 0.1.10'
25
- spec.add_development_dependency 'pry', '~> 0.10'
26
- spec.add_development_dependency 'rake', '~> 10.0'
27
- spec.add_development_dependency 'rspec', '~> 3.0'
28
- spec.add_development_dependency 'rubocop', '~> 0.55.0'
27
+ spec.add_development_dependency 'pry', '~> 0.11'
28
+ spec.add_development_dependency 'rake', '~> 12.0'
29
+ spec.add_development_dependency 'redcarpet', '~> 3.4'
30
+ spec.add_development_dependency 'rspec', '~> 3.7'
31
+ spec.add_development_dependency 'rubocop', '~> 0.57.0'
29
32
  spec.add_development_dependency 'simplecov', '~> 0.15'
30
- spec.add_development_dependency 'webmock', '~> 2.1'
33
+ spec.add_development_dependency 'webmock', '~> 3.4'
31
34
  spec.add_development_dependency 'yard', '~> 0.9'
32
35
 
33
36
  spec.add_dependency 'deep_hash_transform', '~> 1.0'
34
- spec.add_dependency 'inifile', '~> 3.0.0'
35
- spec.add_dependency 'thor', '~> 0.20'
36
37
  end
data/exe/brick_ftp CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  root = File.dirname(File.dirname(__FILE__))
4
5
  $LOAD_PATH.unshift(File.join(root, 'lib'))
data/lib/brick_ftp.rb CHANGED
@@ -1,49 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'deep_hash_transform'
2
- require 'thor'
3
4
  require 'brick_ftp/version'
4
- require 'brick_ftp/configuration'
5
- require 'brick_ftp/log_formatter'
6
- require 'brick_ftp/http_client'
7
5
  require 'brick_ftp/client'
8
- require 'brick_ftp/api'
9
- require 'brick_ftp/api_component'
10
- require 'brick_ftp/api_definition'
11
- require 'brick_ftp/api/base'
12
- require 'brick_ftp/api/authentication'
13
- require 'brick_ftp/api/authentication/session'
14
- require 'brick_ftp/api/user'
15
- require 'brick_ftp/api/public_key'
16
- require 'brick_ftp/api/group'
17
- require 'brick_ftp/api/permission'
18
- require 'brick_ftp/api/notification'
19
- require 'brick_ftp/api/history'
20
- require 'brick_ftp/api/history/site'
21
- require 'brick_ftp/api/history/login'
22
- require 'brick_ftp/api/history/user'
23
- require 'brick_ftp/api/history/folder'
24
- require 'brick_ftp/api/history/file'
25
- require 'brick_ftp/api/bundle'
26
- require 'brick_ftp/api/bundle_content'
27
- require 'brick_ftp/api/bundle_download'
28
- require 'brick_ftp/api/behavior'
29
- require 'brick_ftp/api/folder_behavior'
30
- require 'brick_ftp/api/folder'
31
- require 'brick_ftp/api/file'
32
- require 'brick_ftp/api/file_operation'
33
- require 'brick_ftp/api/file_operation/move'
34
- require 'brick_ftp/api/file_operation/copy'
35
- require 'brick_ftp/api/file_operation/upload'
36
- require 'brick_ftp/api/file_operation/uploading_session'
37
- require 'brick_ftp/api/file_operation/uploading_result'
38
- require 'brick_ftp/api/site_usage'
39
- require 'brick_ftp/webhook'
40
- require 'brick_ftp/webhook/request'
41
- require 'brick_ftp/cli'
42
- require 'brick_ftp/cli/config'
43
- require 'brick_ftp/cli/site'
44
- require 'brick_ftp/cli/main'
6
+ require 'brick_ftp/core_ext'
45
7
  require 'brick_ftp/utils'
46
8
  require 'brick_ftp/utils/chunk_io'
9
+ require 'brick_ftp/types'
10
+ require 'brick_ftp/restful_api'
47
11
 
48
12
  module BrickFTP
49
13
  # https://brickftp.com/redundancy/
@@ -77,41 +41,4 @@ module BrickFTP
77
41
  54.207.27.239
78
42
  52.68.4.44
79
43
  ].freeze
80
-
81
- # Return configuration.
82
- # If it has not been configured yet, initialize configuration.
83
- # @return [BrickFTP::Configuration] configuration object.
84
- def self.config
85
- @config ||= BrickFTP::Configuration.new
86
- end
87
-
88
- # Set configuration.
89
- #
90
- # @param config [BrickFTP::Configuration] configuration object.
91
- # @return [BrickFTP::Configuration] configuration object.
92
- def self.config=(config)
93
- raise TypeError unless config.is_a?(BrickFTP::Configuration)
94
- @config = config
95
- end
96
-
97
- # Configure some settings.
98
- #
99
- # @yield [config] Given configuration object.
100
- # @yieldparam config [BrickFTP::Configuration] configuration object.
101
- #
102
- # @example
103
- # BrickFTP.configure do |c|
104
- # c.subdomain = 'koshigoe'
105
- # c.api_key = 'xxxxxxxxxx'
106
- # end
107
- #
108
- def self.configure
109
- yield(config)
110
- end
111
-
112
- # Return logger object.
113
- # @return [Logger]
114
- def self.logger
115
- config.logger
116
- end
117
44
  end
@@ -1,429 +1,53 @@
1
- module BrickFTP
2
- class Client
3
- # Login and store authentication session.
4
- # @see https://developers.brickftp.com/#authentication-with-a-session
5
- # @param username [String] username of BrickFTP's user.
6
- # @param password [String] password of BrickFTP's user.
7
- def login(username, password)
8
- BrickFTP::API::Authentication.login(username, password)
9
- end
10
-
11
- # Logout and discard authentication session.
12
- # @see https://developers.brickftp.com/#authentication-with-a-session
13
- def logout
14
- BrickFTP::API::Authentication.logout
15
- end
16
-
17
- # List all users on the current site.
18
- # @see https://developers.brickftp.com/#users
19
- # @return [Array] array of BrickFTP::API::User
20
- def list_users
21
- BrickFTP::API::User.all
22
- end
23
-
24
- # Show a single user.
25
- # @see https://developers.brickftp.com/#users
26
- # @param id user id.
27
- # @return [BrickFTP::API::User] user object.
28
- def show_user(id)
29
- BrickFTP::API::User.find(id)
30
- end
31
-
32
- # Create a new user on the current site.
33
- # @see https://developers.brickftp.com/#users
34
- # @param attributes [Hash] User's attributes.
35
- def create_user(attributes)
36
- BrickFTP::API::User.create(attributes)
37
- end
38
-
39
- # Update an existing user.
40
- # @see https://developers.brickftp.com/#users
41
- # @param user_or_id [BrickFTP::API::User, Integer] user object or user id.
42
- # @param attributes [Hash] User's attributes.
43
- # @return [BrickFTP::API::User] user object.
44
- def update_user(user_or_id, attributes)
45
- instantize_user(user_or_id).update(attributes)
46
- end
47
-
48
- # Delete a user.
49
- # @see https://developers.brickftp.com/#users
50
- # @param user_or_id [BrickFTP::API::User, Integer] user object or user id.
51
- # @return [Boolean] return true.
52
- def delete_user(user_or_id)
53
- instantize_user(user_or_id).destroy
54
- end
55
-
56
- # List all groups on the current site.
57
- # @see https://developers.brickftp.com/#groups
58
- def list_groups
59
- BrickFTP::API::Group.all
60
- end
61
-
62
- # Show a single group.
63
- # @see https://developers.brickftp.com/#groups
64
- # @param id group id.
65
- # @return [BrickFTP::API::Group] group object.
66
- def show_group(id)
67
- BrickFTP::API::Group.find(id)
68
- end
69
-
70
- # Create a new group on the current site.
71
- # @see https://developers.brickftp.com/#groups
72
- # @param attributes [Hash] Group's attributes.
73
- def create_group(attributes)
74
- BrickFTP::API::Group.create(attributes)
75
- end
76
-
77
- # Update an existing group.
78
- # @see https://developers.brickftp.com/#groups
79
- # @param group_or_id [BrickFTP::API::Group, Integer] group object or group id.
80
- # @param attributes [Hash] Group's attributes.
81
- # @return [BrickFTP::API::Group] group object.
82
- def update_group(group_or_id, attributes)
83
- instantize_group(group_or_id).update(attributes)
84
- end
85
-
86
- # Delete a group.
87
- # @see https://developers.brickftp.com/#groups
88
- # @param group_or_id [BrickFTP::API::Group, Integer] group object or group id.
89
- # @return [Boolean] return true.
90
- def delete_group(group_or_id)
91
- instantize_group(group_or_id).destroy
92
- end
93
-
94
- # List all permissions on the current site.
95
- # @see https://developers.brickftp.com/#permissions
96
- def list_permissions
97
- BrickFTP::API::Permission.all
98
- end
99
-
100
- # Create a new permission on the current site.
101
- # @see https://developers.brickftp.com/#permissions
102
- # @param attributes [Hash] Permission's attributes.
103
- def create_permission(attributes)
104
- BrickFTP::API::Permission.create(attributes)
105
- end
106
-
107
- # Delete a permission.
108
- # @see https://developers.brickftp.com/#permissions
109
- # @param permission_or_id [BrickFTP::API::Permission, Integer] permission object or permission id.
110
- # @return [Boolean] return true.
111
- def delete_permission(permission_or_id)
112
- instantize_permission(permission_or_id).destroy
113
- end
114
-
115
- # List all notifications on the current site.
116
- # @see https://developers.brickftp.com/#notifications
117
- def list_notifications
118
- BrickFTP::API::Notification.all
119
- end
120
-
121
- # Create a new notification on the current site.
122
- # @see https://developers.brickftp.com/#notifications
123
- # @param attributes [Hash] Notification's attributes.
124
- def create_notification(attributes)
125
- BrickFTP::API::Notification.create(attributes)
126
- end
127
-
128
- # Delete a notification.
129
- # @see https://developers.brickftp.com/#notifications
130
- # @param notification_or_id [BrickFTP::API::Notification, Integer] notification object or notification id.
131
- # @return [Boolean] return true.
132
- def delete_notification(notification_or_id)
133
- instantize_notification(notification_or_id).destroy
134
- end
135
-
136
- # Show the entire history for the current site.
137
- # @see https://developers.brickftp.com/#history
138
- # @param page [Integer] Page number of items to return in this request.
139
- # @param display [String] Pass in 'full' to receive display summary
140
- # @param per_page [Integer] Requested number of items returned per request. Default: 1000, maximum: 10000.
141
- # Leave blank for default (strongly recommended).
142
- # @param start_at [String] Date and time in the history to start from.
143
- # @return [Array] array of `BrickFTP::API::History::Site`
144
- def list_site_history(page: nil, display: nil, per_page: nil, start_at: nil)
145
- query = { page: page, display: display, per_page: per_page, start_at: start_at }.reject { |_, v| v.nil? }
146
- BrickFTP::API::History::Site.all(query)
147
- end
148
-
149
- # Show login history only.
150
- # @see https://developers.brickftp.com/#history
151
- # @param page [Integer] Page number of items to return in this request.
152
- # @param display [String] Pass in 'full' to receive display summary
153
- # @param per_page [Integer] Requested number of items returned per request. Default: 1000, maximum: 10000.
154
- # Leave blank for default (strongly recommended).
155
- # @param start_at [String] Date and time in the history to start from.
156
- # @return [Array] array of `BrickFTP::API::History::Login`
157
- def list_login_history(page: nil, display: nil, per_page: nil, start_at: nil)
158
- query = { page: page, display: display, per_page: per_page, start_at: start_at }.reject { |_, v| v.nil? }
159
- BrickFTP::API::History::Login.all(query)
160
- end
161
-
162
- # Show all history for a specific user.
163
- # @see https://developers.brickftp.com/#history
164
- # @param user_id [Integer] User ID.
165
- # @param display [String] Pass in 'full' to receive display summary
166
- # @param page [Integer] Page number of items to return in this request.
167
- # @param per_page [Integer] Requested number of items returned per request.
168
- # Default: 1000, maximum: 10000. Leave blank for default (strongly recommended).
169
- # @param start_at [String] Date and time in the history to start from.
170
- # @return [Array] array of `BrickFTP::API::History::User`
171
- def list_user_history(user_id:, display: nil, page: nil, per_page: nil, start_at: nil)
172
- query = { user_id: user_id, display: display, page: page, per_page: per_page, start_at: start_at }
173
- .reject { |_, v| v.nil? }
174
- BrickFTP::API::History::User.all(query)
175
- end
176
-
177
- # Show all history for a specific folder.
178
- # @see https://developers.brickftp.com/#history
179
- # @param path [String] path of folder.
180
- # @param display [String] Pass in 'full' to receive display summary
181
- # @param page [Integer] Page number of items to return in this request.
182
- # @param per_page [Integer] Requested number of items returned per request.
183
- # Default: 1000, maximum: 10000. Leave blank for default (strongly recommended).
184
- # @param start_at [String] Date and time in the history to start from.
185
- # @return [Array] array of `BrickFTP::API::History::Folder`
186
- def list_folder_history(path:, display: nil, page: nil, per_page: nil, start_at: nil)
187
- query = { path: path, display: display, page: page, per_page: per_page, start_at: start_at }.reject { |_, v| v.nil? }
188
- BrickFTP::API::History::Folder.all(query)
189
- end
190
-
191
- # Show all history for a specific file.
192
- # @see https://developers.brickftp.com/#history
193
- # @param path [String] path of file.
194
- # @param display [String] Pass in 'full' to receive display summary
195
- # @param page [Integer] Page number of items to return in this request.
196
- # @param per_page [Integer] Requested number of items returned per request.
197
- # Default: 1000, maximum: 10000. Leave blank for default (strongly recommended).
198
- # @param start_at [String] Date and time in the history to start from.
199
- # @return [Array] array of `BrickFTP::API::History::File`
200
- def list_file_history(path:, display: nil, page: nil, per_page: nil, start_at: nil)
201
- query = { path: path, display: display, page: page, per_page: per_page, start_at: start_at }.reject { |_, v| v.nil? }
202
- BrickFTP::API::History::File.all(query)
203
- end
204
-
205
- # List all bundles on the current site.
206
- # @see https://developers.brickftp.com/#bundles
207
- # @return [Array] array of BrickFTP::API::Bundle
208
- def list_bundles
209
- BrickFTP::API::Bundle.all
210
- end
211
-
212
- # Show a single bundle.
213
- # @see https://developers.brickftp.com/#bundles
214
- # @param id bundle id.
215
- # @return [BrickFTP::API::Bundle] bundle object.
216
- def show_bundle(id)
217
- BrickFTP::API::Bundle.find(id)
218
- end
219
-
220
- # Create a new bundle on the current site.
221
- # @see https://developers.brickftp.com/#bundles
222
- # @param attributes [Hash] Bundle's attributes.
223
- def create_bundle(attributes)
224
- BrickFTP::API::Bundle.create(attributes)
225
- end
226
-
227
- # Delete a bundle.
228
- # @see https://developers.brickftp.com/#bundles
229
- # @param bundle_or_id [BrickFTP::API::Bundle, Integer] bundle object or bundle id.
230
- # @return [Boolean] return true.
231
- def delete_bundle(bundle_or_id)
232
- instantize_bundle(bundle_or_id).destroy
233
- end
234
-
235
- # List the contents of a bundle.
236
- # @see https://developers.brickftp.com/#bundles
237
- # @param path [String]
238
- # @param code [String]
239
- # @param host [String]
240
- # @return [Array] array of `BrickFTP::API::BundleContent`.
241
- def list_bundle_contents(path: nil, code:, host:)
242
- BrickFTP::API::BundleContent.all(path: path, code: code, host: host)
243
- end
244
-
245
- # Provides download URLs that will enable you to download the files in a bundle.
246
- # @see https://developers.brickftp.com/#bundles
247
- # @param code [String]
248
- # @param host [String]
249
- # @param paths [Array] array of path string.
250
- # @return [Array] array of `BrickFTP::API::BundleDownload`.
251
- def list_bundle_downloads(code:, host:, paths: [])
252
- BrickFTP::API::BundleDownload.all(code: code, host: host, paths: paths)
253
- end
254
-
255
- # List all behaviors on the current site.
256
- # @see https://developers.brickftp.com/#behaviors
257
- # @return [Array] array of BrickFTP::API::Behavior
258
- def list_behaviors
259
- BrickFTP::API::Behavior.all
260
- end
261
-
262
- # Show a single behavior.
263
- # @see https://developers.brickftp.com/#behaviors
264
- # @param id behavior id.
265
- # @return [BrickFTP::API::Behavior] behavior object.
266
- def show_behavior(id)
267
- BrickFTP::API::Behavior.find(id)
268
- end
269
-
270
- # Create a new behavior on the current site.
271
- # @see https://developers.brickftp.com/#behaviors
272
- # @param attributes [Hash] Behavior's attributes.
273
- def create_behavior(attributes)
274
- BrickFTP::API::Behavior.create(attributes)
275
- end
276
-
277
- # Update an existing behavior.
278
- # @see https://developers.brickftp.com/#behaviors
279
- # @param behavior_or_id [BrickFTP::API::Behavior, Integer] behavior object or behavior id.
280
- # @param attributes [Hash] Behavior's attributes.
281
- # @return [BrickFTP::API::Behavior] behavior object.
282
- def update_behavior(behavior_or_id, attributes)
283
- instantize_behavior(behavior_or_id).update(attributes)
284
- end
285
-
286
- # Delete a behavior.
287
- # @see https://developers.brickftp.com/#behaviors
288
- # @param behavior_or_id [BrickFTP::API::Behavior, Integer] behavior object or behavior id.
289
- # @return [Boolean] return true.
290
- def delete_behavior(behavior_or_id)
291
- instantize_behavior(behavior_or_id).destroy
292
- end
293
-
294
- # shows the behaviors that apply to the given path.
295
- # @see https://developers.brickftp.com/#behaviors
296
- # @return [Array] array of BrickFTP::API::FolderBehavior
297
- def list_folder_behaviors(path:)
298
- BrickFTP::API::FolderBehavior.all(path: path)
299
- end
300
-
301
- # Lists the contents of the folder provided in the URL.
302
- # @see https://developers.brickftp.com/#file-and-folder-operations
303
- # @param path [String]
304
- # @param page [Integer] Page number of items to return in this request.
305
- # @param per_page [Integer] Requested number of items returned per request.
306
- # Maximum: 5000, leave blank for default (strongly recommended).
307
- # @param search [String] Only return items matching the given search text.
308
- # @param sort_by_path [String] Sort by file name, and value is either asc or desc to indicate normal or reverse sort.
309
- # (Note that sort_by[path] = asc is the default.)
310
- # @param sort_by_size [String] Sort by file size, and value is either asc or desc to indicate smaller files
311
- # first or larger files first, respectively.
312
- # @param sort_by_modified_at_datetime [String] Sort by modification time, and value is either asc or desc to
313
- # indicate older files first or newer files first, respectively.
314
- # @return [Array] array of BrickFTP::API::Folder.
315
- def list_folders(path:, page: nil, per_page: nil, search: nil, sort_by_path: nil, sort_by_size: nil, sort_by_modified_at_datetime: nil) # rubocop:disable Metrics/LineLength
316
- query = { path: path, page: page, per_page: per_page, search: search }.reject { |_, v| v.nil? }
317
- query[:'sort_by[path]'] = sort_by_path if sort_by_path
318
- query[:'sort_by[size]'] = sort_by_size if sort_by_size
319
- query[:'sort_by[modified_at_datetime]'] = sort_by_modified_at_datetime if sort_by_modified_at_datetime
320
- BrickFTP::API::Folder.all(query)
321
- end
322
-
323
- # Create a folder.
324
- # @see https://developers.brickftp.com/#file-and-folder-operations
325
- # @param path [String]
326
- # @return [BrickFTP::API::Folder]
327
- def create_folder(path:)
328
- BrickFTP::API::Folder.create(path: path)
329
- end
330
-
331
- # provides a download URL that will enable you to download a file.
332
- # @see https://developers.brickftp.com/#file-and-folder-operations
333
- # @param path [String] path for file.
334
- # @param omit_download_uri [Boolean] If true, omit download_uri. (Add query `action=stat`)
335
- # @return [BrickFTP::API::File] file object.
336
- def show_file(path, omit_download_uri: false)
337
- params = {}
338
- params[:action] = 'stat' if omit_download_uri
339
- BrickFTP::API::File.find(path, params: params)
340
- end
341
-
342
- # Move or renames a file or folder to the destination provided in the move_destination parameter.
343
- # @see https://developers.brickftp.com/#file-and-folder-operations
344
- # @param path [String]
345
- # @param move_destination [String]
346
- # @return [BrickFTP::API::FileMove]
347
- def move_file(path:, move_destination:)
348
- BrickFTP::API::FileOperation::Move.create(path: path, 'move-destination': move_destination)
349
- end
350
-
351
- # Copy a file or folder to the destination provided in the copy_destination parameter.
352
- # @see https://developers.brickftp.com/#file-and-folder-operations
353
- # @param path [String]
354
- # @param copy_destination [String]
355
- # @return [BrickFTP::API::FileCopy]
356
- def copy_file(path:, copy_destination:)
357
- BrickFTP::API::FileOperation::Copy.create(path: path, 'copy-destination': copy_destination)
358
- end
1
+ # frozen_string_literal: true
359
2
 
360
- # Delete a file.
361
- # @see https://developers.brickftp.com/#file-and-folder-operations
362
- # @param file_or_path [BrickFTP::API::File, String] file object or file(folder) path.
363
- # @param recursive [Boolean]
364
- # @return [Boolean] return true.
365
- def delete_file(file_or_path, recursive: false)
366
- instantize_file(file_or_path).destroy(recursive: recursive)
367
- end
3
+ require 'brick_ftp/restful_api'
368
4
 
369
- # Upload file.
370
- # @see https://developers.brickftp.com/#file-uploading
371
- # @param path [String]
372
- # @param source [IO] source `data` (not `path`) to upload
373
- # @param chunk_size [Integer] Size of chunk to multi-part upload.
374
- # @return [BrickFTP::API::FileUpload]
375
- def upload_file(path:, source:, chunk_size: nil)
376
- BrickFTP::API::FileOperation::Upload.create(path: path, source: source, chunk_size: chunk_size)
377
- end
5
+ module BrickFTP
6
+ # To delegate commands.
7
+ #
8
+ # @see BrickFTP::RESTfulAPI
9
+ # @example Call {BrickFTP::RESTfulAPI::ListUser#call}
10
+ # BrickFTP::Client.new.list_users
11
+ #
12
+ class Client
13
+ attr_reader :subdomain, :api_key, :api_client
378
14
 
379
- # Get usage of site.
380
- # @return [BrickFTP::API::SiteUsage]
381
- def site_usage
382
- BrickFTP::API::SiteUsage.find
15
+ # @param [String] subdomain
16
+ # @param [String] api_key
17
+ def initialize(subdomain: nil, api_key: nil)
18
+ @subdomain = subdomain || ENV['BRICK_FTP_SUBDOMAIN']
19
+ @api_key = api_key || ENV['BRICK_FTP_API_KEY']
20
+ @api_client = BrickFTP::RESTfulAPI::Client.new(@subdomain, @api_key)
383
21
  end
384
22
 
385
23
  private
386
24
 
387
- def instantize_user(user_or_id)
388
- return user_or_id if user_or_id.is_a?(BrickFTP::API::User)
389
-
390
- BrickFTP::API::User.new(id: user_or_id)
391
- end
392
-
393
- def instantize_group(group_or_id)
394
- return group_or_id if group_or_id.is_a?(BrickFTP::API::Group)
395
-
396
- BrickFTP::API::Group.new(id: group_or_id)
397
- end
398
-
399
- def instantize_permission(permission_or_id)
400
- return permission_or_id if permission_or_id.is_a?(BrickFTP::API::Permission)
401
-
402
- BrickFTP::API::Permission.new(id: permission_or_id)
403
- end
25
+ def command_class(symbol)
26
+ name = symbol.to_s.split('_').map(&:capitalize).join
27
+ return unless BrickFTP::RESTfulAPI.const_defined?(name)
404
28
 
405
- def instantize_notification(notification_or_id)
406
- return notification_or_id if notification_or_id.is_a?(BrickFTP::API::Notification)
29
+ klass = BrickFTP::RESTfulAPI.const_get(name)
30
+ return unless klass < BrickFTP::RESTfulAPI::Command
407
31
 
408
- BrickFTP::API::Notification.new(id: notification_or_id)
32
+ klass
409
33
  end
410
34
 
411
- def instantize_bundle(bundle_or_id)
412
- return bundle_or_id if bundle_or_id.is_a?(BrickFTP::API::Bundle)
413
-
414
- BrickFTP::API::Bundle.new(id: bundle_or_id)
35
+ def respond_to_missing?(symbol, include_private)
36
+ return true if command_class(symbol)
37
+ super
415
38
  end
416
39
 
417
- def instantize_behavior(behavior_or_id)
418
- return behavior_or_id if behavior_or_id.is_a?(BrickFTP::API::Behavior)
419
-
420
- BrickFTP::API::Behavior.new(id: behavior_or_id)
40
+ def method_missing(name, *args)
41
+ klass = command_class(name)
42
+ if klass
43
+ dispatch_command(klass, *args)
44
+ else
45
+ super
46
+ end
421
47
  end
422
48
 
423
- def instantize_file(file_or_path)
424
- return file_or_path if file_or_path.is_a?(BrickFTP::API::File)
425
-
426
- BrickFTP::API::File.new(path: file_or_path)
49
+ def dispatch_command(klass, *args)
50
+ klass.new(api_client).call(*args)
427
51
  end
428
52
  end
429
53
  end