appwrite 21.1.0 → 23.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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/lib/appwrite/client.rb +48 -2
  3. data/lib/appwrite/enums/backup_services.rb +3 -0
  4. data/lib/appwrite/enums/build_runtime.rb +2 -0
  5. data/lib/appwrite/enums/database_type.rb +2 -0
  6. data/lib/appwrite/enums/databases_index_type.rb +10 -0
  7. data/lib/appwrite/enums/o_auth_provider.rb +1 -0
  8. data/lib/appwrite/enums/platform_type.rb +11 -0
  9. data/lib/appwrite/enums/protocol_id.rb +9 -0
  10. data/lib/appwrite/enums/runtime.rb +2 -0
  11. data/lib/appwrite/enums/scopes.rb +8 -0
  12. data/lib/appwrite/enums/service_id.rb +23 -0
  13. data/lib/appwrite/enums/{index_type.rb → tables_db_index_type.rb} +1 -1
  14. data/lib/appwrite/enums/template_reference_type.rb +1 -1
  15. data/lib/appwrite/models/auth_provider.rb +47 -0
  16. data/lib/appwrite/models/billing_limits.rb +62 -0
  17. data/lib/appwrite/models/block.rb +47 -0
  18. data/lib/appwrite/models/database.rb +2 -0
  19. data/lib/appwrite/models/dev_key.rb +62 -0
  20. data/lib/appwrite/models/function.rb +15 -5
  21. data/lib/appwrite/models/key.rb +67 -0
  22. data/lib/appwrite/models/key_list.rb +32 -0
  23. data/lib/appwrite/models/log.rb +5 -0
  24. data/lib/appwrite/models/mock_number.rb +32 -0
  25. data/lib/appwrite/models/platform_android.rb +71 -0
  26. data/lib/appwrite/models/platform_apple.rb +71 -0
  27. data/lib/appwrite/models/platform_linux.rb +71 -0
  28. data/lib/appwrite/models/platform_list.rb +32 -0
  29. data/lib/appwrite/models/platform_web.rb +71 -0
  30. data/lib/appwrite/models/platform_windows.rb +71 -0
  31. data/lib/appwrite/models/project.rb +412 -0
  32. data/lib/appwrite/models/site.rb +20 -5
  33. data/lib/appwrite/models/user.rb +13 -3
  34. data/lib/appwrite/models/webhook.rb +87 -0
  35. data/lib/appwrite/models/webhook_list.rb +32 -0
  36. data/lib/appwrite/service.rb +1 -1
  37. data/lib/appwrite/services/account.rb +47 -2
  38. data/lib/appwrite/services/activities.rb +3 -1
  39. data/lib/appwrite/services/avatars.rb +9 -1
  40. data/lib/appwrite/services/backups.rb +13 -1
  41. data/lib/appwrite/services/databases.rb +133 -7
  42. data/lib/appwrite/services/functions.rb +41 -7
  43. data/lib/appwrite/services/graphql.rb +5 -3
  44. data/lib/appwrite/services/health.rb +22 -117
  45. data/lib/appwrite/services/locale.rb +9 -1
  46. data/lib/appwrite/services/messaging.rb +49 -1
  47. data/lib/appwrite/services/project.rb +1011 -0
  48. data/lib/appwrite/services/sites.rb +44 -7
  49. data/lib/appwrite/services/storage.rb +14 -1
  50. data/lib/appwrite/services/tables_db.rb +133 -7
  51. data/lib/appwrite/services/teams.rb +14 -1
  52. data/lib/appwrite/services/tokens.rb +6 -1
  53. data/lib/appwrite/services/users.rb +85 -2
  54. data/lib/appwrite/services/webhooks.rb +249 -0
  55. data/lib/appwrite.rb +23 -1
  56. metadata +25 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f7d65feccf5827c513e9c2975c3192a9c08538beb3369c13f4cc8687a524df35
