appwrite 4.1.0 → 7.0.0.pre.RC1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/appwrite/client.rb +32 -11
  3. data/lib/appwrite/id.rb +11 -0
  4. data/lib/appwrite/input_file.rb +33 -0
  5. data/lib/appwrite/models/account.rb +82 -0
  6. data/lib/appwrite/models/algo_argon2.rb +37 -0
  7. data/lib/appwrite/models/algo_bcrypt.rb +22 -0
  8. data/lib/appwrite/models/algo_md5.rb +22 -0
  9. data/lib/appwrite/models/algo_phpass.rb +22 -0
  10. data/lib/appwrite/models/algo_scrypt.rb +42 -0
  11. data/lib/appwrite/models/algo_scrypt_modified.rb +37 -0
  12. data/lib/appwrite/models/algo_sha.rb +22 -0
  13. data/lib/appwrite/models/attribute_datetime.rb +57 -0
  14. data/lib/appwrite/models/bucket.rb +25 -25
  15. data/lib/appwrite/models/collection.rb +25 -15
  16. data/lib/appwrite/models/database.rb +42 -0
  17. data/lib/appwrite/models/database_list.rb +32 -0
  18. data/lib/appwrite/models/deployment.rb +10 -5
  19. data/lib/appwrite/models/document.rb +15 -10
  20. data/lib/appwrite/models/execution.rb +20 -10
  21. data/lib/appwrite/models/file.rb +15 -15
  22. data/lib/appwrite/models/function.rb +12 -12
  23. data/lib/appwrite/models/index.rb +1 -1
  24. data/lib/appwrite/models/membership.rb +25 -10
  25. data/lib/appwrite/models/session.rb +5 -0
  26. data/lib/appwrite/models/team.rb +10 -5
  27. data/lib/appwrite/models/token.rb +5 -0
  28. data/lib/appwrite/models/user.rb +35 -0
  29. data/lib/appwrite/models/variable.rb +52 -0
  30. data/lib/appwrite/models/variable_list.rb +32 -0
  31. data/lib/appwrite/permission.rb +21 -0
  32. data/lib/appwrite/query.rb +43 -14
  33. data/lib/appwrite/role.rb +31 -0
  34. data/lib/appwrite/services/account.rb +274 -126
  35. data/lib/appwrite/services/avatars.rb +106 -59
  36. data/lib/appwrite/services/databases.rb +1425 -0
  37. data/lib/appwrite/services/functions.rb +381 -176
  38. data/lib/appwrite/services/health.rb +34 -34
  39. data/lib/appwrite/services/locale.rb +25 -7
  40. data/lib/appwrite/services/storage.rb +195 -193
  41. data/lib/appwrite/services/teams.rb +138 -128
  42. data/lib/appwrite/services/users.rb +637 -123
  43. data/lib/appwrite.rb +19 -2
  44. metadata +22 -6
  45. data/lib/appwrite/file.rb +0 -17
  46. data/lib/appwrite/services/database.rb +0 -1049
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9ccc9454e05eee3806e9bcb29e95ef8202b0fc617215e837e52a2cff52199bfd
4
- data.tar.gz: 739353c7c628f0711f3c466c3d35f6db829bec9362415a735cf9ac3b72273a41
3
+ metadata.gz: 01f7539c1b2b2cf555a208ea8d780fb9acac96bc82925a6f1f04b4531a9955c0
4
+ data.tar.gz: 46cd30c3ac91258db353b6f59f912bc291e86f52a69e2e328f01328c05ec0e6f
5
5
  SHA512:
6
- metadata.gz: 483f458ce6e1b4abdeaeb96e60fabeb4f778fe775e39a1999abf19725f461a2db190b8b2b31f15d32d838436ac8b0e58bf6f1ce4f183e4a019d4fab75f0e8773
7
- data.tar.gz: 91b5993ca7e9186e65150daf278751a510155d2d15a0de54169d9b6efdee376b93a99f512f75a649b32e04a389fe9ca8224e144c6905ccca4b11639930995478
6
+ metadata.gz: 16b84a186ee035ee618243fb8fd908c1985e6f2cf6c9a87ac0fd31904c8a30004e616d8568c0e367db6fd701f1542198dd1a1b7583cb400de9947a51889e559e
7
+ data.tar.gz: 0ec0f97ebe6aa21a9a0d4374a41432b820ba23b07d785c231a615b731775cc4e46f342f88c5897e9f99e09602a98a81772d0d84ea533c3aa251e3be8165d834c
@@ -12,8 +12,11 @@ module Appwrite
12
12
  @chunk_size = 5*1024*1024
