evrblk 0.1.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.
@@ -0,0 +1,307 @@
1
+ syntax = "proto3";
2
+
3
+ option go_package = "github.com/evrblk/evrblk-go/moab/preview;moab";
4
+ option ruby_package = "Evrblk::Moab::Preview";
5
+
6
+ package com.evrblk.moab.preview;
7
+
8
+ service MoabPreviewApi {
9
+ rpc CreateQueue(CreateQueueRequest) returns (CreateQueueResponse) {}
10
+ rpc GetQueue(GetQueueRequest) returns (GetQueueResponse) {}
11
+ rpc UpdateQueue(UpdateQueueRequest) returns (UpdateQueueResponse) {}
12
+ rpc DeleteQueue(DeleteQueueRequest) returns (DeleteQueueResponse) {}
13
+ rpc ListQueues(ListQueuesRequest) returns (ListQueuesResponse) {}
14
+
15
+ rpc GetTask(GetTaskRequest) returns (GetTaskResponse) {}
16
+ rpc Enqueue(EnqueueRequest) returns (EnqueueResponse) {}
17
+ rpc Dequeue(DequeueRequest) returns (DequeueResponse) {}
18
+ rpc ReportStatus(ReportStatusRequest) returns (ReportStatusResponse) {}
19
+ rpc DeleteTasks(DeleteTasksRequest) returns (DeleteTasksResponse) {}
20
+ rpc RestartTasks(RestartTasksRequest) returns (RestartTasksResponse) {}
21
+ rpc PurgeQueue(PurgeQueueRequest) returns (PurgeQueueResponse) {}
22
+
23
+ rpc CreateSchedule(CreateScheduleRequest) returns (CreateScheduleResponse) {}
24
+ rpc GetSchedule(GetScheduleRequest) returns (GetScheduleResponse) {}
25
+ rpc UpdateSchedule(UpdateScheduleRequest) returns (UpdateScheduleResponse) {}
26
+ rpc DeleteSchedule(DeleteScheduleRequest) returns (DeleteScheduleResponse) {}
27
+ }
28
+
29
+ // Queues APIs
30
+
31
+ message CreateQueueRequest {
32
+ string name = 1;
33
+ string description = 2;
34
+ int64 keepalive_timeout_in_seconds = 3;
35
+ RetryStrategy retry_strategy = 4;
36
+ DequeuingSettings dequeuing_settings = 5;
37
+ DeadLetterQueueConfig dead_letter_queue_config = 6;
38
+ int64 expires_in_seconds = 7;
39
+ }
40
+
41
+ message CreateQueueResponse {
42
+ Queue queue = 1;
43
+ }
44
+
45
+ message GetQueueRequest {
46
+ string queue_name = 1;
47
+ }
48
+
49
+ message GetQueueResponse {
50
+ Queue queue = 1;
51
+ repeated Schedule schedules = 2;
52
+ QueueStats stats = 3;
53
+ }
54
+
55
+ message UpdateQueueRequest {
56
+ string queue_name = 1;
57
+ string description = 2;
58
+ int64 keepalive_timeout_in_seconds = 3;
59
+ RetryStrategy retry_strategy = 4;
60
+ DequeuingSettings dequeuing_settings = 5;
61
+ DeadLetterQueueConfig dead_letter_queue_config = 6;
62
+ int64 expires_in_seconds = 7;
63
+ }
64
+
65
+ message UpdateQueueResponse {
66
+ Queue queue = 1;
67
+ }
68
+
69
+ message DeleteQueueRequest {
70
+ string queue_name = 1;
71
+ }
72
+
73
+ message DeleteQueueResponse {}
74
+
75
+ message ListQueuesRequest {}
76
+
77
+ message ListQueuesResponse {
78
+ repeated Queue queues = 1;
79
+ }
80
+
81
+ // Enqueue/Dequeue APIs
82
+
83
+ message EnqueueRequest {
84
+ string queue_name = 1;
85
+ repeated EnqueueRequestEntry entries = 2; // TODO rename to tasks?
86
+ }
87
+
88
+ message EnqueueRequestEntry {
89
+ enum OverwriteOnDuplicate {
90
+ OVERWRITE_ON_DUPLICATE_INVALID = 0;
91
+ OVERWRITE_ON_DUPLICATE_PAYLOAD = 1;
92
+ OVERWRITE_ON_DUPLICATE_SCHEDULED_AT = 2;
93
+ OVERWRITE_ON_DUPLICATE_EXPIRES_AT = 3;
94
+ }
95
+
96
+ bytes payload = 1;
97
+ int64 scheduled_at = 2;
98
+ int64 expires_at = 3;
99
+ string dedupe_key = 4;
100
+ int64 keepalive_timeout_in_seconds = 5;
101
+ RetryStrategy retry_strategy = 6;
102
+ repeated OverwriteOnDuplicate overwrite_on_duplicate = 7;
103
+ string thread_id = 8;
104
+ }
105
+
106
+ message EnqueueResponse {
107
+ repeated Task tasks = 1;
108
+ }
109
+
110
+ message DequeueRequest {
111
+ string queue_name = 1;
112
+ int64 batch_size = 2;
113
+ }
114
+
115
+ message DequeueResponse {
116
+ repeated Task tasks = 1;
117
+ }
118
+
119
+ message ReportStatusRequest {
120
+ string queue_name = 1;
121
+ repeated ReportStatusRequestEntry entries = 2;
122
+ }
123
+
124
+ message ReportStatusRequestEntry {
125
+ enum Status {
126
+ STATUS_INVALID = 0;
127
+ STATUS_SUCCEEDED = 1;
128
+ STATUS_IN_PROGRESS = 2;
129
+ STATUS_FAILED = 3;
130
+ }
131
+
132
+ string task_id = 1;
133
+ int32 attempt = 2;
134
+ Status status = 3;
135
+ }
136
+
137
+ message ReportStatusResponse {}
138
+
139
+ message DeleteTasksRequest {
140
+ string queue_name = 1;
141
+ repeated string task_ids = 2;
142
+ }
143
+
144
+ message DeleteTasksResponse {}
145
+
146
+ message GetTaskRequest {
147
+ string queue_name = 1;
148
+ string task_id = 2;
149
+ }
150
+
151
+ message GetTaskResponse {
152
+ Task task = 1;
153
+ }
154
+
155
+ message RestartTasksRequest {
156
+ string queue_name = 1;
157
+ repeated string task_ids = 2;
158
+ }
159
+
160
+ message RestartTasksResponse {}
161
+
162
+ message PurgeQueueRequest {
163
+ string queue_name = 1;
164
+ }
165
+
166
+ message PurgeQueueResponse {}
167
+
168
+ // Schedules APIs
169
+
170
+ message CreateScheduleRequest {
171
+ string queue_name = 1;
172
+ string name = 2;
173
+ string description = 3;
174
+ string cron = 4;
175
+ bytes payload = 5;
176
+ string dedupe_key = 6;
177
+ int64 expires_in_seconds = 7;
178
+ int64 keepalive_timeout_in_seconds = 8;
179
+ RetryStrategy retry_strategy = 9;
180
+ string timezone = 10;
181
+ }
182
+
183
+ message CreateScheduleResponse {
184
+ Schedule schedule = 1;
185
+ }
186
+
187
+ message GetScheduleRequest {
188
+ string queue_name = 1;
189
+ string schedule_name = 2;
190
+ }
191
+
192
+ message GetScheduleResponse {
193
+ Schedule schedule = 1;
194
+ }
195
+
196
+ message UpdateScheduleRequest {
197
+ string queue_name = 1;
198
+ string schedule_name = 2;
199
+ string description = 3;
200
+ string cron = 4;
201
+ bytes payload = 5;
202
+ string dedupe_key = 6;
203
+ int64 expires_in_seconds = 7;
204
+ int64 keepalive_timeout_in_seconds = 8;
205
+ RetryStrategy retry_strategy = 9;
206
+ string timezone = 10;
207
+ }
208
+
209
+ message UpdateScheduleResponse {
210
+ Schedule schedule = 1;
211
+ }
212
+
213
+ message DeleteScheduleRequest {
214
+ string queue_name = 1;
215
+ string schedule_name = 2;
216
+ }
217
+
218
+ message DeleteScheduleResponse {}
219
+
220
+ // Main models
221
+
222
+ message Task {
223
+ string id = 1;
224
+ string queue_name = 2;
225
+ bytes payload = 3;
226
+ int64 created_at = 4;
227
+ int64 scheduled_at = 5;
228
+ int64 expires_at = 6;
229
+ string dedupe_key = 7;
230
+ int32 attempts = 8;
231
+ string thread_id = 9;
232
+ // debug info payload
233
+ }
234
+
235
+ message Schedule {
236
+ string name = 1;
237
+ string description = 2;
238
+ string queue_name = 3;
239
+ int64 created_at = 4;
240
+ int64 updated_at = 5;
241
+ int64 version = 6;
242
+ string cron = 7;
243
+ bytes payload = 8;
244
+ string dedupe_key = 9;
245
+ int64 expires_in_seconds = 10;
246
+ int64 keepalive_timeout_in_seconds = 11;
247
+ RetryStrategy retry_strategy = 12;
248
+ string timezone = 13;
249
+ }
250
+
251
+ message RetryStrategy {
252
+ repeated int64 retry_intervals_in_seconds = 1;
253
+ }
254
+
255
+ message Queue {
256
+ string name = 1;
257
+ string description = 2;
258
+ int64 created_at = 3;
259
+ int64 updated_at = 4;
260
+ int64 version = 5;
261
+
262
+ // default on queue level, override on task level
263
+ int64 keepalive_timeout_in_seconds = 6;
264
+ RetryStrategy retry_strategy = 7;
265
+ DequeuingSettings dequeuing_settings = 8;
266
+ DeadLetterQueueConfig dead_letter_queue_config = 9;
267
+
268
+ int64 expires_in_seconds = 10;
269
+ }
270
+
271
+ message DeadLetterQueueConfig {
272
+ bool enable = 1;
273
+ int64 max_size = 2; // 0 - unlimited
274
+ int64 retention_period_in_seconds = 3; // TODO units? 0 - unlimited
275
+ }
276
+
277
+ // message CompletedTasksSetConfig {
278
+ // bool enable = 1;
279
+ // int64 max_size = 2; // 0 - unlimited
280
+ // int64 retention_period = 3; // TODO units? 0 - unlimited
281
+ // }
282
+
283
+ message DequeuingSettings {
284
+ int64 max_in_progress_tasks = 1;
285
+ TokenBucketRateLimiting rate_limiting = 2;
286
+ bool dequeuing_paused = 3;
287
+ }
288
+
289
+ message TokenBucketRateLimiting {
290
+ int64 max_tokens = 1;
291
+ int64 interval = 2;
292
+ IntervalUnit interval_unit = 3;
293
+ }
294
+
295
+ message QueueStats {
296
+ uint64 enqueued_tasks_count = 1;
297
+ uint64 in_progress_tasks_count = 2;
298
+ uint64 dead_tasks_count = 3;
299
+ int64 age_of_oldest_enqueued_task = 4;
300
+ }
301
+
302
+ enum IntervalUnit {
303
+ INTERVAL_UNIT_INVALID = 0;
304
+ INTERVAL_UNIT_SECONDS = 1;
305
+ INTERVAL_UNIT_MINUTES = 2;
306
+ INTERVAL_UNIT_HOURS = 3;
307
+ }
@@ -0,0 +1,68 @@
1
+ syntax = "proto3";
2
+
3
+ option go_package = "github.com/evrblk/evrblk-go/myaccount/preview;myaccount";
4
+ option ruby_package = "Evrblk::MyAccount::Preview";
5
+
6
+ package com.evrblk.myaccount.preview;
7
+
8
+ service MyAccountPreviewApi {
9
+ rpc GetAccount(GetAccountRequest) returns (GetAccountResponse) {}
10
+ // request service limit increase
11
+ // update billing info
12
+ // update payment methods
13
+ // see billing statements
14
+ // update notification settings
15
+ //
16
+ }
17
+
18
+ message GetAccountRequest {
19
+
20
+ }
21
+
22
+ message GetAccountResponse {
23
+ Account account = 1;
24
+ }
25
+
26
+ // common
27
+
28
+ message Account {
29
+ string id = 1;
30
+ string email = 2;
31
+ int64 created_at = 3;
32
+ int64 updated_at = 4;
33
+ uint64 version = 5;
34
+ ServiceLimits service_limits = 7;
35
+ }
36
+
37
+ message ServiceLimits {
38
+ IAMServiceLimits iam_service_limits = 1;
39
+ MoabServiceLimits moab_service_limits = 2;
40
+ BisonServiceLimits bison_service_limits = 3;
41
+ }
42
+
43
+ message IAMServiceLimits {
44
+ int64 max_number_of_roles = 1;
45
+ int64 max_number_of_users = 2;
46
+ int64 max_number_of_api_keys = 3;
47
+ int64 control_plane_read_request_rate = 4;
48
+ int64 control_plane_update_request_rate = 5;
49
+ // int64 data_plane_request_rate = 6;
50
+ }
51
+
52
+ message MoabServiceLimits {
53
+ int64 max_number_of_queues = 1;
54
+ int64 max_number_of_schedules_per_queue = 2;
55
+ int64 max_number_of_schedules = 3;
56
+ int64 enqueue_per_queue_request_rate = 4;
57
+ int64 dequeue_per_queue_request_rate = 5;
58
+ int64 max_enqueue_batch_size = 6;
59
+ int64 max_dequeue_batch_size = 7;
60
+ int64 control_plane_read_request_rate = 8;
61
+ int64 control_plane_update_request_rate = 9;
62
+ int64 data_plane_request_rate = 10;
63
+ int64 purge_queue_request_rate = 11;
64
+ }
65
+
66
+ message BisonServiceLimits {
67
+
68
+ }
data/protogen.sh ADDED
@@ -0,0 +1,6 @@
1
+ grpc_tools_ruby_protoc -I ./proto --ruby_out=./lib/evrblk --grpc_out=./lib/evrblk ./proto/moab/preview/api.proto
2
+ grpc_tools_ruby_protoc -I ./proto --ruby_out=./lib/evrblk --grpc_out=./lib/evrblk ./proto/myaccount/preview/api.proto
3
+ grpc_tools_ruby_protoc -I ./proto --ruby_out=./lib/evrblk --grpc_out=./lib/evrblk ./proto/grackle/preview/api.proto
4
+ grpc_tools_ruby_protoc -I ./proto --ruby_out=./lib/evrblk --grpc_out=./lib/evrblk ./proto/iam/preview/api.proto
5
+
6
+
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: evrblk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Stanislav Spiridonov
8
+ - Everblack
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Build simple, secure, scalable systems with Everblack. See https://everblack.dev
14
+ for details.
15
+ email: stanislav@spiridonov.pro
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - Gemfile
21
+ - LICENSE
22
+ - README.md
23
+ - evrblk.gemspec
24
+ - lib/evrblk.rb
25
+ - lib/evrblk/authn/alfa.rb
26
+ - lib/evrblk/authn/base.rb
27
+ - lib/evrblk/authn/bravo.rb
28
+ - lib/evrblk/authn/request_signer.rb
29
+ - lib/evrblk/grackle/preview/api_pb.rb
30
+ - lib/evrblk/grackle/preview/api_services_pb.rb
31
+ - lib/evrblk/grackle/preview/client.rb
32
+ - lib/evrblk/hash_converter.rb
33
+ - lib/evrblk/iam/preview/api_pb.rb
34
+ - lib/evrblk/iam/preview/api_services_pb.rb
35
+ - lib/evrblk/iam/preview/client.rb
36
+ - lib/evrblk/moab/preview/api_pb.rb
37
+ - lib/evrblk/moab/preview/api_services_pb.rb
38
+ - lib/evrblk/moab/preview/client.rb
39
+ - lib/evrblk/myaccount/preview/api_pb.rb
40
+ - lib/evrblk/myaccount/preview/api_services_pb.rb
41
+ - lib/evrblk/myaccount/preview/client.rb
42
+ - lib/evrblk/version.rb
43
+ - proto/grackle/preview/api.proto
44
+ - proto/iam/preview/api.proto
45
+ - proto/moab/preview/api.proto
46
+ - proto/myaccount/preview/api.proto
47
+ - protogen.sh
48
+ homepage: https://everblack.dev
49
+ licenses:
50
+ - MIT
51
+ metadata:
52
+ bug_tracker_uri: https://github.com/evrblk/evrblk-ruby/issues
53
+ documentation_uri: https://everblack.dev/docs
54
+ github_repo: ssh://github.com/evrblk/evrblk-ruby
55
+ homepage_uri: https://everblack.dev
56
+ source_code_uri: https://github.com/evrblk/evrblk-ruby
57
+ rubygems_mfa_required: 'false'
58
+ rdoc_options: []
59
+ require_paths:
60
+ - lib
61
+ required_ruby_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 2.3.0
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ requirements: []
72
+ rubygems_version: 3.6.9
73
+ specification_version: 4
74
+ summary: Ruby bindings for the Everblack API
75
+ test_files: []