4
- data.tar.gz: 9067bd506e5b7ae9e4050c327a7c669c842b29a46b063a53a434f11923aa9bf3
3
+ metadata.gz: 71453fa364510c42ae244dc43108518fd45bcd5eba4409148f181d544f61907e
4
+ data.tar.gz: '018040e5e8aab6d7ebc649f0754ce43a32cf1a64bebb70c2b5b4c93781c70add'
5
5
  SHA512:
6
- metadata.gz: 3bb093f2cf13c12960eae3682a0f9c7293a30217636f1ee9baa9b6d5a67739b18df5111a24b9bdfac7fcaa6e8ec1281e67e90e2c910f1a94a581673f42ff7322
7
- data.tar.gz: a466eed8fc575662941dcaa7535514ea78111b026bd65bce6d1772a1766bee11963f4cf396b2330e7fb95a11d40549118e236790ab69086e37f28569cdd061e2
6
+ metadata.gz: bbd44f5cf20c90fe3f628a2badb9ed1766960d3605569475ca36b5bcb32931fbbd8a804e8036fbef454c7d73ff7b52c1c301111777eff84d7780661dbbd5a6c7
7
+ data.tar.gz: 68008c910bd8e7350dc6cc7b33c692b25ccdc4d8f45df13453ded2456c2b7cd62100838c157160c25d836a6fa5496cf75cb89bb2f5340e78dc5f14b244a11bee
@@ -15,8 +15,8 @@ module Appwrite
15
15
  'x-sdk-name'=> 'Ruby',
16
16
  'x-sdk-platform'=> 'server',
17
17
  'x-sdk-language'=> 'ruby',
18
- 'x-sdk-version'=> '21.1.0',
19
- 'X-Appwrite-Response-Format' => '1.8.0'
18
+ 'x-sdk-version'=> '23.0.0',
19
+ 'X-Appwrite-Response-Format' => '1.9.1'
20
20
  }
21
21
  @endpoint = 'https://cloud.appwrite.io/v1'
22
22
  end
@@ -97,6 +97,45 @@ module Appwrite
97
97
  self
98
98
  end
99
99
 
100
+ # Set ImpersonateUserId
101
+ #
102
+ # Impersonate a user by ID on an already user-authenticated request. Requires the current request to be authenticated as a user with impersonator capability; X-Appwrite-Key alone is not sufficient. Impersonator users are intentionally granted users.read so they can discover a target before impersonation begins. Internal audit logs still attribute actions to the original impersonator and record the impersonated target only in internal audit payload data.
103
+ #
104
+ # @param [String] value The value to set for the ImpersonateUserId header
105
+ #
106
+ # @return [self]
107
+ def set_impersonate_user_id(value)
108
+ add_header('x-appwrite-impersonate-user-id', value)
109
+
110
+ self
111
+ end
112
+
113
+ # Set ImpersonateUserEmail
114
+ #
115
+ # Impersonate a user by email on an already user-authenticated request. Requires the current request to be authenticated as a user with impersonator capability; X-Appwrite-Key alone is not sufficient. Impersonator users are intentionally granted users.read so they can discover a target before impersonation begins. Internal audit logs still attribute actions to the original impersonator and record the impersonated target only in internal audit payload data.
116
+ #
117
+ # @param [String] value The value to set for the ImpersonateUserEmail header
118
+ #
119
+ # @return [self]
120
+ def set_impersonate_user_email(value)
121
+ add_header('x-appwrite-impersonate-user-email', value)
122
+
123
+ self
124
+ end
125
+
126
+ # Set ImpersonateUserPhone
127
+ #
128
+ # Impersonate a user by phone on an already user-authenticated request. Requires the current request to be authenticated as a user with impersonator capability; X-Appwrite-Key alone is not sufficient. Impersonator users are intentionally granted users.read so they can discover a target before impersonation begins. Internal audit logs still attribute actions to the original impersonator and record the impersonated target only in internal audit payload data.
129
+ #
130
+ # @param [String] value The value to set for the ImpersonateUserPhone header
131
+ #
132
+ # @return [self]
133
+ def set_impersonate_user_phone(value)
134
+ add_header('x-appwrite-impersonate-user-phone', value)
135
+
136
+ self
137
+ end
138
+
100
139
  # Set endpoint.