13
13
  @headers = {
14
14
  'user-agent' => RUBY_PLATFORM + ':ruby-' + RUBY_VERSION,
15
- 'x-sdk-version' => 'appwrite:ruby:4.1.0',
16
- 'X-Appwrite-Response-Format' => '0.13.0'
15
+ 'x-sdk-name'=> 'Ruby',
16
+ 'x-sdk-platform'=> 'server',
17
+ 'x-sdk-language'=> 'ruby',
18
+ 'x-sdk-version'=> '7.0.0-RC1',
19
+ 'X-Appwrite-Response-Format' => '1.0.0-RC1'
17
20
  }
18
21
  @endpoint = 'https://HOSTNAME/v1'
19
22
  end
@@ -133,12 +136,20 @@ module Appwrite
133
136
  on_progress: nil,
134
137
  response_type: nil
135
138
  )
136
- file_path = params[param_name.to_sym]
137
- size = ::File.size(file_path)
139
+ input_file = params[param_name.to_sym]
140
+
141
+ case input_file.source_type
142
+ when 'path'
143
+ size = ::File.size(input_file.path)
144
+ when 'string'
145
+ size = input_file.data.bytesize
146
+ end
138
147
 
139
148
  if size < @chunk_size
140
- slice = ::File.read(file_path)
141
- params[param_name] = File.new(file_path, slice)
149
+ if input_file.source_type == 'path'
150
+ input_file.data = IO.read(input_file.path)
151
+ end
152
+ params[param_name.to_sym] = input_file
142
153
  return call(
143
154
  method: 'POST',
144
155
  path: path,
@@ -163,9 +174,19 @@ module Appwrite
163
174
  end
164
175
 
165
176
  while offset < size
166
- slice = IO.read(file_path, @chunk_size, offset)
177
+ case input_file.source_type
178
+ when 'path'
179
+ string = IO.read(input_file.path, @chunk_size, offset)
180
+ when 'string'
181
+ string = input_file.data.byteslice(offset, [@chunk_size, size - offset].min)
182
+ end
183
+
184
+ params[param_name.to_sym] = InputFile::from_string(
185
+ string,
186
+ filename: input_file.filename,
187
+ mime_type: input_file.mime_type
188
+ )
167
189
 
168
- params[param_name] = File.new(file_path, slice)
169
190
  headers['content-range'] = "bytes #{offset}-#{[offset + @chunk_size - 1, size].min}/#{size}"
170
191
 
171
192
  result = call(
@@ -279,10 +300,10 @@ module Appwrite
279
300
  ''
280
301
  else
281
302
  post_body = []
282
- if value.instance_of? File
283
- post_body << "Content-Disposition: form-data; name=\"#{key}\"; filename=\"#{value.name}\"\r\n"
303
+ if value.instance_of? InputFile
304
+ post_body << "Content-Disposition: form-data; name=\"#{key}\"; filename=\"#{value.filename}\"\r\n"
284
305
  post_body << "Content-Type: #{value.mime_type}\r\n\r\n"
285
- post_body << value.content
306
+ post_body << value.data
286
307
  post_body << "\r\n--#{@boundary}--\r\n"
287
308
  else
288
309
  post_body << "Content-Disposition: form-data; name=\"#{key}\"\r\n\r\n"
@@ -0,0 +1,11 @@
1
+ module Appwrite
2
+ class ID
3
+ def self.custom(id)
4
+ id
5
+ end
6
+
7
+ def self.unique
8
+ 'unique()'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,33 @@
1
+ require 'mime/types'
2
+
3
+ module Appwrite
4
+ class InputFile
5
+ attr_accessor :path
6
+ attr_accessor :filename
7
+ attr_accessor :mime_type
8
+ attr_accessor :source_type
9
+ attr_accessor :data
10
+
11
+ def self.from_path(path)
12
+ instance = InputFile.new
13
+ instance.path = path
14
+ instance.filename = ::File.basename(path)
15
+ instance.mime_type = MIME::Types.type_for(path).first.content_type
16
+ instance.source_type = 'path'
17
+ instance
18
+ end
19
+
20
+ def self.from_string(string, filename: nil, mime_type: nil)
21
+ instance = InputFile.new
22
+ instance.data = string
23
+ instance.filename = filename
24
+ instance.mime_type = mime_type
25
+ instance.source_type = 'string'
26
+ instance
27
+ end
28
+
29
+ def self.from_bytes(bytes, filename: nil, mime_type: nil)
30
+ self.from_string(bytes.pack('C*'), filename: filename, mime_type: mime_type)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,82 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class Account
6
+ attr_reader :id
7
+ attr_reader :created_at
8
+ attr_reader :updated_at
9
+ attr_reader :name
10
+ attr_reader :registration
11
+ attr_reader :status
12
+ attr_reader :password_update
13
+ attr_reader :email
14
+ attr_reader :phone
15
+ attr_reader :email_verification
16
+ attr_reader :phone_verification
17
+ attr_reader :prefs
18
+
19
+ def initialize(
20
+ id:,
21
+ created_at:,
22
+ updated_at:,
23
+ name:,
24
+ registration:,
25
+ status:,
26
+ password_update:,
27
+ email:,
28
+ phone:,
29
+ email_verification:,
30
+ phone_verification:,
31
+ prefs:
32
+ )
33
+ @id = id
34
+ @created_at = created_at
35
+ @updated_at = updated_at
36
+ @name = name
37
+ @registration = registration
38
+ @status = status
39
+ @password_update = password_update
40
+ @email = email
41
+ @phone = phone
42
+ @email_verification = email_verification
43
+ @phone_verification = phone_verification
44
+ @prefs = prefs
45
+ end
46
+
47
+ def self.from(map:)
48
+ Account.new(
49
+ id: map["$id"],
50
+ created_at: map["$createdAt"],
51
+ updated_at: map["$updatedAt"],
52
+ name: map["name"],
53
+ registration: map["registration"],
54
+ status: map["status"],
55
+ password_update: map["passwordUpdate"],
56
+ email: map["email"],
57
+ phone: map["phone"],
58
+ email_verification: map["emailVerification"],
59
+ phone_verification: map["phoneVerification"],
60
+ prefs: Preferences.from(map: map["prefs"])
61
+ )
62
+ end
63
+
64
+ def to_map
65
+ {
66
+ "$id": @id,
67
+ "$createdAt": @created_at,
68
+ "$updatedAt": @updated_at,
69
+ "name": @name,
70
+ "registration": @registration,
71
+ "status": @status,
72
+ "passwordUpdate": @password_update,
73
+ "email": @email,
74
+ "phone": @phone,
75
+ "emailVerification": @email_verification,
76
+ "phoneVerification": @phone_verification,
77
+ "prefs": @prefs.to_map
78
+ }
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,37 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AlgoArgon2
6
+ attr_reader :memory_cost
7
+ attr_reader :time_cost
8
+ attr_reader :threads
9
+
10
+ def initialize(
11
+ memory_cost:,
12
+ time_cost:,
13
+ threads:
14
+ )
15
+ @memory_cost = memory_cost
16
+ @time_cost = time_cost
17
+ @threads = threads
18
+ end
19
+
20
+ def self.from(map:)
21
+ AlgoArgon2.new(
22
+ memory_cost: map["memoryCost"],
23
+ time_cost: map["timeCost"],
24
+ threads: map["threads"]
25
+ )
26
+ end
27
+
28
+ def to_map
29
+ {
30
+ "memoryCost": @memory_cost,
31
+ "timeCost": @time_cost,
32
+ "threads": @threads
33
+ }
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,22 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AlgoBcrypt
6
+
7
+ def initialize(
8
+ )
9
+ end
10
+
11
+ def self.from(map:)
12
+ AlgoBcrypt.new(
13
+ )
14
+ end
15
+
16
+ def to_map
17
+ {
18
+ }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AlgoMd5
6
+
7
+ def initialize(
8
+ )
9
+ end
10
+
11
+ def self.from(map:)
12
+ AlgoMd5.new(
13
+ )
14
+ end
15
+
16
+ def to_map
17
+ {
18
+ }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AlgoPhpass
6
+
7
+ def initialize(
8
+ )
9
+ end
10
+
11
+ def self.from(map:)
12
+ AlgoPhpass.new(
13
+ )
14
+ end
15
+
16
+ def to_map
17
+ {
18
+ }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,42 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AlgoScrypt
6
+ attr_reader :cost_cpu
7
+ attr_reader :cost_memory
8
+ attr_reader :cost_parallel
9
+ attr_reader :length
10
+
11
+ def initialize(
12
+ cost_cpu:,
13
+ cost_memory:,
14
+ cost_parallel:,
15
+ length:
16
+ )
17
+ @cost_cpu = cost_cpu
18
+ @cost_memory = cost_memory
19
+ @cost_parallel = cost_parallel
20
+ @length = length
21
+ end
22
+
23
+ def self.from(map:)
24
+ AlgoScrypt.new(
25
+ cost_cpu: map["costCpu"],
26
+ cost_memory: map["costMemory"],
27
+ cost_parallel: map["costParallel"],
28
+ length: map["length"]
29
+ )
30
+ end
31
+
32
+ def to_map
33
+ {
34
+ "costCpu": @cost_cpu,
35
+ "costMemory": @cost_memory,
36
+ "costParallel": @cost_parallel,
37
+ "length": @length
38
+ }
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,37 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AlgoScryptModified
6
+ attr_reader :salt
7
+ attr_reader :salt_separator
8
+ attr_reader :signer_key
9
+
10
+ def initialize(
11
+ salt:,
12
+ salt_separator:,
13
+ signer_key:
14
+ )
15
+ @salt = salt
16
+ @salt_separator = salt_separator
17
+ @signer_key = signer_key
18
+ end
19
+
20
+ def self.from(map:)
21
+ AlgoScryptModified.new(
22
+ salt: map["salt"],
23
+ salt_separator: map["saltSeparator"],
24
+ signer_key: map["signerKey"]
25
+ )
26
+ end
27
+
28
+ def to_map
29
+ {
30
+ "salt": @salt,
31
+ "saltSeparator": @salt_separator,
32
+ "signerKey": @signer_key
33
+ }
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,22 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AlgoSha
6
+
7
+ def initialize(
8
+ )
9
+ end
10
+
11
+ def self.from(map:)
12
+ AlgoSha.new(
13
+ )
14
+ end
15
+
16
+ def to_map
17
+ {
18
+ }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,57 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AttributeDatetime
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
+ AttributeDatetime.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
@@ -4,42 +4,42 @@ module Appwrite
4
4
  module Models
5
5
  class Bucket
6
6
  attr_reader :id
7
- attr_reader :read
8
- attr_reader :write
9
- attr_reader :permission
10
- attr_reader :date_created
11
- attr_reader :date_updated
7
+ attr_reader :created_at
8
+ attr_reader :updated_at
9
+ attr_reader :permissions
10
+ attr_reader :file_security
12
11
  attr_reader :name
13
12
  attr_reader :enabled
14
13
  attr_reader :maximum_file_size
15
14
  attr_reader :allowed_file_extensions
15
+ attr_reader :compression
16
16
  attr_reader :encryption
17
17
  attr_reader :antivirus
18
18
 
19
19
  def initialize(
20
20
  id:,
21
- read:,
22
- write:,
23
- permission:,
24
- date_created:,
25
- date_updated:,
21
+ created_at:,
22
+ updated_at:,
23
+ permissions:,
24
+ file_security:,
26
25
  name:,
27
26
  enabled:,
28
27
  maximum_file_size:,
29
28
  allowed_file_extensions:,
29
+ compression:,
30
30
  encryption:,
31
31
  antivirus:
32
32
  )
33
33
  @id = id
34
- @read = read
35
- @write = write
36
- @permission = permission
37
- @date_created = date_created
38
- @date_updated = date_updated
34
+ @created_at = created_at
35
+ @updated_at = updated_at
36
+ @permissions = permissions
37
+ @file_security = file_security
39
38
  @name = name
40
39
  @enabled = enabled
41
40
  @maximum_file_size = maximum_file_size
42
41
  @allowed_file_extensions = allowed_file_extensions
42
+ @compression = compression
43
43
  @encryption = encryption
44
44
  @antivirus = antivirus
45
45
  end
@@ -47,15 +47,15 @@ module Appwrite
47
47
  def self.from(map:)
48
48
  Bucket.new(
49
49
  id: map["$id"],
50
- read: map["$read"],
51
- write: map["$write"],
52
- permission: map["permission"],
53
- date_created: map["dateCreated"],
54
- date_updated: map["dateUpdated"],
50
+ created_at: map["$createdAt"],
51
+ updated_at: map["$updatedAt"],
52
+ permissions: map["$permissions"],
53
+ file_security: map["fileSecurity"],
55
54
  name: map["name"],
56
55
  enabled: map["enabled"],
57
56
  maximum_file_size: map["maximumFileSize"],
58
57
  allowed_file_extensions: map["allowedFileExtensions"],
58
+ compression: map["compression"],
59
59
  encryption: map["encryption"],
60
60
  antivirus: map["antivirus"]
61
61
  )
@@ -64,15 +64,15 @@ module Appwrite
64
64
  def to_map
65
65
  {
66
66
  "$id": @id,
67
- "$read": @read,
68
- "$write": @write,
69
- "permission": @permission,
70
- "dateCreated": @date_created,
71
- "dateUpdated": @date_updated,
67
+ "$createdAt": @created_at,
68
+ "$updatedAt": @updated_at,
69
+ "$permissions": @permissions,
70
+ "fileSecurity": @file_security,
72
71
  "name": @name,
73
72
  "enabled": @enabled,
74
73
  "maximumFileSize": @maximum_file_size,
75
74
  "allowedFileExtensions": @allowed_file_extensions,
75
+ "compression": @compression,
76
76
  "encryption": @encryption,
77
77
  "antivirus": @antivirus
78
78
  }
@@ -4,30 +4,36 @@ module Appwrite
4
4
  module Models
5
5
  class Collection
6
6
  attr_reader :id
7
- attr_reader :read
8
- attr_reader :write
7
+ attr_reader :created_at
8
+ attr_reader :updated_at
9
+ attr_reader :permissions
10
+ attr_reader :database_id
9
11
  attr_reader :name
10
12
  attr_reader :enabled
11
- attr_reader :permission
13
+ attr_reader :document_security
12
14
  attr_reader :attributes
13
15
  attr_reader :indexes
14
16
 
15
17
  def initialize(
16
18
  id:,
17
- read:,
18
- write:,
19
+ created_at:,
20
+ updated_at:,
21
+ permissions:,
22
+ database_id:,
19
23
  name:,
20
24
  enabled:,
21
- permission:,
25
+ document_security:,
22
26
  attributes:,
23
27
  indexes:
24
28
  )
25
29
  @id = id
26
- @read = read
27
- @write = write
30
+ @created_at = created_at
31
+ @updated_at = updated_at
32
+ @permissions = permissions
33
+ @database_id = database_id
28
34
  @name = name
29
35
  @enabled = enabled
30
- @permission = permission
36
+ @document_security = document_security
31
37
  @attributes = attributes
32
38
  @indexes = indexes
33
39
  end
@@ -35,11 +41,13 @@ module Appwrite
35
41
  def self.from(map:)
36
42
  Collection.new(
37
43
  id: map["$id"],
38
- read: map["$read"],
39
- write: map["$write"],
44
+ created_at: map["$createdAt"],
45
+ updated_at: map["$updatedAt"],
46
+ permissions: map["$permissions"],
47
+ database_id: map["databaseId"],
40
48
  name: map["name"],
41
49
  enabled: map["enabled"],
42
- permission: map["permission"],
50
+ document_security: map["documentSecurity"],
43
51
  attributes: map["attributes"],
44
52
  indexes: map["indexes"].map { |it| Index.from(map: it) }
45
53
  )
@@ -48,11 +56,13 @@ module Appwrite
48
56
  def to_map
49
57
  {
50
58
  "$id": @id,
51
- "$read": @read,
52
- "$write": @write,
59
+ "$createdAt": @created_at,
60
+ "$updatedAt": @updated_at,
61
+ "$permissions": @permissions,
62
+ "databaseId": @database_id,
53
63
  "name": @name,
54
64
  "enabled": @enabled,
55
- "permission": @permission,
65
+ "documentSecurity": @document_security,
56
66
  "attributes": @attributes,
57
67
  "indexes": @indexes.map { |it| it.to_map }
58
68
  }