appwrite 2.4.1 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (178) hide show
  1. checksums.yaml +4 -4
  2. data/lib/appwrite/client.rb +209 -56
  3. data/lib/appwrite/exception.rb +7 -7
  4. data/lib/appwrite/file.rb +9 -15
  5. data/lib/appwrite/models/attribute_boolean.rb +52 -0
  6. data/lib/appwrite/models/attribute_email.rb +57 -0
  7. data/lib/appwrite/models/attribute_enum.rb +62 -0
  8. data/lib/appwrite/models/attribute_float.rb +62 -0
  9. data/lib/appwrite/models/attribute_integer.rb +62 -0
  10. data/lib/appwrite/models/attribute_ip.rb +57 -0
  11. data/lib/appwrite/models/attribute_list.rb +32 -0
  12. data/lib/appwrite/models/attribute_string.rb +57 -0
  13. data/lib/appwrite/models/attribute_url.rb +57 -0
  14. data/lib/appwrite/models/bucket.rb +82 -0
  15. data/lib/appwrite/models/bucket_list.rb +32 -0
  16. data/lib/appwrite/models/collection.rb +62 -0
  17. data/lib/appwrite/models/collection_list.rb +32 -0
  18. data/lib/appwrite/models/continent.rb +32 -0
  19. data/lib/appwrite/models/continent_list.rb +32 -0
  20. data/lib/appwrite/models/country.rb +32 -0
  21. data/lib/appwrite/models/country_list.rb +32 -0
  22. data/lib/appwrite/models/currency.rb +57 -0
  23. data/lib/appwrite/models/currency_list.rb +32 -0
  24. data/lib/appwrite/models/deployment.rb +77 -0
  25. data/lib/appwrite/models/deployment_list.rb +32 -0
  26. data/lib/appwrite/models/document.rb +50 -0
  27. data/lib/appwrite/models/document_list.rb +36 -0
  28. data/lib/appwrite/models/execution.rb +72 -0
  29. data/lib/appwrite/models/execution_list.rb +32 -0
  30. data/lib/appwrite/models/file.rb +77 -0
  31. data/lib/appwrite/models/file_list.rb +32 -0
  32. data/lib/appwrite/models/function.rb +92 -0
  33. data/lib/appwrite/models/function_list.rb +32 -0
  34. data/lib/appwrite/models/health_antivirus.rb +32 -0
  35. data/lib/appwrite/models/health_queue.rb +27 -0
  36. data/lib/appwrite/models/health_status.rb +32 -0
  37. data/lib/appwrite/models/health_time.rb +37 -0
  38. data/lib/appwrite/models/index.rb +47 -0
  39. data/lib/appwrite/models/index_list.rb +32 -0
  40. data/lib/appwrite/models/language.rb +37 -0
  41. data/lib/appwrite/models/language_list.rb +32 -0
  42. data/lib/appwrite/models/locale.rb +57 -0
  43. data/lib/appwrite/models/log.rb +127 -0
  44. data/lib/appwrite/models/log_list.rb +32 -0
  45. data/lib/appwrite/models/membership.rb +67 -0
  46. data/lib/appwrite/models/membership_list.rb +32 -0
  47. data/lib/appwrite/models/phone.rb +37 -0
  48. data/lib/appwrite/models/phone_list.rb +32 -0
  49. data/lib/appwrite/models/preferences.rb +30 -0
  50. data/lib/appwrite/models/runtime.rb +57 -0
  51. data/lib/appwrite/models/runtime_list.rb +32 -0
  52. data/lib/appwrite/models/session.rb +142 -0
  53. data/lib/appwrite/models/session_list.rb +32 -0
  54. data/lib/appwrite/models/team.rb +42 -0
  55. data/lib/appwrite/models/team_list.rb +32 -0
  56. data/lib/appwrite/models/token.rb +42 -0
  57. data/lib/appwrite/models/user.rb +62 -0
  58. data/lib/appwrite/models/user_list.rb +32 -0
  59. data/lib/appwrite/query.rb +42 -0
  60. data/lib/appwrite/service.rb +0 -5
  61. data/lib/appwrite/services/account.rb +400 -138
  62. data/lib/appwrite/services/avatars.rb +188 -125
  63. data/lib/appwrite/services/database.rb +875 -130
  64. data/lib/appwrite/services/functions.rb +441 -207
  65. data/lib/appwrite/services/health.rb +201 -58
  66. data/lib/appwrite/services/locale.rb +133 -32
  67. data/lib/appwrite/services/storage.rb +471 -118
  68. data/lib/appwrite/services/teams.rb +302 -118
  69. data/lib/appwrite/services/users.rb +322 -127
  70. data/lib/appwrite.rb +57 -0
  71. metadata +74 -111
  72. data/.github/ISSUE_TEMPLATE/bug.yaml +0 -82
  73. data/.github/ISSUE_TEMPLATE/documentation.yaml +0 -32
  74. data/.github/ISSUE_TEMPLATE/feature.yaml +0 -40
  75. data/.travis.yml +0 -16
  76. data/CHANGELOG.md +0 -1
  77. data/Gemfile +0 -4
  78. data/LICENSE +0 -12
  79. data/README.md +0 -96
  80. data/appwrite.gemspec +0 -11
  81. data/docs/examples/account/create-recovery.md +0 -15
  82. data/docs/examples/account/create-verification.md +0 -15
  83. data/docs/examples/account/delete-session.md +0 -15
  84. data/docs/examples/account/delete-sessions.md +0 -15
  85. data/docs/examples/account/delete.md +0 -15
  86. data/docs/examples/account/get-logs.md +0 -15
  87. data/docs/examples/account/get-prefs.md +0 -15
  88. data/docs/examples/account/get-session.md +0 -15
  89. data/docs/examples/account/get-sessions.md +0 -15
  90. data/docs/examples/account/get.md +0 -15
  91. data/docs/examples/account/update-email.md +0 -15
  92. data/docs/examples/account/update-name.md +0 -15
  93. data/docs/examples/account/update-password.md +0 -15
  94. data/docs/examples/account/update-prefs.md +0 -15
  95. data/docs/examples/account/update-recovery.md +0 -15
  96. data/docs/examples/account/update-verification.md +0 -15
  97. data/docs/examples/avatars/get-browser.md +0 -15
  98. data/docs/examples/avatars/get-credit-card.md +0 -15
  99. data/docs/examples/avatars/get-favicon.md +0 -15
  100. data/docs/examples/avatars/get-flag.md +0 -15
  101. data/docs/examples/avatars/get-image.md +0 -15
  102. data/docs/examples/avatars/get-initials.md +0 -15
  103. data/docs/examples/avatars/get-q-r.md +0 -15
  104. data/docs/examples/database/create-collection.md +0 -15
  105. data/docs/examples/database/create-document.md +0 -15
  106. data/docs/examples/database/delete-collection.md +0 -15
  107. data/docs/examples/database/delete-document.md +0 -15
  108. data/docs/examples/database/get-collection.md +0 -15
  109. data/docs/examples/database/get-document.md +0 -15
  110. data/docs/examples/database/list-collections.md +0 -15
  111. data/docs/examples/database/list-documents.md +0 -15
  112. data/docs/examples/database/update-collection.md +0 -15
  113. data/docs/examples/database/update-document.md +0 -15
  114. data/docs/examples/functions/create-execution.md +0 -15
  115. data/docs/examples/functions/create-tag.md +0 -15
  116. data/docs/examples/functions/create.md +0 -15
  117. data/docs/examples/functions/delete-tag.md +0 -15
  118. data/docs/examples/functions/delete.md +0 -15
  119. data/docs/examples/functions/get-execution.md +0 -15
  120. data/docs/examples/functions/get-tag.md +0 -15
  121. data/docs/examples/functions/get.md +0 -15
  122. data/docs/examples/functions/list-executions.md +0 -15
  123. data/docs/examples/functions/list-tags.md +0 -15
  124. data/docs/examples/functions/list.md +0 -15
  125. data/docs/examples/functions/update-tag.md +0 -15
  126. data/docs/examples/functions/update.md +0 -15
  127. data/docs/examples/health/get-anti-virus.md +0 -15
  128. data/docs/examples/health/get-cache.md +0 -15
  129. data/docs/examples/health/get-d-b.md +0 -15
  130. data/docs/examples/health/get-queue-certificates.md +0 -15
  131. data/docs/examples/health/get-queue-functions.md +0 -15
  132. data/docs/examples/health/get-queue-logs.md +0 -15
  133. data/docs/examples/health/get-queue-tasks.md +0 -15
  134. data/docs/examples/health/get-queue-usage.md +0 -15
  135. data/docs/examples/health/get-queue-webhooks.md +0 -15
  136. data/docs/examples/health/get-storage-local.md +0 -15
  137. data/docs/examples/health/get-time.md +0 -15
  138. data/docs/examples/health/get.md +0 -15
  139. data/docs/examples/locale/get-continents.md +0 -15
  140. data/docs/examples/locale/get-countries-e-u.md +0 -15
  141. data/docs/examples/locale/get-countries-phones.md +0 -15
  142. data/docs/examples/locale/get-countries.md +0 -15
  143. data/docs/examples/locale/get-currencies.md +0 -15
  144. data/docs/examples/locale/get-languages.md +0 -15
  145. data/docs/examples/locale/get.md +0 -15
  146. data/docs/examples/storage/create-file.md +0 -15
  147. data/docs/examples/storage/delete-file.md +0 -15
  148. data/docs/examples/storage/get-file-download.md +0 -15
  149. data/docs/examples/storage/get-file-preview.md +0 -15
  150. data/docs/examples/storage/get-file-view.md +0 -15
  151. data/docs/examples/storage/get-file.md +0 -15
  152. data/docs/examples/storage/list-files.md +0 -15
  153. data/docs/examples/storage/update-file.md +0 -15
  154. data/docs/examples/teams/create-membership.md +0 -15
  155. data/docs/examples/teams/create.md +0 -15
  156. data/docs/examples/teams/delete-membership.md +0 -15
  157. data/docs/examples/teams/delete.md +0 -15
  158. data/docs/examples/teams/get-memberships.md +0 -15
  159. data/docs/examples/teams/get.md +0 -15
  160. data/docs/examples/teams/list.md +0 -15
  161. data/docs/examples/teams/update-membership-roles.md +0 -15
  162. data/docs/examples/teams/update-membership-status.md +0 -15
  163. data/docs/examples/teams/update.md +0 -15
  164. data/docs/examples/users/create.md +0 -15
  165. data/docs/examples/users/delete-session.md +0 -15
  166. data/docs/examples/users/delete-sessions.md +0 -15
  167. data/docs/examples/users/delete.md +0 -15
  168. data/docs/examples/users/get-logs.md +0 -15
  169. data/docs/examples/users/get-prefs.md +0 -15
  170. data/docs/examples/users/get-sessions.md +0 -15
  171. data/docs/examples/users/get.md +0 -15
  172. data/docs/examples/users/list.md +0 -15
  173. data/docs/examples/users/update-email.md +0 -15
  174. data/docs/examples/users/update-name.md +0 -15
  175. data/docs/examples/users/update-password.md +0 -15
  176. data/docs/examples/users/update-prefs.md +0 -15
  177. data/docs/examples/users/update-status.md +0 -15
  178. data/docs/examples/users/update-verification.md +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8c1eb3f808d7681c19fb3ce67089478bd8407225953e985602d375e2826cebd5