101
140
  #
102
141
  # @param [String] endpoint The endpoint to set
@@ -135,6 +174,13 @@ module Appwrite
135
174
  self
136
175
  end
137
176
 
177
+ # Get request headers
178
+ #
179
+ # @return [Hash]
180
+ def get_headers
181
+ @headers.dup
182
+ end
183
+
138
184
  # Send the HTTP request.
139
185
  #
140
186
  # @param [String] method The HTTP method for the request
@@ -2,6 +2,9 @@ module Appwrite
2
2
  module Enums
3
3
  module BackupServices
4
4
  DATABASES = 'databases'
5
+ TABLESDB = 'tablesdb'
6
+ DOCUMENTSDB = 'documentsdb'
7
+ VECTORSDB = 'vectorsdb'
5
8
  FUNCTIONS = 'functions'
6
9
  STORAGE = 'storage'
7
10
  end
@@ -49,6 +49,7 @@ module Appwrite
49
49
  DART_3_8 = 'dart-3.8'
50
50
  DART_3_9 = 'dart-3.9'
51
51
  DART_3_10 = 'dart-3.10'
52
+ DART_3_11 = 'dart-3.11'
52
53
  DOTNET_6_0 = 'dotnet-6.0'
53
54
  DOTNET_7_0 = 'dotnet-7.0'
54
55
  DOTNET_8_0 = 'dotnet-8.0'
@@ -87,6 +88,7 @@ module Appwrite
87
88
  FLUTTER_3_32 = 'flutter-3.32'
88
89
  FLUTTER_3_35 = 'flutter-3.35'
89
90
  FLUTTER_3_38 = 'flutter-3.38'
91
+ FLUTTER_3_41 = 'flutter-3.41'
90
92
  end
91
93
  end
92
94
  end
@@ -3,6 +3,8 @@ module Appwrite
3
3
  module DatabaseType
4
4
  LEGACY = 'legacy'
5
5
  TABLESDB = 'tablesdb'
6
+ DOCUMENTSDB = 'documentsdb'
7
+ VECTORSDB = 'vectorsdb'
6
8
  end
7
9
  end
8
10
  end
@@ -0,0 +1,10 @@
1
+ module Appwrite
2
+ module Enums
3
+ module DatabasesIndexType
4
+ KEY = 'key'
5
+ FULLTEXT = 'fulltext'
6
+ UNIQUE = 'unique'
7
+ SPATIAL = 'spatial'
8
+ end
9
+ end
10
+ end
@@ -35,6 +35,7 @@ module Appwrite
35
35
  TRADESHIFTBOX = 'tradeshiftBox'
36
36
  TWITCH = 'twitch'
37
37
  WORDPRESS = 'wordpress'
38
+ X = 'x'
38
39
  YAHOO = 'yahoo'
39
40
  YAMMER = 'yammer'
40
41
  YANDEX = 'yandex'
@@ -0,0 +1,11 @@
1
+ module Appwrite
2
+ module Enums
3
+ module PlatformType
4
+ WINDOWS = 'windows'
5
+ APPLE = 'apple'
6
+ ANDROID = 'android'
7
+ LINUX = 'linux'
8
+ WEB = 'web'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module Appwrite
2
+ module Enums
3
+ module ProtocolId
4
+ REST = 'rest'
5
+ GRAPHQL = 'graphql'
6
+ WEBSOCKET = 'websocket'
7
+ end
8
+ end
9
+ end
@@ -49,6 +49,7 @@ module Appwrite
49
49
  DART_3_8 = 'dart-3.8'
