appwrite 2.4.1 → 3.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 (176) hide show
  1. checksums.yaml +4 -4
  2. data/lib/appwrite/client.rb +134 -57
  3. data/lib/appwrite/exception.rb +5 -7
  4. data/lib/appwrite/file.rb +5 -13
  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/collection.rb +62 -0
  15. data/lib/appwrite/models/collection_list.rb +32 -0
  16. data/lib/appwrite/models/continent.rb +32 -0
  17. data/lib/appwrite/models/continent_list.rb +32 -0
  18. data/lib/appwrite/models/country.rb +32 -0
  19. data/lib/appwrite/models/country_list.rb +32 -0
  20. data/lib/appwrite/models/currency.rb +57 -0
  21. data/lib/appwrite/models/currency_list.rb +32 -0
  22. data/lib/appwrite/models/document.rb +50 -0
  23. data/lib/appwrite/models/document_list.rb +36 -0
  24. data/lib/appwrite/models/execution.rb +72 -0
  25. data/lib/appwrite/models/execution_list.rb +32 -0
  26. data/lib/appwrite/models/file.rb +62 -0
  27. data/lib/appwrite/models/file_list.rb +32 -0
  28. data/lib/appwrite/models/function.rb +92 -0
  29. data/lib/appwrite/models/function_list.rb +32 -0
  30. data/lib/appwrite/models/health_antivirus.rb +32 -0
  31. data/lib/appwrite/models/health_queue.rb +27 -0
  32. data/lib/appwrite/models/health_status.rb +32 -0
  33. data/lib/appwrite/models/health_time.rb +37 -0
  34. data/lib/appwrite/models/index.rb +47 -0
  35. data/lib/appwrite/models/index_list.rb +32 -0
  36. data/lib/appwrite/models/language.rb +37 -0
  37. data/lib/appwrite/models/language_list.rb +32 -0
  38. data/lib/appwrite/models/locale.rb +57 -0
  39. data/lib/appwrite/models/log.rb +127 -0
  40. data/lib/appwrite/models/log_list.rb +32 -0
  41. data/lib/appwrite/models/membership.rb +67 -0
  42. data/lib/appwrite/models/membership_list.rb +32 -0
  43. data/lib/appwrite/models/phone.rb +37 -0
  44. data/lib/appwrite/models/phone_list.rb +32 -0
  45. data/lib/appwrite/models/preferences.rb +30 -0
  46. data/lib/appwrite/models/runtime.rb +57 -0
  47. data/lib/appwrite/models/runtime_list.rb +32 -0
  48. data/lib/appwrite/models/session.rb +132 -0
  49. data/lib/appwrite/models/session_list.rb +32 -0
  50. data/lib/appwrite/models/tag.rb +47 -0
  51. data/lib/appwrite/models/tag_list.rb +32 -0
  52. data/lib/appwrite/models/team.rb +42 -0
  53. data/lib/appwrite/models/team_list.rb +32 -0
  54. data/lib/appwrite/models/token.rb +42 -0
  55. data/lib/appwrite/models/user.rb +62 -0
  56. data/lib/appwrite/models/user_list.rb +32 -0
  57. data/lib/appwrite/query.rb +42 -0
  58. data/lib/appwrite/service.rb +0 -5
  59. data/lib/appwrite/services/account.rb +370 -138
  60. data/lib/appwrite/services/avatars.rb +189 -125
  61. data/lib/appwrite/services/database.rb +876 -130
  62. data/lib/appwrite/services/functions.rb +364 -182
  63. data/lib/appwrite/services/health.rb +202 -58
  64. data/lib/appwrite/services/locale.rb +134 -32
  65. data/lib/appwrite/services/storage.rb +210 -121
  66. data/lib/appwrite/services/teams.rb +299 -118
  67. data/lib/appwrite/services/users.rb +322 -127
  68. data/lib/appwrite.rb +55 -0
  69. metadata +72 -111
  70. data/.github/ISSUE_TEMPLATE/bug.yaml +0 -82
  71. data/.github/ISSUE_TEMPLATE/documentation.yaml +0 -32
  72. data/.github/ISSUE_TEMPLATE/feature.yaml +0 -40
  73. data/.travis.yml +0 -16
  74. data/CHANGELOG.md +0 -1
  75. data/Gemfile +0 -4
  76. data/LICENSE +0 -12
  77. data/README.md +0 -96
  78. data/appwrite.gemspec +0 -11
  79. data/docs/examples/account/create-recovery.md +0 -15
  80. data/docs/examples/account/create-verification.md +0 -15
  81. data/docs/examples/account/delete-session.md +0 -15
  82. data/docs/examples/account/delete-sessions.md +0 -15
  83. data/docs/examples/account/delete.md +0 -15
  84. data/docs/examples/account/get-logs.md +0 -15
  85. data/docs/examples/account/get-prefs.md +0 -15
  86. data/docs/examples/account/get-session.md +0 -15
  87. data/docs/examples/account/get-sessions.md +0 -15
  88. data/docs/examples/account/get.md +0 -15
  89. data/docs/examples/account/update-email.md +0 -15
  90. data/docs/examples/account/update-name.md +0 -15
  91. data/docs/examples/account/update-password.md +0 -15
  92. data/docs/examples/account/update-prefs.md +0 -15
  93. data/docs/examples/account/update-recovery.md +0 -15
  94. data/docs/examples/account/update-verification.md +0 -15
  95. data/docs/examples/avatars/get-browser.md +0 -15
  96. data/docs/examples/avatars/get-credit-card.md +0 -15
  97. data/docs/examples/avatars/get-favicon.md +0 -15
  98. data/docs/examples/avatars/get-flag.md +0 -15
  99. data/docs/examples/avatars/get-image.md +0 -15
  100. data/docs/examples/avatars/get-initials.md +0 -15
  101. data/docs/examples/avatars/get-q-r.md +0 -15
  102. data/docs/examples/database/create-collection.md +0 -15
  103. data/docs/examples/database/create-document.md +0 -15
  104. data/docs/examples/database/delete-collection.md +0 -15
  105. data/docs/examples/database/delete-document.md +0 -15
  106. data/docs/examples/database/get-collection.md +0 -15
  107. data/docs/examples/database/get-document.md +0 -15
  108. data/docs/examples/database/list-collections.md +0 -15
  109. data/docs/examples/database/list-documents.md +0 -15
  110. data/docs/examples/database/update-collection.md +0 -15
  111. data/docs/examples/database/update-document.md +0 -15
  112. data/docs/examples/functions/create-execution.md +0 -15
  113. data/docs/examples/functions/create-tag.md +0 -15
  114. data/docs/examples/functions/create.md +0 -15
  115. data/docs/examples/functions/delete-tag.md +0 -15
  116. data/docs/examples/functions/delete.md +0 -15
  117. data/docs/examples/functions/get-execution.md +0 -15
  118. data/docs/examples/functions/get-tag.md +0 -15
  119. data/docs/examples/functions/get.md +0 -15
  120. data/docs/examples/functions/list-executions.md +0 -15
  121. data/docs/examples/functions/list-tags.md +0 -15
  122. data/docs/examples/functions/list.md +0 -15
  123. data/docs/examples/functions/update-tag.md +0 -15
  124. data/docs/examples/functions/update.md +0 -15
  125. data/docs/examples/health/get-anti-virus.md +0 -15
  126. data/docs/examples/health/get-cache.md +0 -15
  127. data/docs/examples/health/get-d-b.md +0 -15
  128. data/docs/examples/health/get-queue-certificates.md +0 -15
  129. data/docs/examples/health/get-queue-functions.md +0 -15
  130. data/docs/examples/health/get-queue-logs.md +0 -15
  131. data/docs/examples/health/get-queue-tasks.md +0 -15
  132. data/docs/examples/health/get-queue-usage.md +0 -15
  133. data/docs/examples/health/get-queue-webhooks.md +0 -15
  134. data/docs/examples/health/get-storage-local.md +0 -15
  135. data/docs/examples/health/get-time.md +0 -15
  136. data/docs/examples/health/get.md +0 -15
  137. data/docs/examples/locale/get-continents.md +0 -15
  138. data/docs/examples/locale/get-countries-e-u.md +0 -15
  139. data/docs/examples/locale/get-countries-phones.md +0 -15
  140. data/docs/examples/locale/get-countries.md +0 -15
  141. data/docs/examples/locale/get-currencies.md +0 -15
  142. data/docs/examples/locale/get-languages.md +0 -15
  143. data/docs/examples/locale/get.md +0 -15
  144. data/docs/examples/storage/create-file.md +0 -15
  145. data/docs/examples/storage/delete-file.md +0 -15
  146. data/docs/examples/storage/get-file-download.md +0 -15
  147. data/docs/examples/storage/get-file-preview.md +0 -15
  148. data/docs/examples/storage/get-file-view.md +0 -15
  149. data/docs/examples/storage/get-file.md +0 -15
  150. data/docs/examples/storage/list-files.md +0 -15
  151. data/docs/examples/storage/update-file.md +0 -15
  152. data/docs/examples/teams/create-membership.md +0 -15
  153. data/docs/examples/teams/create.md +0 -15
  154. data/docs/examples/teams/delete-membership.md +0 -15
  155. data/docs/examples/teams/delete.md +0 -15
  156. data/docs/examples/teams/get-memberships.md +0 -15
  157. data/docs/examples/teams/get.md +0 -15
  158. data/docs/examples/teams/list.md +0 -15
  159. data/docs/examples/teams/update-membership-roles.md +0 -15
  160. data/docs/examples/teams/update-membership-status.md +0 -15
  161. data/docs/examples/teams/update.md +0 -15
  162. data/docs/examples/users/create.md +0 -15
  163. data/docs/examples/users/delete-session.md +0 -15
  164. data/docs/examples/users/delete-sessions.md +0 -15
  165. data/docs/examples/users/delete.md +0 -15
  166. data/docs/examples/users/get-logs.md +0 -15
  167. data/docs/examples/users/get-prefs.md +0 -15
  168. data/docs/examples/users/get-sessions.md +0 -15
  169. data/docs/examples/users/get.md +0 -15
  170. data/docs/examples/users/list.md +0 -15
  171. data/docs/examples/users/update-email.md +0 -15
  172. data/docs/examples/users/update-name.md +0 -15
  173. data/docs/examples/users/update-password.md +0 -15
  174. data/docs/examples/users/update-prefs.md +0 -15
  175. data/docs/examples/users/update-status.md +0 -15
  176. 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: faf26d54d0dd35ecb6279029fc13a153e824c91a0f6daa78dd0b3aa9b14e7337
