appwrite 2.4.0 → 4.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.
Files changed (175) hide show
  1. checksums.yaml +4 -4
  2. data/lib/appwrite/client.rb +197 -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 +439 -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 +469 -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 -108
  72. data/.travis.yml +0 -16
  73. data/CHANGELOG.md +0 -1
  74. data/Gemfile +0 -4
  75. data/LICENSE +0 -12
  76. data/README.md +0 -96
  77. data/appwrite.gemspec +0 -11
  78. data/docs/examples/account/create-recovery.md +0 -15
  79. data/docs/examples/account/create-verification.md +0 -15
  80. data/docs/examples/account/delete-session.md +0 -15
  81. data/docs/examples/account/delete-sessions.md +0 -15
  82. data/docs/examples/account/delete.md +0 -15
  83. data/docs/examples/account/get-logs.md +0 -15
  84. data/docs/examples/account/get-prefs.md +0 -15
  85. data/docs/examples/account/get-session.md +0 -15
  86. data/docs/examples/account/get-sessions.md +0 -15
  87. data/docs/examples/account/get.md +0 -15
  88. data/docs/examples/account/update-email.md +0 -15
  89. data/docs/examples/account/update-name.md +0 -15
  90. data/docs/examples/account/update-password.md +0 -15
  91. data/docs/examples/account/update-prefs.md +0 -15
  92. data/docs/examples/account/update-recovery.md +0 -15
  93. data/docs/examples/account/update-verification.md +0 -15
  94. data/docs/examples/avatars/get-browser.md +0 -15
  95. data/docs/examples/avatars/get-credit-card.md +0 -15
  96. data/docs/examples/avatars/get-favicon.md +0 -15
  97. data/docs/examples/avatars/get-flag.md +0 -15
  98. data/docs/examples/avatars/get-image.md +0 -15
  99. data/docs/examples/avatars/get-initials.md +0 -15
  100. data/docs/examples/avatars/get-q-r.md +0 -15
  101. data/docs/examples/database/create-collection.md +0 -15
  102. data/docs/examples/database/create-document.md +0 -15
  103. data/docs/examples/database/delete-collection.md +0 -15
  104. data/docs/examples/database/delete-document.md +0 -15
  105. data/docs/examples/database/get-collection.md +0 -15
  106. data/docs/examples/database/get-document.md +0 -15
  107. data/docs/examples/database/list-collections.md +0 -15
  108. data/docs/examples/database/list-documents.md +0 -15
  109. data/docs/examples/database/update-collection.md +0 -15
  110. data/docs/examples/database/update-document.md +0 -15
  111. data/docs/examples/functions/create-execution.md +0 -15
  112. data/docs/examples/functions/create-tag.md +0 -15
  113. data/docs/examples/functions/create.md +0 -15
  114. data/docs/examples/functions/delete-tag.md +0 -15
  115. data/docs/examples/functions/delete.md +0 -15
  116. data/docs/examples/functions/get-execution.md +0 -15
  117. data/docs/examples/functions/get-tag.md +0 -15
  118. data/docs/examples/functions/get.md +0 -15
  119. data/docs/examples/functions/list-executions.md +0 -15
  120. data/docs/examples/functions/list-tags.md +0 -15
  121. data/docs/examples/functions/list.md +0 -15
  122. data/docs/examples/functions/update-tag.md +0 -15
  123. data/docs/examples/functions/update.md +0 -15
  124. data/docs/examples/health/get-anti-virus.md +0 -15
  125. data/docs/examples/health/get-cache.md +0 -15
  126. data/docs/examples/health/get-d-b.md +0 -15
  127. data/docs/examples/health/get-queue-certificates.md +0 -15
  128. data/docs/examples/health/get-queue-functions.md +0 -15
  129. data/docs/examples/health/get-queue-logs.md +0 -15
  130. data/docs/examples/health/get-queue-tasks.md +0 -15
  131. data/docs/examples/health/get-queue-usage.md +0 -15
  132. data/docs/examples/health/get-queue-webhooks.md +0 -15
  133. data/docs/examples/health/get-storage-local.md +0 -15
  134. data/docs/examples/health/get-time.md +0 -15
  135. data/docs/examples/health/get.md +0 -15
  136. data/docs/examples/locale/get-continents.md +0 -15
  137. data/docs/examples/locale/get-countries-e-u.md +0 -15
  138. data/docs/examples/locale/get-countries-phones.md +0 -15
  139. data/docs/examples/locale/get-countries.md +0 -15
  140. data/docs/examples/locale/get-currencies.md +0 -15
  141. data/docs/examples/locale/get-languages.md +0 -15
  142. data/docs/examples/locale/get.md +0 -15
  143. data/docs/examples/storage/create-file.md +0 -15
  144. data/docs/examples/storage/delete-file.md +0 -15
  145. data/docs/examples/storage/get-file-download.md +0 -15
  146. data/docs/examples/storage/get-file-preview.md +0 -15
  147. data/docs/examples/storage/get-file-view.md +0 -15
  148. data/docs/examples/storage/get-file.md +0 -15
  149. data/docs/examples/storage/list-files.md +0 -15
  150. data/docs/examples/storage/update-file.md +0 -15
  151. data/docs/examples/teams/create-membership.md +0 -15
  152. data/docs/examples/teams/create.md +0 -15
  153. data/docs/examples/teams/delete-membership.md +0 -15
  154. data/docs/examples/teams/delete.md +0 -15
  155. data/docs/examples/teams/get-memberships.md +0 -15
  156. data/docs/examples/teams/get.md +0 -15
  157. data/docs/examples/teams/list.md +0 -15
  158. data/docs/examples/teams/update-membership-roles.md +0 -15
  159. data/docs/examples/teams/update-membership-status.md +0 -15
  160. data/docs/examples/teams/update.md +0 -15
  161. data/docs/examples/users/create.md +0 -15
  162. data/docs/examples/users/delete-session.md +0 -15
  163. data/docs/examples/users/delete-sessions.md +0 -15
  164. data/docs/examples/users/delete.md +0 -15
  165. data/docs/examples/users/get-logs.md +0 -15
  166. data/docs/examples/users/get-prefs.md +0 -15
  167. data/docs/examples/users/get-sessions.md +0 -15
  168. data/docs/examples/users/get.md +0 -15
  169. data/docs/examples/users/list.md +0 -15
  170. data/docs/examples/users/update-email.md +0 -15
  171. data/docs/examples/users/update-name.md +0 -15
  172. data/docs/examples/users/update-password.md +0 -15
  173. data/docs/examples/users/update-prefs.md +0 -15
  174. data/docs/examples/users/update-status.md +0 -15
  175. data/docs/examples/users/update-verification.md +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 213800ebfb3b9439c2c435494dc283e25110d1747179bd06c60a17041c3fdb6f