50
50
  DART_3_9 = 'dart-3.9'
51
51
  DART_3_10 = 'dart-3.10'
52
+ DART_3_11 = 'dart-3.11'
52
53
  DOTNET_6_0 = 'dotnet-6.0'
53
54
  DOTNET_7_0 = 'dotnet-7.0'
54
55
  DOTNET_8_0 = 'dotnet-8.0'
@@ -87,6 +88,7 @@ module Appwrite
87
88
  FLUTTER_3_32 = 'flutter-3.32'
88
89
  FLUTTER_3_35 = 'flutter-3.35'
89
90
  FLUTTER_3_38 = 'flutter-3.38'
91
+ FLUTTER_3_41 = 'flutter-3.41'
90
92
  end
91
93
  end
92
94
  end
@@ -58,6 +58,14 @@ module Appwrite
58
58
  ASSISTANT_READ = 'assistant.read'
59
59
  TOKENS_READ = 'tokens.read'
60
60
  TOKENS_WRITE = 'tokens.write'
61
+ WEBHOOKS_READ = 'webhooks.read'
62
+ WEBHOOKS_WRITE = 'webhooks.write'
63
+ PROJECT_READ = 'project.read'
64
+ PROJECT_WRITE = 'project.write'
65
+ KEYS_READ = 'keys.read'
66
+ KEYS_WRITE = 'keys.write'
67
+ PLATFORMS_READ = 'platforms.read'
68
+ PLATFORMS_WRITE = 'platforms.write'
61
69
  POLICIES_WRITE = 'policies.write'
62
70
  POLICIES_READ = 'policies.read'
63
71
  ARCHIVES_READ = 'archives.read'
@@ -0,0 +1,23 @@
1
+ module Appwrite
2
+ module Enums
3
+ module ServiceId
4
+ ACCOUNT = 'account'
5
+ AVATARS = 'avatars'
6
+ DATABASES = 'databases'
7
+ TABLESDB = 'tablesdb'
8
+ LOCALE = 'locale'
9
+ HEALTH = 'health'
10
+ PROJECT = 'project'
11
+ STORAGE = 'storage'
12
+ TEAMS = 'teams'
13
+ USERS = 'users'
14
+ VCS = 'vcs'
15
+ SITES = 'sites'
16
+ FUNCTIONS = 'functions'
17
+ PROXY = 'proxy'
18
+ GRAPHQL = 'graphql'
19
+ MIGRATIONS = 'migrations'
20
+ MESSAGING = 'messaging'
21
+ end
22
+ end
23
+ end
@@ -1,6 +1,6 @@
1
1
  module Appwrite
2
2
  module Enums
3
- module IndexType
3
+ module TablesDBIndexType
4
4
  KEY = 'key'
5
5
  FULLTEXT = 'fulltext'
6
6
  UNIQUE = 'unique'
@@ -1,8 +1,8 @@
1
1
  module Appwrite
2
2
  module Enums
3
3
  module TemplateReferenceType
4
- BRANCH = 'branch'
5
4
  COMMIT = 'commit'
5
+ BRANCH = 'branch'
6
6
  TAG = 'tag'
7
7
  end
8
8
  end