4
- data.tar.gz: be200991cd57aa18f7de0ea66ba32cddb0362475098799a177fb6b4e3614e063
3
+ metadata.gz: 9ccc9454e05eee3806e9bcb29e95ef8202b0fc617215e837e52a2cff52199bfd
4
+ data.tar.gz: 739353c7c628f0711f3c466c3d35f6db829bec9362415a735cf9ac3b72273a41
5
5
  SHA512:
6
- metadata.gz: fc95e5305739fbcb2ca092a48d7b03f821d75fa686c853d1dd1110aef3e806e331e7df1cc91280ed7bfb8950878de61471100fb68c0fde0768a2faad13de040e
7
- data.tar.gz: 5952f3051e0a25aa4913b9b64d8de94f3490d984e54139a6b76e5a139ed795358de993836ec63e3eb6660cb47881bad3e7608c18dee49d1054b57450746d1f89
6
+ metadata.gz: 483f458ce6e1b4abdeaeb96e60fabeb4f778fe775e39a1999abf19725f461a2db190b8b2b31f15d32d838436ac8b0e58bf6f1ce4f183e4a019d4fab75f0e8773
7
+ data.tar.gz: 91b5993ca7e9186e65150daf278751a510155d2d15a0de54169d9b6efdee376b93a99f512f75a649b32e04a389fe9ca8224e144c6905ccca4b11639930995478
@@ -1,3 +1,5 @@
1
+ #frozen_string_literal: true
2
+
1
3
  require 'net/http'
