squarecloud-unofficial 1.0.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 +7 -0
- data/LICENSE +20 -0
- data/README.md +169 -0
- data/bin/console +7 -0
- data/lib/squarecloud/application.rb +146 -0
- data/lib/squarecloud/http/client.rb +274 -0
- data/lib/squarecloud/http/endpoint.rb +158 -0
- data/lib/squarecloud/models.rb +419 -0
- data/lib/squarecloud/version.rb +3 -0
- data/lib/squarecloud.rb +331 -0
- metadata +167 -0
data/lib/squarecloud.rb
ADDED
@@ -0,0 +1,331 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday/multipart'
|
3
|
+
|
4
|
+
|
5
|
+
require_relative 'squarecloud/version'
|
6
|
+
|
7
|
+
module Squarecloud
|
8
|
+
class Error < StandardError
|
9
|
+
attr_reader :message
|
10
|
+
|
11
|
+
def initialize(message = 'An unexpected error occurred')
|
12
|
+
@message = message
|
13
|
+
super(message)
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_s
|
17
|
+
@message
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class RequestError < Error
|
22
|
+
attr_reader :route, :status, :code
|
23
|
+
|
24
|
+
def initialize(route: nil, status_code: nil, code: nil, message: nil)
|
25
|
+
@route = route
|
26
|
+
@status = status_code
|
27
|
+
@code = code
|
28
|
+
@message = message || "route [
|
29
|
+
super(@message)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class AuthenticationFailure < RequestError
|
34
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
35
|
+
super(route: route, status_code: status_code, code: code,
|
36
|
+
message: 'Authentication failed: Invalid API token or access denied')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class NotFoundError < RequestError
|
41
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
42
|
+
super(route: route, status_code: status_code, code: code,
|
43
|
+
message: 'Resource not found: 404')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
class BadRequestError < RequestError
|
48
|
+
end
|
49
|
+
|
50
|
+
class ApplicationNotFound < Error
|
51
|
+
attr_reader :app_id
|
52
|
+
|
53
|
+
def initialize(app_id)
|
54
|
+
@app_id = app_id
|
55
|
+
super("No application was found with id:
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class InvalidFile < Error
|
60
|
+
def initialize
|
61
|
+
super('Invalid file')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
class MissingConfigFile < RequestError
|
66
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
67
|
+
super(route: route, status_code: status_code, code: code,
|
68
|
+
message: 'Configuration file is missing')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class MissingDependenciesFile < RequestError
|
73
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
74
|
+
super(route: route, status_code: status_code, code: code,
|
75
|
+
message: 'Dependencies file is missing')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
class TooManyRequests < RequestError
|
80
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
81
|
+
super(route: route, status_code: status_code, code: code,
|
82
|
+
message: 'Too many requests')
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
class FewMemory < RequestError
|
87
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
88
|
+
super(route: route, status_code: status_code, code: code,
|
89
|
+
message: 'Insufficient memory available')
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
class BadMemory < RequestError
|
94
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
95
|
+
super(route: route, status_code: status_code, code: code,
|
96
|
+
message: 'No memory available')
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
class InvalidConfig < RequestError
|
101
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
102
|
+
super(route: route, status_code: status_code, code: code,
|
103
|
+
message: 'Invalid config file')
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
class InvalidDisplayName < InvalidConfig
|
108
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
109
|
+
super(route: route, status_code: status_code, code: code,
|
110
|
+
message: 'Invalid display name in config file')
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
class MissingDisplayName < InvalidConfig
|
115
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
116
|
+
super(route: route, status_code: status_code, code: code,
|
117
|
+
message: 'Display name is missing in the config file')
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
class InvalidMain < InvalidConfig
|
122
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
123
|
+
super(route: route, status_code: status_code, code: code,
|
124
|
+
message: 'Invalid main file in config file')
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
class MissingMainFile < InvalidConfig
|
129
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
130
|
+
super(route: route, status_code: status_code, code: code,
|
131
|
+
message: 'Main file is missing in the config file')
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
class InvalidMemory < InvalidConfig
|
136
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
137
|
+
super(route: route, status_code: status_code, code: code,
|
138
|
+
message: 'Invalid memory value in config file')
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
class MissingMemory < InvalidConfig
|
143
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
144
|
+
super(route: route, status_code: status_code, code: code,
|
145
|
+
message: 'Memory value is missing in the config file')
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
class InvalidVersion < InvalidConfig
|
150
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
151
|
+
super(route: route, status_code: status_code, code: code,
|
152
|
+
message: 'Invalid version value in config file')
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
class MissingVersion < InvalidConfig
|
157
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
158
|
+
super(route: route, status_code: status_code, code: code,
|
159
|
+
message: 'Version value is missing in the config file')
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
class InvalidAccessToken < RequestError
|
164
|
+
end
|
165
|
+
|
166
|
+
class InvalidDomain < RequestError
|
167
|
+
attr_reader :domain
|
168
|
+
|
169
|
+
def initialize(domain: nil, route: nil, status_code: nil, code: nil, **kwargs)
|
170
|
+
@domain = domain
|
171
|
+
super(route: route, status_code: status_code, code: code,
|
172
|
+
message: "\"
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
class InvalidStart < InvalidConfig
|
177
|
+
def initialize(route: nil, status_code: nil, code: nil, **kwargs)
|
178
|
+
super(route: route, status_code: status_code, code: code,
|
179
|
+
message: 'Invalid start value in configuration file')
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
|
185
|
+
require_relative 'squarecloud/http/endpoint'
|
186
|
+
require_relative 'squarecloud/http/client'
|
187
|
+
require_relative 'squarecloud/models'
|
188
|
+
require_relative 'squarecloud/application'
|
189
|
+
|
190
|
+
|
191
|
+
module Squarecloud
|
192
|
+
class Client
|
193
|
+
attr_reader :api_key, :http
|
194
|
+
|
195
|
+
def initialize(api_key:)
|
196
|
+
@api_key = api_key
|
197
|
+
@http = Squarecloud::HTTP::Client.new(api_key: api_key)
|
198
|
+
end
|
199
|
+
|
200
|
+
def user
|
201
|
+
response = @http.fetch_user_info
|
202
|
+
Squarecloud::UserData.new(response)
|
203
|
+
end
|
204
|
+
|
205
|
+
def app(app_id)
|
206
|
+
response = @http.get_app_data(app_id)
|
207
|
+
Squarecloud::Application.new(http: @http, data: response)
|
208
|
+
end
|
209
|
+
|
210
|
+
def all_apps
|
211
|
+
user_data = user
|
212
|
+
user_data.apps.map do |app_data|
|
213
|
+
app(app_data[:id])
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
def app_status(app_id)
|
218
|
+
response = @http.fetch_app_status(app_id)
|
219
|
+
Squarecloud::StatusData.new(response)
|
220
|
+
end
|
221
|
+
|
222
|
+
def get_logs(app_id)
|
223
|
+
response = @http.fetch_logs(app_id)
|
224
|
+
Squarecloud::LogsData.new(response)
|
225
|
+
end
|
226
|
+
|
227
|
+
def start_app(app_id)
|
228
|
+
@http.start_application(app_id)
|
229
|
+
true
|
230
|
+
end
|
231
|
+
|
232
|
+
def stop_app(app_id)
|
233
|
+
@http.stop_application(app_id)
|
234
|
+
true
|
235
|
+
end
|
236
|
+
|
237
|
+
def restart_app(app_id)
|
238
|
+
@http.restart_application(app_id)
|
239
|
+
true
|
240
|
+
end
|
241
|
+
|
242
|
+
def backup(app_id)
|
243
|
+
response = @http.backup(app_id)
|
244
|
+
Squarecloud::Backup.new(response)
|
245
|
+
end
|
246
|
+
|
247
|
+
def delete_app(app_id)
|
248
|
+
@http.delete_application(app_id)
|
249
|
+
true
|
250
|
+
end
|
251
|
+
|
252
|
+
def commit(app_id, file)
|
253
|
+
@http.commit(app_id, file)
|
254
|
+
true
|
255
|
+
end
|
256
|
+
|
257
|
+
def upload_app(file)
|
258
|
+
response = @http.upload(file)
|
259
|
+
Squarecloud::UploadData.new(response)
|
260
|
+
end
|
261
|
+
|
262
|
+
def app_files_list(app_id, path)
|
263
|
+
response = @http.fetch_app_files_list(app_id, path)
|
264
|
+
response.map { |file_data| Squarecloud::FileInfo.new(app_id, file_data) }
|
265
|
+
end
|
266
|
+
|
267
|
+
def read_app_file(app_id, path)
|
268
|
+
@http.read_app_file(app_id, path)
|
269
|
+
end
|
270
|
+
|
271
|
+
def create_app_file(app_id, file, path)
|
272
|
+
@http.create_app_file(app_id, file, path)
|
273
|
+
true
|
274
|
+
end
|
275
|
+
|
276
|
+
def delete_app_file(app_id, path)
|
277
|
+
@http.file_delete(app_id, path)
|
278
|
+
true
|
279
|
+
end
|
280
|
+
|
281
|
+
def app_data(app_id)
|
282
|
+
response = @http.get_app_data(app_id)
|
283
|
+
Squarecloud::AppData.new(response)
|
284
|
+
end
|
285
|
+
|
286
|
+
def last_deploys(app_id)
|
287
|
+
response = @http.get_last_deploys(app_id)
|
288
|
+
response.map do |deploy_group|
|
289
|
+
deploy_group.map { |deploy| Squarecloud::DeployData.new(deploy) }
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
def github_integration(app_id, access_token)
|
294
|
+
@http.create_github_integration(app_id, access_token)
|
295
|
+
end
|
296
|
+
|
297
|
+
def set_custom_domain(app_id, custom_domain)
|
298
|
+
@http.update_custom_domain(app_id, custom_domain)
|
299
|
+
true
|
300
|
+
end
|
301
|
+
|
302
|
+
def domain_analytics(app_id)
|
303
|
+
response = @http.domain_analytics(app_id)
|
304
|
+
Squarecloud::DomainAnalytics.new(response)
|
305
|
+
end
|
306
|
+
|
307
|
+
def all_app_backups(app_id)
|
308
|
+
response = @http.get_all_app_backups(app_id)
|
309
|
+
response.map { |backup| Squarecloud::BackupInfo.new(backup) }
|
310
|
+
end
|
311
|
+
|
312
|
+
def all_apps_status
|
313
|
+
response = @http.all_apps_status
|
314
|
+
response.map { |status| Squarecloud::ResumedStatus.new(status) }
|
315
|
+
end
|
316
|
+
|
317
|
+
def move_app_file(app_id, origin, dest)
|
318
|
+
@http.move_app_file(app_id, origin, dest)
|
319
|
+
true
|
320
|
+
end
|
321
|
+
|
322
|
+
def dns_records(app_id)
|
323
|
+
response = @http.dns_records(app_id)
|
324
|
+
response.map { |record| Squarecloud::DNSRecord.new(record) }
|
325
|
+
end
|
326
|
+
|
327
|
+
def current_app_integration(app_id)
|
328
|
+
@http.get_app_current_integration(app_id)
|
329
|
+
end
|
330
|
+
end
|
331
|
+
end
|
metadata
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: squarecloud-unofficial
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Júlia Klee
|
8
|
+
bindir: bin
|
9
|
+
cert_chain: []
|
10
|
+
date: 2025-04-05 00:00:00.000000000 Z
|
11
|
+
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: faraday
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '2.7'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '2.7'
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: faraday-multipart
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.0'
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: bundler
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2.0'
|
47
|
+
type: :development
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '2.0'
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: rake
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '13.0'
|
61
|
+
type: :development
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '13.0'
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: rspec
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '3.12'
|
75
|
+
type: :development
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '3.12'
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: dotenv
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '2.8'
|
89
|
+
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '2.8'
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: rubocop
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '1.50'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '1.50'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: webmock
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '3.18'
|
117
|
+
type: :development
|
118
|
+
prerelease: false
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '3.18'
|
124
|
+
description: An unofficial Ruby library for interacting with the Square Cloud API,
|
125
|
+
providing Ruby developers with easy access to application management, backup systems,
|
126
|
+
domains, and more
|
127
|
+
email:
|
128
|
+
- me@juliaklee.wtf
|
129
|
+
executables:
|
130
|
+
- console
|
131
|
+
extensions: []
|
132
|
+
extra_rdoc_files: []
|
133
|
+
files:
|
134
|
+
- LICENSE
|
135
|
+
- README.md
|
136
|
+
- bin/console
|
137
|
+
- lib/squarecloud.rb
|
138
|
+
- lib/squarecloud/application.rb
|
139
|
+
- lib/squarecloud/http/client.rb
|
140
|
+
- lib/squarecloud/http/endpoint.rb
|
141
|
+
- lib/squarecloud/models.rb
|
142
|
+
- lib/squarecloud/version.rb
|
143
|
+
homepage: https://github.com/kleeedolinux/squarecloud-sdk-rb
|
144
|
+
licenses:
|
145
|
+
- MIT
|
146
|
+
metadata:
|
147
|
+
source_code_uri: https://github.com/kleeedolinux/squarecloud-sdk-rb
|
148
|
+
documentation_uri: https://github.com/kleeedolinux/squarecloud-sdk-rb
|
149
|
+
rubygems_mfa_required: 'true'
|
150
|
+
rdoc_options: []
|
151
|
+
require_paths:
|
152
|
+
- lib
|
153
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - ">="
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 2.7.0
|
158
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
|
+
requirements:
|
160
|
+
- - ">="
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
requirements: []
|
164
|
+
rubygems_version: 3.6.2
|
165
|
+
specification_version: 4
|
166
|
+
summary: Unofficial Ruby SDK for the Square Cloud API
|
167
|
+
test_files: []
|