@@ -0,0 +1,47 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class AuthProvider
6
+ attr_reader :key
7
+ attr_reader :name
8
+ attr_reader :app_id
9
+ attr_reader :secret
10
+ attr_reader :enabled
11
+
12
+ def initialize(
13
+ key:,
14
+ name:,
15
+ app_id:,
16
+ secret:,
17
+ enabled:
18
+ )
19
+ @key = key
20
+ @name = name
21
+ @app_id = app_id
22
+ @secret = secret
23
+ @enabled = enabled
24
+ end
25
+
26
+ def self.from(map:)
27
+ AuthProvider.new(
28
+ key: map["key"],
29
+ name: map["name"],
30
+ app_id: map["appId"],
31
+ secret: map["secret"],
32
+ enabled: map["enabled"]
33
+ )
34
+ end
35
+
36
+ def to_map
37
+ {
38
+ "key": @key,
39
+ "name": @name,
40
+ "appId": @app_id,
41
+ "secret": @secret,
42
+ "enabled": @enabled
43
+ }
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,62 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class BillingLimits
6
+ attr_reader :bandwidth
7
+ attr_reader :storage
8
+ attr_reader :users
9
+ attr_reader :executions
10
+ attr_reader :gb_hours
11
+ attr_reader :image_transformations
12
+ attr_reader :auth_phone
13
+ attr_reader :budget_limit
14
+
15
+ def initialize(
16
+ bandwidth:,
17
+ storage:,
18
+ users:,
19
+ executions:,
20
+ gb_hours:,
21
+ image_transformations:,
22
+ auth_phone:,
23
+ budget_limit:
24
+ )
25
+ @bandwidth = bandwidth
26
+ @storage = storage
27
+ @users = users
28
+ @executions = executions
29
+ @gb_hours = gb_hours
30
+ @image_transformations = image_transformations
31
+ @auth_phone = auth_phone
32
+ @budget_limit = budget_limit
33
+ end
34
+
35
+ def self.from(map:)
36
+ BillingLimits.new(
37
+ bandwidth: map["bandwidth"],
38
+ storage: map["storage"],
39
+ users: map["users"],
40
+ executions: map["executions"],
41
+ gb_hours: map["GBHours"],
42
+ image_transformations: map["imageTransformations"],
43
+ auth_phone: map["authPhone"],
44
+ budget_limit: map["budgetLimit"]
45
+ )
46
+ end
47
+
48
+ def to_map
49
+ {
50
+ "bandwidth": @bandwidth,
51
+ "storage": @storage,
52
+ "users": @users,
53
+ "executions": @executions,
54
+ "GBHours": @gb_hours,
55
+ "imageTransformations": @image_transformations,
56
+ "authPhone": @auth_phone,
57
+ "budgetLimit": @budget_limit
58
+ }
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,47 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class Block
6
+ attr_reader :created_at
7
+ attr_reader :resource_type
8
+ attr_reader :resource_id
9
+ attr_reader :reason
10
+ attr_reader :expired_at
11
+
12
+ def initialize(
13
+ created_at:,
14
+ resource_type:,
15
+ resource_id:,
16
+ reason: ,
17
+ expired_at:
18
+ )
19
+ @created_at = created_at
20
+ @resource_type = resource_type
21
+ @resource_id = resource_id
22
+ @reason = reason
23
+ @expired_at = expired_at
24
+ end
25
+
26
+ def self.from(map:)
27
+ Block.new(
28
+ created_at: map["$createdAt"],
29
+ resource_type: map["resourceType"],
30
+ resource_id: map["resourceId"],
31
+ reason: map["reason"],
32
+ expired_at: map["expiredAt"]
33
+ )
34
+ end
35
+
36
+ def to_map
37
+ {
38
+ "$createdAt": @created_at,
39
+ "resourceType": @resource_type,
40
+ "resourceId": @resource_id,
41
+ "reason": @reason,
42
+ "expiredAt": @expired_at
43
+ }
44
+ end
45
+ end
46
+ end
47
+ end
@@ -64,6 +64,8 @@ module Appwrite
64
64
  valid_type = [
65
65
  Appwrite::Enums::DatabaseType::LEGACY,
66
66
  Appwrite::Enums::DatabaseType::TABLESDB,
67
+ Appwrite::Enums::DatabaseType::DOCUMENTSDB,
68
+ Appwrite::Enums::DatabaseType::VECTORSDB,
67
69
  ]
68
70
 
69
71
  unless valid_type.include?(type)