2
4
  require 'uri'
3
5
  require 'json'
@@ -5,136 +7,287 @@ require 'cgi'
5
7
 
6
8
  module Appwrite
7
9
  class Client
8
-
9
- METHOD_GET = 'get'
10
- METHOD_POST = 'post'
11
- METHOD_PUT = 'put'
12
- METHOD_PATCH = 'patch'
13
- METHOD_DELETE = 'delete'
14
- METHOD_HEAD = 'head'
15
- METHOD_OPTIONS = 'options'
16
- METHOD_CONNECT = 'connect'
17
- METHOD_TRACE = 'trace'
18
-
19
- def initialize()
10
+
11
+ def initialize
12
+ @chunk_size = 5*1024*1024
20
13
  @headers = {
21
- 'content-type' => '',
22
14
  'user-agent' => RUBY_PLATFORM + ':ruby-' + RUBY_VERSION,
23
- 'x-sdk-version' => 'appwrite:ruby:2.4.1',
24
- 'X-Appwrite-Response-Format' => '0.11.0'
15
+ 'x-sdk-version' => 'appwrite:ruby:4.1.0',
16
+ 'X-Appwrite-Response-Format' => '0.13.0'
25
17
  }
26
- @endpoint = 'https://appwrite.io/v1';
18
+ @endpoint = 'https://HOSTNAME/v1'
27
19
  end