4
+ data.tar.gz: 35bfcac6e7bcc0aeadc0a91a5ae07a9c18ab9f2d01e17f4e2132ff243f0f2690
5
5
  SHA512:
6
- metadata.gz: fc95e5305739fbcb2ca092a48d7b03f821d75fa686c853d1dd1110aef3e806e331e7df1cc91280ed7bfb8950878de61471100fb68c0fde0768a2faad13de040e
7
- data.tar.gz: 5952f3051e0a25aa4913b9b64d8de94f3490d984e54139a6b76e5a139ed795358de993836ec63e3eb6660cb47881bad3e7608c18dee49d1054b57450746d1f89
6
+ metadata.gz: 072d20868a6b076d8dfa50f2c18d9f1c263523b871307cbaebd98df406f388bf6b7b6aff4b499a9f03168df2ead42cb45d20f4354559e38149e407d34f6a8d73
7
+ data.tar.gz: 52e32436fd5f535fabbc46bf0bde38df598a8ef7a0b2cc092ee9867943877854c00cfd8aa845d86090789b9a84eb0eeaeb0456460a4a8176c6a370f4f6747c03
@@ -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,211 @@ 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
20
12
  @headers = {
21
- 'content-type' => '',
22
13
  'user-agent' => RUBY_PLATFORM + ':ruby-' + RUBY_VERSION,
23
- 'x-sdk-version' => 'appwrite:ruby:2.4.1',
24
- 'X-Appwrite-Response-Format' => '0.11.0'
14
+ 'x-sdk-version' => 'appwrite:ruby:3.0.0',
15
+ 'X-Appwrite-Response-Format' => '0.12.0'
25
16
  }