@@ -0,0 +1,62 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class DevKey
6
+ attr_reader :id
7
+ attr_reader :created_at
8
+ attr_reader :updated_at
9
+ attr_reader :name
10
+ attr_reader :expire
11
+ attr_reader :secret
12
+ attr_reader :accessed_at
13
+ attr_reader :sdks
14
+
15
+ def initialize(
16
+ id:,
17
+ created_at:,
18
+ updated_at:,
19
+ name:,
20
+ expire:,
21
+ secret:,
22
+ accessed_at:,
23
+ sdks:
24
+ )
25
+ @id = id
26
+ @created_at = created_at
27
+ @updated_at = updated_at
28
+ @name = name
29
+ @expire = expire
30
+ @secret = secret
31
+ @accessed_at = accessed_at
32
+ @sdks = sdks
33
+ end
34
+
35
+ def self.from(map:)
36
+ DevKey.new(
37
+ id: map["$id"],
38
+ created_at: map["$createdAt"],
39
+ updated_at: map["$updatedAt"],
40
+ name: map["name"],
41
+ expire: map["expire"],
42
+ secret: map["secret"],
43
+ accessed_at: map["accessedAt"],
44
+ sdks: map["sdks"]
45
+ )
46
+ end
47
+
48
+ def to_map
49
+ {
50
+ "$id": @id,
51
+ "$createdAt": @created_at,
52
+ "$updatedAt": @updated_at,
53
+ "name": @name,
54
+ "expire": @expire,
55
+ "secret": @secret,
56
+ "accessedAt": @accessed_at,
57
+ "sdks": @sdks
58
+ }
59
+ end
60
+ end
61
+ end
62
+ end
@@ -12,6 +12,7 @@ module Appwrite
12
12
  attr_reader :live
13
13
  attr_reader :logging
14
14
  attr_reader :runtime
15
+ attr_reader :deployment_retention
15
16
  attr_reader :deployment_id
16
17
  attr_reader :deployment_created_at
17
18
  attr_reader :latest_deployment_id
@@ -30,7 +31,8 @@ module Appwrite
30
31
  attr_reader :provider_branch
31
32
  attr_reader :provider_root_directory
32
33
  attr_reader :provider_silent_mode
33
- attr_reader :specification
34
+ attr_reader :build_specification
35
+ attr_reader :runtime_specification
34
36
 
35
37
  def initialize(
36
38
  id:,
@@ -42,6 +44,7 @@ module Appwrite
42
44
  live:,
43
45
  logging:,
44
46
  runtime:,
47
+ deployment_retention:,
45
48
  deployment_id:,
46
49
  deployment_created_at:,
47
50
  latest_deployment_id:,
@@ -60,7 +63,8 @@ module Appwrite
60
63
  provider_branch:,
61
64
  provider_root_directory:,
62
65
  provider_silent_mode:,
63
- specification:
66
+ build_specification:,
67
+ runtime_specification:
64
68
  )
65
69
  @id = id
66
70
  @created_at = created_at
@@ -71,6 +75,7 @@ module Appwrite
71
75
  @live = live
72
76
  @logging = logging
73
77
  @runtime = runtime
78
+ @deployment_retention = deployment_retention
74
79
  @deployment_id = deployment_id
75
80
  @deployment_created_at = deployment_created_at
76
81
  @latest_deployment_id = latest_deployment_id
@@ -89,7 +94,8 @@ module Appwrite
89
94
  @provider_branch = provider_branch
90
95
  @provider_root_directory = provider_root_directory
91
96
  @provider_silent_mode = provider_silent_mode
92
- @specification = specification
97
+ @build_specification = build_specification
98
+ @runtime_specification = runtime_specification
93
99
  end
94
100
 
95
101
  def self.from(map:)
@@ -103,6 +109,7 @@ module Appwrite
103
109
  live: map["live"],
104
110
  logging: map["logging"],
105
111
  runtime: map["runtime"],
