appwrite 2.4.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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