26
- @endpoint = 'https://appwrite.io/v1';
17
+ @endpoint = 'https://HOSTNAME/v1'
27
18
  end
28
19
 
20
+ # Set Project
21
+ #
22
+ # Your project ID
23
+ #
24
+ # @param [String] value The value to set for the Project header
25
+ #
26
+ # @return [self]
29
27
  def set_project(value)
30
28
  add_header('x-appwrite-project', value)
31
29
 
32
- return self
30
+ self
33
31
  end
34
32
 
33
+ # Set Key
34
+ #
35
+ # Your secret API key
36
+ #
37
+ # @param [String] value The value to set for the Key header
38
+ #
39
+ # @return [self]
35
40
  def set_key(value)
36
41
  add_header('x-appwrite-key', value)
37
42
 
38
- return self
43
+ self
39
44
  end
40
45
 
46
+ # Set JWT
47
+ #
48
+ # Your secret JSON Web Token
49
+ #
50
+ # @param [String] value The value to set for the JWT header
51
+ #
52
+ # @return [self]
41
53
  def set_jwt(value)
42
54
  add_header('x-appwrite-jwt', value)
43
55
 
44
- return self
56
+ self
45
57
  end
46
58
 
59
+ # Set Locale
60
+ #
61
+ # @param [String] value The value to set for the Locale header
62
+ #
63
+ # @return [self]
47
64
  def set_locale(value)