28
20
 
21
+ # Set Project
22
+ #
23
+ # Your project ID
24
+ #
25
+ # @param [String] value The value to set for the Project header
26
+ #
27
+ # @return [self]
29
28
  def set_project(value)
30
29
  add_header('x-appwrite-project', value)
31
30
 
32
- return self
31
+ self
33
32
  end
34
33
 
34
+ # Set Key
35
+ #
36
+ # Your secret API key
37
+ #
38
+ # @param [String] value The value to set for the Key header
39
+ #
40
+ # @return [self]
35
41
  def set_key(value)
36
42
  add_header('x-appwrite-key', value)
37
43
 
38
- return self
44
+ self
39
45
  end
40
46
 
47
+ # Set JWT
48
+ #
49
+ # Your secret JSON Web Token
50
+ #
51
+ # @param [String] value The value to set for the JWT header
52
+ #
53
+ # @return [self]
41
54
  def set_jwt(value)
42
55
  add_header('x-appwrite-jwt', value)
43
56
 
44
- return self
57
+ self
45
58
  end
46
59
 
60
+ # Set Locale
61
+ #
62
+ # @param [String] value The value to set for the Locale header
63
+ #
64
+ # @return [self]
47
65
  def set_locale(value)
48
66
  add_header('x-appwrite-locale', value)
49
67
 
50
- return self
68
+ self
51
69
  end
52
70
 
71
+ # Set endpoint.
72
+ #
73
+ # @param [String] endpoint The endpoint to set
74
+ #
75
+ # @return [self]
53
76
  def set_endpoint(endpoint)