4
- data.tar.gz: e93c76057871b72b7272798f1dc79001f7850acff9959c735a1cf6b760a23e87
3
+ metadata.gz: c885588668d4133732a6a6acf50beaa77734e71057417396d474e93b492029c5
4
+ data.tar.gz: 7711957f95eb038ad03e6c503a55dc61b3e0c7313e15308451a254cb35093b29
5
5
  SHA512:
6
- metadata.gz: 2efe4ce3fd7b0f65933968fc84b3e17ad16c37fc4c3f7a923ff25dccc6e8fcd2f51cb566d30d4e5b2f4b99f387125de50fb694b78914eab15dcfea622eb05581
7
- data.tar.gz: fa1f5bfb07204da80ab47d0f293ef97fd2d45c70bbd91aee712957688a8c8bd51a022015c9114f2f2cebf089f34d4f02fa4bc5dbbbd8bae7932ab94b76e59f70
6
+ metadata.gz: e7eb2a20711fd0e4f0650e39c89ae553d36f9f1e3dd2cdd5408b37555c6b75dbd45078018f5a68de3f5b568d91430871114e2afc287c5dbf058abe20ef33ea4d
7
+ data.tar.gz: 79804f75cbf28704a84d4c83401cc9873bc46bab9aa5b31198db05929f441fb6c8baee04adb3c04b0f385cbb0a5347df542ec37d6d1f80032c700a899c7a6a4e
@@ -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,275 @@ 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.0',
24
- 'X-Appwrite-Response-Format' => '0.10.0'
15
+ 'x-sdk-version' => 'appwrite:ruby:4.0.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
+ on_progress: nil,
133
+ response_type: nil
134
+ )
135
+ file_path = params[param_name.to_sym]
136
+ size = ::File.size(file_path)
137
+
138
+ if size < @chunk_size
139
+ slice = ::File.read(file_path)
140
+ params[param_name] = File.new(file_path, slice)
141
+ return call(
142
+ method: 'POST',
143
+ path: path,
144
+ headers: headers,
145
+ params: params,
146
+ response_type: response_type,
147
+ )
148
+ end
149
+
150
+ input = ::File.open(file_path)
151
+ offset = 0
152
+
153
+ while offset < size
154
+ slice = input.read(@chunk_size)
155
+
156
+ params[param_name] = File.new(file_path, slice)
157
+ headers['content-range'] = "bytes #{offset}-#{[offset + @chunk_size - 1, size].min}/#{size}"
158
+
159
+ result = call(
160
+ method: 'POST',
161
+ path: path,
162
+ headers: headers,
163
+ params: params,
164
+ )
165
+
166
+ offset += @chunk_size
167
+
168
+ if defined? result['$id']
169
+ headers['x-Appwrite-id'] = result['$id']
170
+ end
171
+
172
+ on_progress.call({
173
+ id: result['$id'],
174
+ progress: ([offset, size].min).to_f/size.to_f * 100.0,
175
+ size_uploaded: [offset, size].min,
176
+ chunks_total: result['chunks_total'],
177
+ chunks_uploaded: result['chunks_uploaded']
178
+ }) unless on_progress.nil?
179
+ end
180
+
181
+ return result unless response_type.respond_to?("from")
182
+
183
+ response_type.from(map: result)
184
+ end
71
185
 