48
65
  add_header('x-appwrite-locale', value)
49
66
 
50
- return self
67
+ self
51
68
  end
52
69
 
70
+ # Set endpoint.
71
+ #
72
+ # @param [String] endpoint The endpoint to set
73
+ #
74
+ # @return [self]
53
75
  def set_endpoint(endpoint)
54
76
  @endpoint = endpoint
55
77
 
56
- return self
78
+ self
57
79
  end
58
-
80
+
81
+ # Set self signed.
82
+ #
83
+ # @param [String] self_signed Whether to allow self signed certificates.
84
+ #
85
+ # @return [self]
86
+ def set_self_signed(self_signed = true)
87
+ @self_signed = self_signed
88
+
89
+ self
90
+ end
91
+
92
+
93
+ # Add Header
94
+ #
95
+ # @param [String] key The key for the header to add
96
+ # @param [String] value The value for the header to add
97
+ #
98
+ # @return [self]
59
99
  def add_header(key, value)
60
100
  @headers[key.downcase] = value
61
101
 
62
- return self
63
- 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)
102
+ self
68
103
  end
69
104
 
70
- protected
105
+ # Send the HTTP request.
106
+ #
107
+ # @param [String] method The HTTP method for the request
108
+ # @param [String] path The path for the request
109
+ # @param [Hash] headers The headers to send with the request
110
+ # @param [Hash] params The parameters to send with the request
111
+ # @param [Class] response_type The type of response to return
112
+ #
113
+ # @return [self]
114
+ def call(
115
+ method:,
116
+ path: '',
117
+ headers: {},
118
+ params: {},
119
+ response_type: nil
120
+ )
121
+ uri = URI.parse(@endpoint + path + ((method == "GET" && params.length) ? '?' + encode(params) : ''))
122
+
123
+ fetch(method, uri, headers, params, response_type)
124
+ end
71
125
 
72
126
  private
73
127
 
74
- def fetch(method, uri, headers, params, limit = 5)
128
+ def fetch(
129
+ method,
130
+ uri,
131
+ headers,
132
+ params,
133
+ response_type = nil,
134
+ limit = 5
135
+ )
75
136
  raise ArgumentError, 'Too Many HTTP Redirects' if limit == 0
76
137
 
77
- http = Net::HTTP.new(uri.host, uri.port)
78
- http.use_ssl = (uri.scheme == 'https')
138
+ @http = Net::HTTP.new(uri.host, uri.port) unless defined? @http
139
+ @http.use_ssl = !@self_signed
79
140
  payload = ''
80
141
 
81
142
  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]
143
+
144
+ @boundary = "----A30#3ad1"
145
+ if method != "GET"
146
+ case headers[:'content-type']
85
147
  when 'application/json'
86
148
  payload = params.to_json
87
149
  when 'multipart/form-data'
88
- payload = "--#{@BOUNDARY}\r\n" + encodeFormData(params)
89
- headers['content-type'] = "multipart/form-data; boundary=#{@BOUNDARY}"
150
+ payload = "--#{@boundary}\r\n" + encode_form_data(params)
151
+ headers[:'content-type'] = "multipart/form-data; boundary=#{@boundary}"
90
152
  else
91
153
  payload = encode(params)
92
154
  end
93
155
  end
94
156
 
95
157
  begin
96
- response = http.send_request(method.upcase, uri.request_uri, payload, headers)
158
+ response = @http.send_request(method, uri.request_uri, payload, headers)
97
159
  rescue => error