54
77
  @endpoint = endpoint
55
78
 
56
- return self
79
+ self
57
80
  end
58
-
81
+
82
+ # Set self signed.
83
+ #
84
+ # @param [String] self_signed Whether to allow self signed certificates.
85
+ #
86
+ # @return [self]
87
+ def set_self_signed(self_signed = true)
88
+ @self_signed = self_signed
89
+
90
+ self
91
+ end
92
+
93
+
94
+ # Add Header
95
+ #
96
+ # @param [String] key The key for the header to add
97
+ # @param [String] value The value for the header to add
98
+ #
99
+ # @return [self]
59
100
  def add_header(key, value)
60
101
  @headers[key.downcase] = value
61
102
 
62
- return self
103
+ self
63
104
  end
64
-
65
- def call(method, path = '', headers = {}, params = {})
66
- uri = URI.parse(@endpoint + path + ((method == METHOD_GET && params.length) ? '?' + encode(params) : ''))
67
- return fetch(method, uri, headers, params)
105
+
106
+ # Send the HTTP request.
107
+ #
108
+ # @param [String] method The HTTP method for the request
109
+ # @param [String] path The path for the request
110
+ # @param [Hash] headers The headers to send with the request
111
+ # @param [Hash] params The parameters to send with the request
112
+ # @param [Class] response_type The type of response to return
113
+ #
114
+ # @return [self]
115
+ def call(
116
+ method:,
117
+ path: '',
118
+ headers: {},
119
+ params: {},
120
+ response_type: nil
121
+ )
122
+ uri = URI.parse(@endpoint + path + ((method == "GET" && params.length) ? '?' + encode(params) : ''))
123
+
124
+ fetch(method, uri, headers, params, response_type)
68
125
  end
69
126
 
70
- protected
127
+ def chunked_upload(
128
+ path:,
129
+ headers:,
130
+ params:,
131
+ param_name: '',
132
+ id_param_name: nil,
133
+ on_progress: nil,
134
+ response_type: nil
135
+ )
136
+ file_path = params[param_name.to_sym]
137
+ size = ::File.size(file_path)
138
+
139
+ if size < @chunk_size
140
+ slice = ::File.read(file_path)
141
+ params[param_name] = File.new(file_path, slice)
142
+ return call(
143
+ method: 'POST',
144
+ path: path,
145
+ headers: headers,
146
+ params: params,
147
+ response_type: response_type,
148
+ )
149
+ end
150
+
151
+ offset = 0
152
+ id_param_name = id_param_name.to_sym if id_param_name
153
+ if id_param_name&.empty? == false && params[id_param_name] != "unique()"
154
+ # Make a request to check if a file already exists
155
+ current = call(
156
+ method: "GET",
157
+ path: "#{path}/#{params[id_param_name]}",
158
+ headers: headers,
159
+ params: {}
160
+ )
161
+ chunks_uploaded = current['chunksUploaded'].to_i
162
+ offset = [size, (chunks_uploaded * @chunk_size)].min
163
+ end
164
+
165
+ while offset < size
166
+ slice = IO.read(file_path, @chunk_size, offset)
167
+
168
+ params[param_name] = File.new(file_path, slice)
169
+ headers['content-range'] = "bytes #{offset}-#{[offset + @chunk_size - 1, size].min}/#{size}"
170
+
171
+ result = call(
172
+ method: 'POST',
173
+ path: path,
174
+ headers: headers,
175
+ params: params,
176
+ )
177
+
178
+ offset += @chunk_size
179
+
180
+ if defined? result['$id']
181
+ headers['x-Appwrite-id'] = result['$id']
182
+ end
183
+
184
+ on_progress.call({
185
+ id: result['$id'],
186
+ progress: ([offset, size].min).to_f/size.to_f * 100.0,
187
+ size_uploaded: [offset, size].min,
188
+ chunks_total: result['chunksTotal'],
189
+ chunks_uploaded: result['chunksUploaded']
190
+ }) unless on_progress.nil?
191
+ end
192
+
193
+ return result unless response_type.respond_to?("from")
194
+
195
+ response_type.from(map: result)
196
+ end
71
197
 