112
+ deployment_retention: map["deploymentRetention"],
106
113
  deployment_id: map["deploymentId"],
107
114
  deployment_created_at: map["deploymentCreatedAt"],
108
115
  latest_deployment_id: map["latestDeploymentId"],
@@ -121,7 +128,8 @@ module Appwrite
121
128
  provider_branch: map["providerBranch"],
122
129
  provider_root_directory: map["providerRootDirectory"],
123
130
  provider_silent_mode: map["providerSilentMode"],
124
- specification: map["specification"]
131
+ build_specification: map["buildSpecification"],
132
+ runtime_specification: map["runtimeSpecification"]
125
133
  )
126
134
  end
127
135
 
@@ -136,6 +144,7 @@ module Appwrite
136
144
  "live": @live,
137
145
  "logging": @logging,
138
146
  "runtime": @runtime,
147
+ "deploymentRetention": @deployment_retention,
139
148
  "deploymentId": @deployment_id,
140
149
  "deploymentCreatedAt": @deployment_created_at,
141
150
  "latestDeploymentId": @latest_deployment_id,
@@ -154,7 +163,8 @@ module Appwrite
154
163
  "providerBranch": @provider_branch,
155
164
  "providerRootDirectory": @provider_root_directory,
156
165
  "providerSilentMode": @provider_silent_mode,
157
- "specification": @specification
166
+ "buildSpecification": @build_specification,
167
+ "runtimeSpecification": @runtime_specification
158
168
  }
159
169
  end
160
170
  end
@@ -0,0 +1,67 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class Key
6
+ attr_reader :id
7
+ attr_reader :created_at
8
+ attr_reader :updated_at
9
+ attr_reader :name
10
+ attr_reader :expire
11
+ attr_reader :scopes
12
+ attr_reader :secret
13
+ attr_reader :accessed_at
14
+ attr_reader :sdks
15
+
16
+ def initialize(
17
+ id:,
18
+ created_at:,
19
+ updated_at:,
20
+ name:,
21
+ expire:,
22
+ scopes:,
23
+ secret:,
24
+ accessed_at:,
25
+ sdks:
26
+ )
27
+ @id = id
28
+ @created_at = created_at
29
+ @updated_at = updated_at
30
+ @name = name
31
+ @expire = expire
32
+ @scopes = scopes
33
+ @secret = secret
34
+ @accessed_at = accessed_at
35
+ @sdks = sdks
36
+ end
37
+
38
+ def self.from(map:)
39
+ Key.new(
40
+ id: map["$id"],
41
+ created_at: map["$createdAt"],
42
+ updated_at: map["$updatedAt"],
43
+ name: map["name"],
44
+ expire: map["expire"],
45
+ scopes: map["scopes"],
46
+ secret: map["secret"],
47
+ accessed_at: map["accessedAt"],
48
+ sdks: map["sdks"]
49
+ )
50
+ end
51
+
52
+ def to_map
53
+ {
54
+ "$id": @id,
55
+ "$createdAt": @created_at,
56
+ "$updatedAt": @updated_at,
57
+ "name": @name,
58
+ "expire": @expire,
59
+ "scopes": @scopes,
60
+ "secret": @secret,
61
+ "accessedAt": @accessed_at,
62
+ "sdks": @sdks
63
+ }
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,32 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class KeyList
6
+ attr_reader :total
7
+ attr_reader :keys
8
+
9
+ def initialize(
10
+ total:,
11
+ keys:
12
+ )
13
+ @total = total
14
+ @keys = keys
15
+ end
16
+
17
+ def self.from(map:)
18
+ KeyList.new(
19
+ total: map["total"],
20
+ keys: map["keys"].map { |it| Key.from(map: it) }
21
+ )
22
+ end
23
+
24
+ def to_map
25
+ {
26
+ "total": @total,
27
+ "keys": @keys.map { |it| it.to_map }
28
+ }
29
+ end
30
+ end
31
+ end
32
+ end