98
160
  raise Appwrite::Exception.new(error.message)
99
161
  end
100
162
 
101
163
  # Handle Redirects
102
- if (response.class == Net::HTTPRedirection || response.class == Net::HTTPMovedPermanently)
164
+ if response.class == Net::HTTPRedirection || response.class == Net::HTTPMovedPermanently
103
165
  location = response['location']
104
166
  uri = URI.parse(uri.scheme + "://" + uri.host + "" + location)
105
167
 
106
- return fetch(method, uri, headers, {}, limit - 1)
168
+ return fetch(method, uri, headers, {}, response_type, limit - 1)
107
169
  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)
170
+
171
+ if response.content_type == 'application/json'
172
+ begin
173
+ result = JSON.parse(response.body)
174
+ rescue JSON::ParserError => e
175
+ raise Appwrite::Exception.new(response.body, response.code, response)
176
+ end
177
+
178
+ if response.code.to_i >= 400
179
+ raise Appwrite::Exception.new(result['message'], result['status'], result)
180
+ end
181
+
182
+ unless response_type.respond_to?("from")
183
+ return result
184
+ end
185
+
186
+ return response_type.from(map: result)
113
187
  end
114
188
 
115
- if(response.code.to_i >= 400)
116
- raise Appwrite::Exception.new(res['message'], res['status'], res)
189
+ if response.code.to_i >= 400
190
+ raise Appwrite::Exception.new(response.body, response.code, response)
117
191
  end
118
192
 
119
- return res;
193
+ return response.body if response.body_permitted?
120
194
  end
121
195
 
122
- def encodeFormData(value, key=nil)
196
+ def encode_form_data(value, key=nil)
123
197
  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 ''
198
+ when Hash
199
+ value.map { |k,v| encode_form_data(v,k) }.join
200
+ when Array
201
+ value.map { |v| encode_form_data(v, "#{key}[]") }.join
202
+ when nil
203
+ ''
127
204
  else
128
205
  post_body = []
129
- if(value.instance_of? File)
206
+ if value.instance_of? File
130
207
  post_body << "Content-Disposition: form-data; name=\"#{key}\"; filename=\"#{value.name}\"\r\n"
131
- post_body << "Content-Type: #{value.mimeType}\r\n\r\n"
208
+ post_body << "Content-Type: #{value.mime_type}\r\n\r\n"
132
209
  post_body << value.content
133
- post_body << "\r\n--#{@BOUNDARY}--\r\n"
210
+ post_body << "\r\n--#{@boundary}--\r\n"
134
211
  else
135
212
  post_body << "Content-Disposition: form-data; name=\"#{key}\"\r\n\r\n"
136
213
  post_body << "#{value.to_s}"
137
- post_body << "\r\n--#{@BOUNDARY}\r\n"
214
+ post_body << "\r\n--#{@boundary}\r\n"
138
215
  end
139
216
  post_body.join
140
217
  end
@@ -154,4 +231,4 @@ module Appwrite
154
231
  root_key.nil? ? key : "#{root_key}[#{key.to_s}]"
155
232
  end
156
233
  end
157
- end
234
+ end
@@ -1,14 +1,12 @@
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
+
6
+ def initialize(message, code = 0, response = nil)
7
7
  super(message)
8
8
  @code = code
9
9
  @response = response
10
10
  end
11
- attr_reader :code
12
- attr_reader :response
13
11
  end
14
- end
12
+ end
data/lib/appwrite/file.rb CHANGED
@@ -2,22 +2,14 @@ require 'mime/types'
2
2
 
3
3
  module Appwrite
4
4
  class File
5
+ attr_reader :name
6
+ attr_reader :content
7
+ attr_reader :mime_type
8
+
5
9
  def initialize(path)
6
10
  @name = ::File.basename(path)
7
11
  @content = ::File.read(path)
8
- @mimeType = MIME::Types.type_for(path)
9
- end
10
-
11
- def name
12
- @name
13
- end
14
-
15
- def content
16
- @content
17
- end
18
-
19
- def mimeType
20
- @mimeType
12
+ @mime_type = MIME::Types.type_for(path)
21
13
  end
22
14
  end
23
15
  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
@@ -0,0 +1,62 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AttributeInteger
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
+ AttributeInteger.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