72
198
  private
73
199
 
74
- def fetch(method, uri, headers, params, limit = 5)
200
+ def fetch(
201
+ method,
202
+ uri,
203
+ headers,
204
+ params,
205
+ response_type = nil,
206
+ limit = 5
207
+ )
75
208
  raise ArgumentError, 'Too Many HTTP Redirects' if limit == 0
76
209
 
77
- http = Net::HTTP.new(uri.host, uri.port)
78
- http.use_ssl = (uri.scheme == 'https')
210
+ @http = Net::HTTP.new(uri.host, uri.port) unless defined? @http
211
+ @http.use_ssl = !@self_signed
79
212
  payload = ''
80
213
 
81
214
  headers = @headers.merge(headers)
82
- @BOUNDARY = "----A30#3ad1"
83
- if (method != METHOD_GET)
84
- case headers['content-type'][0, headers['content-type'].index(';') || headers['content-type'].length]
215
+
216
+ @boundary = "----A30#3ad1"
217
+ if method != "GET"
218
+ case headers[:'content-type']
85
219
  when 'application/json'
86
220
  payload = params.to_json
87
221
  when 'multipart/form-data'
88
- payload = "--#{@BOUNDARY}\r\n" + encodeFormData(params)
89
- headers['content-type'] = "multipart/form-data; boundary=#{@BOUNDARY}"
222
+ payload = "--#{@boundary}\r\n" + encode_form_data(params)
223
+ headers[:'content-type'] = "multipart/form-data; boundary=#{@boundary}"
90
224
  else
91
225
  payload = encode(params)
92
226
  end
93
227
  end
94
228
 
95
229
  begin
96
- response = http.send_request(method.upcase, uri.request_uri, payload, headers)
230
+ response = @http.send_request(method, uri.request_uri, payload, headers)
97
231
  rescue => error
98
232
  raise Appwrite::Exception.new(error.message)
99
233
  end
100
234
 
101
235
  # Handle Redirects
102
- if (response.class == Net::HTTPRedirection || response.class == Net::HTTPMovedPermanently)
236
+ if response.class == Net::HTTPRedirection || response.class == Net::HTTPMovedPermanently
103
237
  location = response['location']
104
238
  uri = URI.parse(uri.scheme + "://" + uri.host + "" + location)
105
239
 
106
- return fetch(method, uri, headers, {}, limit - 1)
240
+ return fetch(method, uri, headers, {}, response_type, limit - 1)
107
241
  end
108
-
109
- begin
110
- res = JSON.parse(response.body);
111
- rescue JSON::ParserError => e
112
- raise Appwrite::Exception.new(response.body, response.code, nil)
242
+
243
+ if response.content_type == 'application/json'
244
+ begin
245
+ result = JSON.parse(response.body)
246
+ rescue JSON::ParserError => e
247
+ raise Appwrite::Exception.new(response.body, response.code, nil, response)
248
+ end
249
+
250
+ if response.code.to_i >= 400
251
+ raise Appwrite::Exception.new(result['message'], result['status'], result['type'], result)
252
+ end
253
+
254
+ unless response_type.respond_to?("from")
255
+ return result
256
+ end
257
+
258
+ return response_type.from(map: result)
113
259
  end
114
260
 
115
- if(response.code.to_i >= 400)
116
- raise Appwrite::Exception.new(res['message'], res['status'], res)
261
+ if response.code.to_i >= 400
262
+ raise Appwrite::Exception.new(response.body, response.code, response)
117
263
  end
118
264
 
119
- return res;
265
+ if response.respond_to?("body_permitted?")
266
+ return response.body if response.body_permitted?
267
+ end
268
+
269
+ return response
120
270
  end
121
271
 
122
- def encodeFormData(value, key=nil)
272
+ def encode_form_data(value, key=nil)
123
273
  case value
