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.
@@ -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: []