72
186
  private
73
187
 
74
- def fetch(method, uri, headers, params, limit = 5)
188
+ def fetch(
189
+ method,
190
+ uri,
191
+ headers,
192
+ params,
193
+ response_type = nil,
194
+ limit = 5
195
+ )
75
196
  raise ArgumentError, 'Too Many HTTP Redirects' if limit == 0
76
197
 
77
- http = Net::HTTP.new(uri.host, uri.port)
78
- http.use_ssl = (uri.scheme == 'https')
198
+ @http = Net::HTTP.new(uri.host, uri.port) unless defined? @http
199
+ @http.use_ssl = !@self_signed
79
200
  payload = ''
80
201
 
81
202
  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]
203
+
204
+ @boundary = "----A30#3ad1"
205
+ if method != "GET"
206
+ case headers[:'content-type']
85
207
  when 'application/json'
86
208
  payload = params.to_json
87
209
  when 'multipart/form-data'
88
- payload = "--#{@BOUNDARY}\r\n" + encodeFormData(params)
89
- headers['content-type'] = "multipart/form-data; boundary=#{@BOUNDARY}"
210
+ payload = "--#{@boundary}\r\n" + encode_form_data(params)
211
+ headers[:'content-type'] = "multipart/form-data; boundary=#{@boundary}"
90
212
  else
91
213
  payload = encode(params)
92
214
  end
93
215
  end
94
216
 
95
217
  begin
96
- response = http.send_request(method.upcase, uri.request_uri, payload, headers)
218
+ response = @http.send_request(method, uri.request_uri, payload, headers)
97
219
  rescue => error
98
220
  raise Appwrite::Exception.new(error.message)
99
221
  end
100
222
 
101
223
  # Handle Redirects
102
- if (response.class == Net::HTTPRedirection || response.class == Net::HTTPMovedPermanently)
224
+ if response.class == Net::HTTPRedirection || response.class == Net::HTTPMovedPermanently
103
225
  location = response['location']
104
226
  uri = URI.parse(uri.scheme + "://" + uri.host + "" + location)
105
227
 
106
- return fetch(method, uri, headers, {}, limit - 1)
228
+ return fetch(method, uri, headers, {}, response_type, limit - 1)
107
229
  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)
230
+
231
+ if response.content_type == 'application/json'
232
+ begin
233
+ result = JSON.parse(response.body)
234
+ rescue JSON::ParserError => e
235
+ raise Appwrite::Exception.new(response.body, response.code, nil, response)
236
+ end
237
+
238
+ if response.code.to_i >= 400
239
+ raise Appwrite::Exception.new(result['message'], result['status'], result['type'], result)
240
+ end
241
+
242
+ unless response_type.respond_to?("from")
243
+ return result
244
+ end
245
+
246
+ return response_type.from(map: result)
247
+ end
248
+
249
+ if response.code.to_i >= 400
250
+ raise Appwrite::Exception.new(response.body, response.code, response)
113
251
  end
114
252
 
115
- if(response.code.to_i >= 400)
116
- raise Appwrite::Exception.new(res['message'], res['status'], res)
253
+ if response.respond_to?("body_permitted?")
254
+ return response.body if response.body_permitted?
117
255
  end
118
256
 
119
- return res;
257
+ return response
120
258
  end
121
259
 
122
- def encodeFormData(value, key=nil)
260
+ def encode_form_data(value, key=nil)
123
261
  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 ''
262
+ when Hash
263
+ value.map { |k,v| encode_form_data(v,k) }.join
264
+ when Array
265
+ value.map { |v| encode_form_data(v, "#{key}[]") }.join
266
+ when nil
267
+ ''
127
268
  else
128
269
  post_body = []
129
- if(value.instance_of? File)
270
+ if value.instance_of? File
130
271
  post_body << "Content-Disposition: form-data; name=\"#{key}\"; filename=\"#{value.name}\"\r\n"
131
- post_body << "Content-Type: #{value.mimeType}\r\n\r\n"
272
+ post_body << "Content-Type: #{value.mime_type}\r\n\r\n"
132
273
  post_body << value.content
133
- post_body << "\r\n--#{@BOUNDARY}--\r\n"
274
+ post_body << "\r\n--#{@boundary}--\r\n"
134
275
  else
135
276
  post_body << "Content-Disposition: form-data; name=\"#{key}\"\r\n\r\n"
136
277
  post_body << "#{value.to_s}"
137
- post_body << "\r\n--#{@BOUNDARY}\r\n"
278
+ post_body << "\r\n--#{@boundary}\r\n"
138
279
  end
139
280
  post_body.join
140
281
  end
@@ -154,4 +295,4 @@ module Appwrite
154
295
  root_key.nil? ? key : "#{root_key}[#{key.to_s}]"
155
296
  end
156
297
  end
157
- end
298
+ 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