124
- when Hash then value.map { |k,v| encodeFormData(v,k) }.join
125
- when Array then value.map { |v| encodeFormData(v, "#{key}[]") }.join
126
- when nil then ''
274
+ when Hash
275
+ value.map { |k,v| encode_form_data(v,k) }.join
276
+ when Array
277
+ value.map { |v| encode_form_data(v, "#{key}[]") }.join
278
+ when nil
279
+ ''
127
280
  else
128
281
  post_body = []
129
- if(value.instance_of? File)
282
+ if value.instance_of? File
130
283
  post_body << "Content-Disposition: form-data; name=\"#{key}\"; filename=\"#{value.name}\"\r\n"
131
- post_body << "Content-Type: #{value.mimeType}\r\n\r\n"
284
+ post_body << "Content-Type: #{value.mime_type}\r\n\r\n"
132
285
  post_body << value.content
133
- post_body << "\r\n--#{@BOUNDARY}--\r\n"
286
+ post_body << "\r\n--#{@boundary}--\r\n"
134
287
  else
135
288
  post_body << "Content-Disposition: form-data; name=\"#{key}\"\r\n\r\n"
136
289
  post_body << "#{value.to_s}"
137
- post_body << "\r\n--#{@BOUNDARY}\r\n"
290
+ post_body << "\r\n--#{@boundary}\r\n"
138
291
  end
139
292
  post_body.join
140
293
  end
@@ -154,4 +307,4 @@ module Appwrite
154
307
  root_key.nil? ? key : "#{root_key}[#{key.to_s}]"
155
308
  end
156
309
  end
157
- end
310
+ end
@@ -1,14 +1,14 @@
1
1
  module Appwrite
2
2
  class Exception < StandardError
3
- @code = 0;
4
- @response = nil;
5
-
6
- def initialize(message, code, response)
3
+ attr_reader :code
4
+ attr_reader :response
5
+ attr_reader :type
6
+
7
+ def initialize(message, code = 0, type = nil, response = nil)
7
8
  super(message)
8
9
  @code = code
10
+ @type = type
9
11
  @response = response
10
12
  end
11
- attr_reader :code
12
- attr_reader :response
13
13
  end
14
- end
14
+ end
data/lib/appwrite/file.rb CHANGED
@@ -2,22 +2,16 @@ require 'mime/types'
2
2
 
3
3
  module Appwrite
4
4
  class File
5
- def initialize(path)
6
- @name = ::File.basename(path)
7
- @content = ::File.read(path)
8
- @mimeType = MIME::Types.type_for(path)
9
- end
10
-
11
- def name
12
- @name
13
- end
5
+ attr_reader :path
6
+ attr_reader :name
7
+ attr_reader :content
8
+ attr_reader :mime_type
14
9
 
15
- def content
16
- @content
17
- end
18
-
19
- def mimeType
20
- @mimeType
10
+ def initialize(path, content)
11
+ @path = path
12
+ @content = content
13
+ @name = ::File.basename(path)
14
+ @mime_type = MIME::Types.type_for(path)
21
15
  end
22
16
  end
23
17
  end
@@ -0,0 +1,52 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AttributeBoolean
6
+ attr_reader :key
7
+ attr_reader :type
8
+ attr_reader :status
9
+ attr_reader :required
10
+ attr_reader :array
11
+ attr_reader :default
12
+
13
+ def initialize(
14
+ key:,
15
+ type:,
16
+ status:,
17
+ required:,
18
+ array: ,
19
+ default:
20
+ )
21
+ @key = key
22
+ @type = type
23
+ @status = status
24
+ @required = required
25
+ @array = array
26
+ @default = default
27
+ end
28
+
29
+ def self.from(map:)
30
+ AttributeBoolean.new(
31
+ key: map["key"],
32
+ type: map["type"],
33
+ status: map["status"],
34
+ required: map["required"],
35
+ array: map["array"],
36
+ default: map["default"]
37
+ )
38
+ end
39
+
40
+ def to_map
41
+ {
42
+ "key": @key,
43
+ "type": @type,
44
+ "status": @status,
45
+ "required": @required,
46
+ "array": @array,
47
+ "default": @default
48
+ }
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,57 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AttributeEmail
6
+ attr_reader :key
7
+ attr_reader :type
8
+ attr_reader :status
9
+ attr_reader :required
10
+ attr_reader :array
11
+ attr_reader :format
12
+ attr_reader :default
13
+
14
+ def initialize(
15
+ key:,
16
+ type:,
17
+ status:,
18
+ required:,
19
+ array: ,
20
+ format:,
21
+ default:
22
+ )
23
+ @key = key
24
+ @type = type
25
+ @status = status
26
+ @required = required
27
+ @array = array
28
+ @format = format
29
+ @default = default
30
+ end
31
+
32
+ def self.from(map:)
33
+ AttributeEmail.new(
34
+ key: map["key"],
35
+ type: map["type"],
36
+ status: map["status"],
37
+ required: map["required"],
38
+ array: map["array"],
39
+ format: map["format"],
40
+ default: map["default"]
41
+ )
42
+ end
43
+
44
+ def to_map
45
+ {
46
+ "key": @key,
47
+ "type": @type,
48
+ "status": @status,
49
+ "required": @required,
50
+ "array": @array,
51
+ "format": @format,
52
+ "default": @default
53
+ }
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,62 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AttributeEnum
6
+ attr_reader :key
7
+ attr_reader :type
8
+ attr_reader :status
9
+ attr_reader :required
10
+ attr_reader :array
11
+ attr_reader :elements
12
+ attr_reader :format
13
+ attr_reader :default
14
+
15
+ def initialize(
16
+ key:,
17
+ type:,
18
+ status:,
19
+ required:,
20
+ array: ,
21
+ elements:,
22
+ format:,
23
+ default:
24
+ )
25
+ @key = key
26
+ @type = type
27
+ @status = status
28
+ @required = required
29
+ @array = array
30
+ @elements = elements
31
+ @format = format
32
+ @default = default
33
+ end
34
+
35
+ def self.from(map:)
36
+ AttributeEnum.new(
37
+ key: map["key"],
38
+ type: map["type"],
39
+ status: map["status"],
40
+ required: map["required"],
41
+ array: map["array"],
42
+ elements: map["elements"],
43
+ format: map["format"],
44
+ default: map["default"]
45
+ )
46
+ end
47
+
48
+ def to_map
49
+ {
50
+ "key": @key,
51
+ "type": @type,
52
+ "status": @status,
53
+ "required": @required,
54
+ "array": @array,
55
+ "elements": @elements,
56
+ "format": @format,
57
+ "default": @default
58
+ }
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,62 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AttributeFloat
6
+ attr_reader :key
7
+ attr_reader :type
8
+ attr_reader :status
9
+ attr_reader :required
10
+ attr_reader :array
11
+ attr_reader :min
12
+ attr_reader :max
13
+ attr_reader :default
14
+
15
+ def initialize(
16
+ key:,
17
+ type:,
18
+ status:,
19
+ required:,
20
+ array: ,
21
+ min: ,
22
+ max: ,
23
+ default:
24
+ )
25
+ @key = key
26
+ @type = type
27
+ @status = status
28
+ @required = required
29
+ @array = array
30
+ @min = min
31
+ @max = max
32
+ @default = default
33
+ end
34
+
35
+ def self.from(map:)
36
+ AttributeFloat.new(
37
+ key: map["key"],
38
+ type: map["type"],
39
+ status: map["status"],
40
+ required: map["required"],
41
+ array: map["array"],
42
+ min: map["min"],
43
+ max: map["max"],
44
+ default: map["default"]
45
+ )
46
+ end
47
+
48
+ def to_map
49
+ {
50
+ "key": @key,
51
+ "type": @type,
52
+ "status": @status,
53
+ "required": @required,
54
+ "array": @array,
55
+ "min": @min,
56
+ "max": @max,
57
+ "default": @default
58
+ }
59
+ end
60
+ end
61
+ end
62
+ end