spikard 0.12.0 → 0.15.2
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.
- checksums.yaml +4 -4
- data/Steepfile +6 -0
- data/ext/spikard_rb/extconf.rb +1 -2
- data/ext/spikard_rb/{Cargo.lock → native/Cargo.lock} +897 -451
- data/ext/spikard_rb/native/Cargo.toml +24 -0
- data/ext/spikard_rb/src/lib.rs +5366 -3
- data/lib/spikard/native.rb +86 -0
- data/lib/spikard/version.rb +6 -1
- data/lib/spikard.rb +8 -45
- data/lib/spikard_rb.so +0 -0
- data/sig/types.rbs +427 -0
- metadata +14 -242
- data/LICENSE +0 -1
- data/README.md +0 -267
- data/ext/spikard_rb/Cargo.toml +0 -17
- data/lib/spikard/app.rb +0 -428
- data/lib/spikard/background.rb +0 -58
- data/lib/spikard/config.rb +0 -506
- data/lib/spikard/converters.rb +0 -13
- data/lib/spikard/grpc.rb +0 -182
- data/lib/spikard/handler_wrapper.rb +0 -113
- data/lib/spikard/provide.rb +0 -214
- data/lib/spikard/response.rb +0 -173
- data/lib/spikard/schema.rb +0 -243
- data/lib/spikard/sse.rb +0 -111
- data/lib/spikard/streaming_response.rb +0 -44
- data/lib/spikard/testing.rb +0 -432
- data/lib/spikard/upload_file.rb +0 -131
- data/lib/spikard/websocket.rb +0 -59
- data/sig/spikard.rbs +0 -719
- data/vendor/crates/spikard-bindings-shared/Cargo.toml +0 -80
- data/vendor/crates/spikard-bindings-shared/examples/config_extraction.rs +0 -132
- data/vendor/crates/spikard-bindings-shared/src/config_extractor.rs +0 -905
- data/vendor/crates/spikard-bindings-shared/src/conversion_traits.rs +0 -210
- data/vendor/crates/spikard-bindings-shared/src/di_traits.rs +0 -252
- data/vendor/crates/spikard-bindings-shared/src/error_response.rs +0 -404
- data/vendor/crates/spikard-bindings-shared/src/grpc_metadata.rs +0 -199
- data/vendor/crates/spikard-bindings-shared/src/handler_base.rs +0 -252
- data/vendor/crates/spikard-bindings-shared/src/json_conversion.rs +0 -829
- data/vendor/crates/spikard-bindings-shared/src/lazy_cache.rs +0 -587
- data/vendor/crates/spikard-bindings-shared/src/lib.rs +0 -33
- data/vendor/crates/spikard-bindings-shared/src/lifecycle_base.rs +0 -298
- data/vendor/crates/spikard-bindings-shared/src/lifecycle_executor.rs +0 -594
- data/vendor/crates/spikard-bindings-shared/src/response_builder.rs +0 -743
- data/vendor/crates/spikard-bindings-shared/src/response_interpreter.rs +0 -944
- data/vendor/crates/spikard-bindings-shared/src/test_client_base.rs +0 -260
- data/vendor/crates/spikard-bindings-shared/src/validation_helpers.rs +0 -369
- data/vendor/crates/spikard-bindings-shared/tests/config_extractor_behavior.rs +0 -192
- data/vendor/crates/spikard-bindings-shared/tests/error_response_edge_cases.rs +0 -383
- data/vendor/crates/spikard-bindings-shared/tests/full_coverage.rs +0 -459
- data/vendor/crates/spikard-bindings-shared/tests/handler_base_integration.rs +0 -280
- data/vendor/crates/spikard-bindings-shared/tests/integration_tests.rs +0 -669
- data/vendor/crates/spikard-core/Cargo.toml +0 -60
- data/vendor/crates/spikard-core/src/bindings/mod.rs +0 -3
- data/vendor/crates/spikard-core/src/bindings/response.rs +0 -130
- data/vendor/crates/spikard-core/src/debug.rs +0 -127
- data/vendor/crates/spikard-core/src/di/container.rs +0 -702
- data/vendor/crates/spikard-core/src/di/dependency.rs +0 -273
- data/vendor/crates/spikard-core/src/di/error.rs +0 -118
- data/vendor/crates/spikard-core/src/di/factory.rs +0 -538
- data/vendor/crates/spikard-core/src/di/graph.rs +0 -507
- data/vendor/crates/spikard-core/src/di/mod.rs +0 -192
- data/vendor/crates/spikard-core/src/di/resolved.rs +0 -428
- data/vendor/crates/spikard-core/src/di/value.rs +0 -282
- data/vendor/crates/spikard-core/src/errors.rs +0 -72
- data/vendor/crates/spikard-core/src/http.rs +0 -492
- data/vendor/crates/spikard-core/src/lib.rs +0 -29
- data/vendor/crates/spikard-core/src/lifecycle.rs +0 -1273
- data/vendor/crates/spikard-core/src/metadata.rs +0 -378
- data/vendor/crates/spikard-core/src/parameters.rs +0 -2546
- data/vendor/crates/spikard-core/src/problem.rs +0 -358
- data/vendor/crates/spikard-core/src/request_data.rs +0 -1146
- data/vendor/crates/spikard-core/src/router.rs +0 -530
- data/vendor/crates/spikard-core/src/schema_registry.rs +0 -197
- data/vendor/crates/spikard-core/src/type_hints.rs +0 -311
- data/vendor/crates/spikard-core/src/validation/error_mapper.rs +0 -710
- data/vendor/crates/spikard-core/src/validation/mod.rs +0 -470
- data/vendor/crates/spikard-core/tests/bindings_response_tests.rs +0 -136
- data/vendor/crates/spikard-core/tests/di_dependency_defaults.rs +0 -37
- data/vendor/crates/spikard-core/tests/error_mapper.rs +0 -761
- data/vendor/crates/spikard-core/tests/parameters_edge_cases.rs +0 -106
- data/vendor/crates/spikard-core/tests/parameters_full.rs +0 -701
- data/vendor/crates/spikard-core/tests/parameters_schema_and_formats.rs +0 -301
- data/vendor/crates/spikard-core/tests/request_data_roundtrip.rs +0 -67
- data/vendor/crates/spikard-core/tests/validation_coverage.rs +0 -250
- data/vendor/crates/spikard-core/tests/validation_error_paths.rs +0 -45
- data/vendor/crates/spikard-http/Cargo.toml +0 -87
- data/vendor/crates/spikard-http/examples/sse-notifications.rs +0 -148
- data/vendor/crates/spikard-http/examples/websocket-chat.rs +0 -92
- data/vendor/crates/spikard-http/src/auth.rs +0 -301
- data/vendor/crates/spikard-http/src/background.rs +0 -1860
- data/vendor/crates/spikard-http/src/bindings/mod.rs +0 -3
- data/vendor/crates/spikard-http/src/bindings/response.rs +0 -1
- data/vendor/crates/spikard-http/src/body_metadata.rs +0 -8
- data/vendor/crates/spikard-http/src/cors.rs +0 -1026
- data/vendor/crates/spikard-http/src/debug.rs +0 -128
- data/vendor/crates/spikard-http/src/di_handler.rs +0 -1672
- data/vendor/crates/spikard-http/src/grpc/framing.rs +0 -469
- data/vendor/crates/spikard-http/src/grpc/handler.rs +0 -1122
- data/vendor/crates/spikard-http/src/grpc/mod.rs +0 -434
- data/vendor/crates/spikard-http/src/grpc/service.rs +0 -622
- data/vendor/crates/spikard-http/src/grpc/streaming.rs +0 -319
- data/vendor/crates/spikard-http/src/handler_response.rs +0 -901
- data/vendor/crates/spikard-http/src/handler_trait.rs +0 -1015
- data/vendor/crates/spikard-http/src/handler_trait_tests.rs +0 -290
- data/vendor/crates/spikard-http/src/jsonrpc/http_handler.rs +0 -502
- data/vendor/crates/spikard-http/src/jsonrpc/method_registry.rs +0 -648
- data/vendor/crates/spikard-http/src/jsonrpc/mod.rs +0 -58
- data/vendor/crates/spikard-http/src/jsonrpc/protocol.rs +0 -1207
- data/vendor/crates/spikard-http/src/jsonrpc/router.rs +0 -2262
- data/vendor/crates/spikard-http/src/lib.rs +0 -548
- data/vendor/crates/spikard-http/src/lifecycle/adapter.rs +0 -230
- data/vendor/crates/spikard-http/src/lifecycle.rs +0 -1193
- data/vendor/crates/spikard-http/src/middleware/mod.rs +0 -560
- data/vendor/crates/spikard-http/src/middleware/multipart.rs +0 -912
- data/vendor/crates/spikard-http/src/middleware/urlencoded.rs +0 -513
- data/vendor/crates/spikard-http/src/middleware/validation.rs +0 -768
- data/vendor/crates/spikard-http/src/openapi/mod.rs +0 -309
- data/vendor/crates/spikard-http/src/openapi/parameter_extraction.rs +0 -535
- data/vendor/crates/spikard-http/src/openapi/schema_conversion.rs +0 -1363
- data/vendor/crates/spikard-http/src/openapi/spec_generation.rs +0 -667
- data/vendor/crates/spikard-http/src/query_parser.rs +0 -793
- data/vendor/crates/spikard-http/src/response.rs +0 -720
- data/vendor/crates/spikard-http/src/server/fast_router.rs +0 -186
- data/vendor/crates/spikard-http/src/server/grpc_routing.rs +0 -858
- data/vendor/crates/spikard-http/src/server/handler.rs +0 -1661
- data/vendor/crates/spikard-http/src/server/lifecycle_execution.rs +0 -253
- data/vendor/crates/spikard-http/src/server/mod.rs +0 -1649
- data/vendor/crates/spikard-http/src/server/request_extraction.rs +0 -871
- data/vendor/crates/spikard-http/src/server/routing_factory.rs +0 -618
- data/vendor/crates/spikard-http/src/sse.rs +0 -1409
- data/vendor/crates/spikard-http/src/testing/form.rs +0 -52
- data/vendor/crates/spikard-http/src/testing/multipart.rs +0 -64
- data/vendor/crates/spikard-http/src/testing/test_client.rs +0 -787
- data/vendor/crates/spikard-http/src/testing.rs +0 -617
- data/vendor/crates/spikard-http/src/websocket.rs +0 -1477
- data/vendor/crates/spikard-http/tests/auth_integration.rs +0 -645
- data/vendor/crates/spikard-http/tests/background_behavior.rs +0 -832
- data/vendor/crates/spikard-http/tests/common/grpc_helpers.rs +0 -1012
- data/vendor/crates/spikard-http/tests/common/handlers.rs +0 -309
- data/vendor/crates/spikard-http/tests/common/mod.rs +0 -33
- data/vendor/crates/spikard-http/tests/common/test_builders.rs +0 -628
- data/vendor/crates/spikard-http/tests/di_handler_error_responses.rs +0 -162
- data/vendor/crates/spikard-http/tests/di_integration.rs +0 -192
- data/vendor/crates/spikard-http/tests/doc_snippets.rs +0 -5
- data/vendor/crates/spikard-http/tests/grpc_bidirectional_streaming.rs +0 -430
- data/vendor/crates/spikard-http/tests/grpc_client_streaming.rs +0 -738
- data/vendor/crates/spikard-http/tests/grpc_error_handling_test.rs +0 -652
- data/vendor/crates/spikard-http/tests/grpc_integration_test.rs +0 -334
- data/vendor/crates/spikard-http/tests/grpc_metadata_test.rs +0 -532
- data/vendor/crates/spikard-http/tests/grpc_server_integration.rs +0 -495
- data/vendor/crates/spikard-http/tests/grpc_server_streaming.rs +0 -974
- data/vendor/crates/spikard-http/tests/lifecycle_execution.rs +0 -1093
- data/vendor/crates/spikard-http/tests/middleware_stack_integration.rs +0 -389
- data/vendor/crates/spikard-http/tests/multipart_behavior.rs +0 -656
- data/vendor/crates/spikard-http/tests/request_extraction_full.rs +0 -513
- data/vendor/crates/spikard-http/tests/server_auth_middleware_behavior.rs +0 -328
- data/vendor/crates/spikard-http/tests/server_config_builder.rs +0 -314
- data/vendor/crates/spikard-http/tests/server_configured_router_behavior.rs +0 -200
- data/vendor/crates/spikard-http/tests/server_cors_preflight.rs +0 -83
- data/vendor/crates/spikard-http/tests/server_handler_wrappers.rs +0 -464
- data/vendor/crates/spikard-http/tests/server_method_router_additional_behavior.rs +0 -286
- data/vendor/crates/spikard-http/tests/server_method_router_coverage.rs +0 -118
- data/vendor/crates/spikard-http/tests/server_middleware_behavior.rs +0 -99
- data/vendor/crates/spikard-http/tests/server_middleware_branches.rs +0 -204
- data/vendor/crates/spikard-http/tests/server_openapi_jsonrpc_static.rs +0 -421
- data/vendor/crates/spikard-http/tests/server_router_behavior.rs +0 -121
- data/vendor/crates/spikard-http/tests/sse_behavior.rs +0 -620
- data/vendor/crates/spikard-http/tests/sse_full_behavior.rs +0 -584
- data/vendor/crates/spikard-http/tests/sse_handler_behavior.rs +0 -130
- data/vendor/crates/spikard-http/tests/test_client_requests.rs +0 -167
- data/vendor/crates/spikard-http/tests/testing_helpers.rs +0 -87
- data/vendor/crates/spikard-http/tests/testing_module_coverage.rs +0 -155
- data/vendor/crates/spikard-http/tests/urlencoded_content_type.rs +0 -82
- data/vendor/crates/spikard-http/tests/websocket_behavior.rs +0 -663
- data/vendor/crates/spikard-http/tests/websocket_full_behavior.rs +0 -440
- data/vendor/crates/spikard-http/tests/websocket_integration.rs +0 -150
- data/vendor/crates/spikard-rb/Cargo.toml +0 -68
- data/vendor/crates/spikard-rb/build.rs +0 -200
- data/vendor/crates/spikard-rb/src/background.rs +0 -63
- data/vendor/crates/spikard-rb/src/config/mod.rs +0 -5
- data/vendor/crates/spikard-rb/src/config/server_config.rs +0 -401
- data/vendor/crates/spikard-rb/src/conversion.rs +0 -688
- data/vendor/crates/spikard-rb/src/di/builder.rs +0 -100
- data/vendor/crates/spikard-rb/src/di/mod.rs +0 -375
- data/vendor/crates/spikard-rb/src/grpc/handler.rs +0 -834
- data/vendor/crates/spikard-rb/src/grpc/mod.rs +0 -13
- data/vendor/crates/spikard-rb/src/gvl.rs +0 -80
- data/vendor/crates/spikard-rb/src/handler.rs +0 -699
- data/vendor/crates/spikard-rb/src/integration/mod.rs +0 -3
- data/vendor/crates/spikard-rb/src/lib.rs +0 -2264
- data/vendor/crates/spikard-rb/src/lifecycle.rs +0 -303
- data/vendor/crates/spikard-rb/src/metadata/mod.rs +0 -5
- data/vendor/crates/spikard-rb/src/metadata/route_extraction.rs +0 -507
- data/vendor/crates/spikard-rb/src/request.rs +0 -439
- data/vendor/crates/spikard-rb/src/runtime/mod.rs +0 -5
- data/vendor/crates/spikard-rb/src/runtime/server_runner.rs +0 -344
- data/vendor/crates/spikard-rb/src/server.rs +0 -307
- data/vendor/crates/spikard-rb/src/sse.rs +0 -231
- data/vendor/crates/spikard-rb/src/testing/client.rs +0 -698
- data/vendor/crates/spikard-rb/src/testing/mod.rs +0 -7
- data/vendor/crates/spikard-rb/src/testing/sse.rs +0 -108
- data/vendor/crates/spikard-rb/src/testing/websocket.rs +0 -573
- data/vendor/crates/spikard-rb/src/websocket.rs +0 -475
- data/vendor/crates/spikard-rb-macros/Cargo.toml +0 -25
- data/vendor/crates/spikard-rb-macros/src/lib.rs +0 -51
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
+
# alef:hash:5edec17b527ff92ce6cce13114f42972a434edf40e174a174cbb292c5f29567f
|
|
3
|
+
# To regenerate: alef generate
|
|
4
|
+
# To verify freshness: alef verify --exit-code
|
|
5
|
+
# Issues & docs: https://github.com/kreuzberg-dev/alef
|
|
6
|
+
# frozen_string_literal: true
|
|
7
|
+
|
|
8
|
+
require 'json'
|
|
9
|
+
require 'sorbet-runtime'
|
|
10
|
+
require 'spikard_rb'
|
|
11
|
+
module Spikard
|
|
12
|
+
# Security scheme types
|
|
13
|
+
module SecuritySchemeInfo
|
|
14
|
+
extend T::Helpers
|
|
15
|
+
extend T::Sig
|
|
16
|
+
|
|
17
|
+
interface!
|
|
18
|
+
|
|
19
|
+
# Dispatch from a Hash to the appropriate variant constructor.
|
|
20
|
+
# @param hash [Hash] with discriminator field and variant-specific fields
|
|
21
|
+
# @return [variant_class] an instance of the appropriate variant
|
|
22
|
+
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.untyped) }
|
|
23
|
+
def self.from_hash(hash)
|
|
24
|
+
discriminator = hash[:type] || hash['type']
|
|
25
|
+
case discriminator
|
|
26
|
+
when 'http' then SecuritySchemeInfoHttp.from_hash(hash)
|
|
27
|
+
when 'apiKey' then SecuritySchemeInfoApiKey.from_hash(hash)
|
|
28
|
+
else raise "Unknown discriminator: #{discriminator}"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Variant SecuritySchemeInfoHttp of the SecuritySchemeInfo sum type.
|
|
34
|
+
SecuritySchemeInfoHttp = Data.define(:scheme, :bearer_format) do
|
|
35
|
+
include SecuritySchemeInfo
|
|
36
|
+
extend T::Sig
|
|
37
|
+
|
|
38
|
+
# @return [String]
|
|
39
|
+
sig { returns(String) }
|
|
40
|
+
def scheme = super # rubocop:disable Lint/UselessMethodDefinition
|
|
41
|
+
|
|
42
|
+
# @return [T.nilable(String)]
|
|
43
|
+
sig { returns(T.nilable(String)) }
|
|
44
|
+
def bearer_format = super # rubocop:disable Lint/UselessMethodDefinition
|
|
45
|
+
|
|
46
|
+
sig { returns(T::Boolean) }
|
|
47
|
+
def http? = true
|
|
48
|
+
|
|
49
|
+
sig { returns(T::Boolean) }
|
|
50
|
+
def api_key? = false
|
|
51
|
+
|
|
52
|
+
# @param hash [Hash] deserialized from the native extension
|
|
53
|
+
# @return [self]
|
|
54
|
+
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
55
|
+
def self.from_hash(hash)
|
|
56
|
+
new(scheme: hash[:scheme] || hash['scheme'], bearer_format: hash[:bearer_format] || hash['bearer_format'])
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Variant SecuritySchemeInfoApiKey of the SecuritySchemeInfo sum type.
|
|
61
|
+
SecuritySchemeInfoApiKey = Data.define(:location, :name) do
|
|
62
|
+
include SecuritySchemeInfo
|
|
63
|
+
extend T::Sig
|
|
64
|
+
|
|
65
|
+
# @return [String]
|
|
66
|
+
sig { returns(String) }
|
|
67
|
+
def location = super # rubocop:disable Lint/UselessMethodDefinition
|
|
68
|
+
|
|
69
|
+
# @return [String]
|
|
70
|
+
sig { returns(String) }
|
|
71
|
+
def name = super # rubocop:disable Lint/UselessMethodDefinition
|
|
72
|
+
|
|
73
|
+
sig { returns(T::Boolean) }
|
|
74
|
+
def http? = false
|
|
75
|
+
|
|
76
|
+
sig { returns(T::Boolean) }
|
|
77
|
+
def api_key? = true
|
|
78
|
+
|
|
79
|
+
# @param hash [Hash] deserialized from the native extension
|
|
80
|
+
# @return [self]
|
|
81
|
+
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
82
|
+
def self.from_hash(hash)
|
|
83
|
+
new(location: hash[:location] || hash['location'], name: hash[:name] || hash['name'])
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
data/lib/spikard/version.rb
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
+
# alef:hash:b932cf5bbab2afa468a806bd6f35e67b31fd996f59dcc6892972efd4b844eca6
|
|
3
|
+
# To regenerate: alef generate
|
|
4
|
+
# To verify freshness: alef verify --exit-code
|
|
5
|
+
# Issues & docs: https://github.com/kreuzberg-dev/alef
|
|
1
6
|
# frozen_string_literal: true
|
|
2
7
|
|
|
3
8
|
module Spikard
|
|
4
|
-
VERSION = '0.
|
|
9
|
+
VERSION = '0.15.2'
|
|
5
10
|
end
|
data/lib/spikard.rb
CHANGED
|
@@ -1,50 +1,13 @@
|
|
|
1
|
+
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
+
# alef:hash:5c62d312ae2c1f0cd7d066ce8b2986e3e074ad0372813b665ae9cd9525b62162
|
|
3
|
+
# To regenerate: alef generate
|
|
4
|
+
# To verify freshness: alef verify --exit-code
|
|
5
|
+
# Issues & docs: https://github.com/kreuzberg-dev/alef
|
|
1
6
|
# frozen_string_literal: true
|
|
2
7
|
|
|
3
|
-
# Main Ruby namespace for the Spikard bindings.
|
|
4
|
-
module Spikard
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
begin
|
|
8
|
-
require 'json'
|
|
9
|
-
rescue LoadError
|
|
10
|
-
# Fallback to pure-Ruby implementation when native JSON extension is unavailable
|
|
11
|
-
require 'json/pure'
|
|
12
|
-
end
|
|
13
8
|
require_relative 'spikard/version'
|
|
14
|
-
require_relative 'spikard/
|
|
15
|
-
require_relative 'spikard/response'
|
|
16
|
-
require_relative 'spikard/background'
|
|
17
|
-
require_relative 'spikard/schema'
|
|
18
|
-
require_relative 'spikard/websocket'
|
|
19
|
-
require_relative 'spikard/sse'
|
|
20
|
-
require_relative 'spikard/grpc'
|
|
21
|
-
require_relative 'spikard/upload_file'
|
|
22
|
-
require_relative 'spikard/converters'
|
|
23
|
-
require_relative 'spikard/provide'
|
|
24
|
-
require_relative 'spikard/handler_wrapper'
|
|
25
|
-
require_relative 'spikard/app'
|
|
26
|
-
require_relative 'spikard/testing'
|
|
9
|
+
require_relative 'spikard/native'
|
|
27
10
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
rescue LoadError => e
|
|
31
|
-
raise LoadError, <<~MSG, e.backtrace
|
|
32
|
-
Failed to load the Spikard native extension (spikard_rb). Run `bundle exec rake ext:build` to compile it before executing tests.
|
|
33
|
-
Original error: #{e.message}
|
|
34
|
-
MSG
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
if defined?(Spikard::Native::TestClient) && !Spikard::Native::TestClient.method_defined?(:__spikard_native_request,
|
|
38
|
-
false)
|
|
39
|
-
Spikard::Native::TestClient.class_eval do
|
|
40
|
-
alias_method :__spikard_native_request, :request
|
|
41
|
-
|
|
42
|
-
def request(method, path, options = nil)
|
|
43
|
-
__spikard_native_request(method, path, options)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
11
|
+
module Spikard
|
|
12
|
+
# Re-export all types and functions from native extension
|
|
46
13
|
end
|
|
47
|
-
|
|
48
|
-
# Convenience aliases and methods
|
|
49
|
-
Spikard::TestClient = Spikard::Testing::TestClient
|
|
50
|
-
Spikard.extend Spikard::HandlerWrapper
|
data/lib/spikard_rb.so
ADDED
|
Binary file
|
data/sig/types.rbs
ADDED
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
+
# alef:hash:dbf8bf90f99d68da22b871df1d242fee8be43b6b6779f41c132936c3df22a1fd
|
|
3
|
+
# To regenerate: alef generate
|
|
4
|
+
# To verify freshness: alef verify --exit-code
|
|
5
|
+
# Issues & docs: https://github.com/kreuzberg-dev/alef
|
|
6
|
+
|
|
7
|
+
module Spikard
|
|
8
|
+
|
|
9
|
+
VERSION: String
|
|
10
|
+
|
|
11
|
+
type json_value = Hash[String, untyped] | Array[untyped] | String | Integer | Float | bool | nil
|
|
12
|
+
type JsonValue = json_value
|
|
13
|
+
|
|
14
|
+
class UploadFile
|
|
15
|
+
attr_reader filename: String
|
|
16
|
+
attr_reader content_type: String
|
|
17
|
+
attr_reader size: Integer
|
|
18
|
+
attr_reader content: String
|
|
19
|
+
attr_reader content_encoding: String
|
|
20
|
+
|
|
21
|
+
def initialize: (filename: String, ?content_type: String, ?size: Integer, content: String, ?content_encoding: String) -> void
|
|
22
|
+
def as_bytes: () -> String
|
|
23
|
+
def read_to_string: () -> String
|
|
24
|
+
def content_type_or_default: () -> String
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class ResponseSnapshot
|
|
28
|
+
attr_reader status: Integer
|
|
29
|
+
attr_reader headers: Hash[String, String]
|
|
30
|
+
attr_reader body: String
|
|
31
|
+
|
|
32
|
+
def initialize: (status: Integer, headers: Hash[String, String], body: String) -> void
|
|
33
|
+
def text: () -> String
|
|
34
|
+
def header: (String name) -> String?
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class CorsConfig
|
|
38
|
+
attr_accessor allowed_origins: Array[String]?
|
|
39
|
+
attr_accessor allowed_methods: Array[String]?
|
|
40
|
+
attr_accessor allowed_headers: Array[String]?
|
|
41
|
+
attr_accessor expose_headers: Array[String]?
|
|
42
|
+
attr_accessor max_age: Integer?
|
|
43
|
+
attr_accessor allow_credentials: bool?
|
|
44
|
+
|
|
45
|
+
def initialize: (?allowed_origins: Array[String], ?allowed_methods: Array[String], ?allowed_headers: Array[String], ?expose_headers: Array[String], ?max_age: Integer, ?allow_credentials: bool) -> void
|
|
46
|
+
def allowed_methods_joined: () -> String
|
|
47
|
+
def allowed_headers_joined: () -> String
|
|
48
|
+
def is_origin_allowed: (String origin) -> bool
|
|
49
|
+
def is_method_allowed: (String method) -> bool
|
|
50
|
+
def are_headers_allowed: (Array[String] requested) -> bool
|
|
51
|
+
def self.default: () -> CorsConfig
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
class CompressionConfig
|
|
55
|
+
attr_accessor gzip: bool?
|
|
56
|
+
attr_accessor brotli: bool?
|
|
57
|
+
attr_accessor min_size: Integer?
|
|
58
|
+
attr_accessor quality: Integer?
|
|
59
|
+
|
|
60
|
+
def initialize: (?gzip: bool, ?brotli: bool, ?min_size: Integer, ?quality: Integer) -> void
|
|
61
|
+
def self.default: () -> CompressionConfig
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
class RateLimitConfig
|
|
65
|
+
attr_accessor per_second: Integer?
|
|
66
|
+
attr_accessor burst: Integer?
|
|
67
|
+
attr_accessor ip_based: bool?
|
|
68
|
+
|
|
69
|
+
def initialize: (?per_second: Integer, ?burst: Integer, ?ip_based: bool) -> void
|
|
70
|
+
def self.default: () -> RateLimitConfig
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
class JsonRpcMethodInfo
|
|
74
|
+
attr_reader method_name: String
|
|
75
|
+
attr_reader description: String
|
|
76
|
+
attr_reader params_schema: JsonValue
|
|
77
|
+
attr_reader result_schema: JsonValue
|
|
78
|
+
attr_reader deprecated: bool
|
|
79
|
+
attr_reader tags: Array[String]
|
|
80
|
+
|
|
81
|
+
def initialize: (method_name: String, ?description: String, ?params_schema: JsonValue, ?result_schema: JsonValue, deprecated: bool, tags: Array[String]) -> void
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
class ProblemDetails
|
|
85
|
+
attr_reader type_uri: String
|
|
86
|
+
attr_reader title: String
|
|
87
|
+
attr_reader status: Integer
|
|
88
|
+
attr_reader detail: String
|
|
89
|
+
attr_reader instance: String
|
|
90
|
+
attr_reader extensions: Hash[String, JsonValue]
|
|
91
|
+
|
|
92
|
+
def initialize: (type_uri: String, title: String, status: Integer, ?detail: String, ?instance: String, extensions: Hash[String, JsonValue]) -> void
|
|
93
|
+
def with_detail: (String detail) -> ProblemDetails
|
|
94
|
+
def with_instance: (String instance) -> ProblemDetails
|
|
95
|
+
def to_json: () -> String
|
|
96
|
+
def to_json_pretty: () -> String
|
|
97
|
+
def self.not_found: (String detail) -> ProblemDetails
|
|
98
|
+
def self.method_not_allowed: (String detail) -> ProblemDetails
|
|
99
|
+
def self.internal_server_error: (String detail) -> ProblemDetails
|
|
100
|
+
def self.bad_request: (String detail) -> ProblemDetails
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
class GraphQLRouteConfig
|
|
104
|
+
def path: (String path) -> GraphQLRouteConfig
|
|
105
|
+
def method: (String method) -> GraphQLRouteConfig
|
|
106
|
+
def enable_playground: (bool enable) -> GraphQLRouteConfig
|
|
107
|
+
def description: (String description) -> GraphQLRouteConfig
|
|
108
|
+
def get_path: () -> String
|
|
109
|
+
def get_method: () -> String
|
|
110
|
+
def is_playground_enabled: () -> bool
|
|
111
|
+
def get_description: () -> String?
|
|
112
|
+
def self.default: () -> GraphQLRouteConfig
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
class SchemaConfig
|
|
116
|
+
attr_accessor introspection_enabled: bool?
|
|
117
|
+
attr_accessor complexity_limit: Integer?
|
|
118
|
+
attr_accessor depth_limit: Integer?
|
|
119
|
+
|
|
120
|
+
def initialize: (?introspection_enabled: bool, ?complexity_limit: Integer, ?depth_limit: Integer) -> void
|
|
121
|
+
def self.default: () -> SchemaConfig
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
class QueryOnlyConfig
|
|
125
|
+
attr_accessor introspection_enabled: bool?
|
|
126
|
+
attr_accessor complexity_limit: Integer?
|
|
127
|
+
attr_accessor depth_limit: Integer?
|
|
128
|
+
|
|
129
|
+
def initialize: (?introspection_enabled: bool, ?complexity_limit: Integer, ?depth_limit: Integer) -> void
|
|
130
|
+
def self.default: () -> QueryOnlyConfig
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
class QueryMutationConfig
|
|
134
|
+
attr_accessor introspection_enabled: bool?
|
|
135
|
+
attr_accessor complexity_limit: Integer?
|
|
136
|
+
attr_accessor depth_limit: Integer?
|
|
137
|
+
|
|
138
|
+
def initialize: (?introspection_enabled: bool, ?complexity_limit: Integer, ?depth_limit: Integer) -> void
|
|
139
|
+
def self.default: () -> QueryMutationConfig
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
class FullSchemaConfig
|
|
143
|
+
attr_accessor introspection_enabled: bool?
|
|
144
|
+
attr_accessor complexity_limit: Integer?
|
|
145
|
+
attr_accessor depth_limit: Integer?
|
|
146
|
+
|
|
147
|
+
def initialize: (?introspection_enabled: bool, ?complexity_limit: Integer, ?depth_limit: Integer) -> void
|
|
148
|
+
def self.default: () -> FullSchemaConfig
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
class AsyncApiConfig
|
|
152
|
+
attr_accessor enabled: bool?
|
|
153
|
+
attr_accessor spec: JsonValue?
|
|
154
|
+
|
|
155
|
+
def initialize: (?enabled: bool, ?spec: JsonValue) -> void
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
class ParsedChannel
|
|
159
|
+
attr_reader name: String
|
|
160
|
+
attr_reader address: String
|
|
161
|
+
attr_reader messages: Array[String]
|
|
162
|
+
attr_reader bindings: JsonValue
|
|
163
|
+
|
|
164
|
+
def initialize: (name: String, address: String, messages: Array[String], ?bindings: JsonValue) -> void
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
class ParsedOperation
|
|
168
|
+
attr_reader name: String
|
|
169
|
+
attr_reader action: String
|
|
170
|
+
attr_reader channel: String
|
|
171
|
+
|
|
172
|
+
def initialize: (name: String, action: String, channel: String) -> void
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
class ParsedMessage
|
|
176
|
+
attr_reader name: String
|
|
177
|
+
attr_reader schema: JsonValue
|
|
178
|
+
|
|
179
|
+
def initialize: (name: String, ?schema: JsonValue) -> void
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
class ParseResult
|
|
183
|
+
attr_reader spec_version: String
|
|
184
|
+
attr_reader title: String
|
|
185
|
+
attr_reader api_version: String
|
|
186
|
+
attr_reader channels: Array[ParsedChannel]
|
|
187
|
+
attr_reader operations: Array[ParsedOperation]
|
|
188
|
+
attr_reader messages: Array[ParsedMessage]
|
|
189
|
+
|
|
190
|
+
def initialize: (spec_version: String, title: String, api_version: String, channels: Array[ParsedChannel], operations: Array[ParsedOperation], messages: Array[ParsedMessage]) -> void
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
class ParseRequest
|
|
194
|
+
attr_reader spec: JsonValue
|
|
195
|
+
|
|
196
|
+
def initialize: (spec: JsonValue) -> void
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
class ValidationResponse
|
|
200
|
+
attr_reader valid: bool
|
|
201
|
+
attr_reader errors: Array[String]
|
|
202
|
+
|
|
203
|
+
def initialize: (valid: bool, errors: Array[String]) -> void
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
class ValidateRequest
|
|
207
|
+
attr_reader spec: JsonValue
|
|
208
|
+
attr_reader channel: String
|
|
209
|
+
attr_reader message: String
|
|
210
|
+
attr_reader payload: JsonValue
|
|
211
|
+
|
|
212
|
+
def initialize: (spec: JsonValue, channel: String, message: String, payload: JsonValue) -> void
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
class BackgroundTaskConfig
|
|
216
|
+
attr_accessor max_queue_size: Integer?
|
|
217
|
+
attr_accessor max_concurrent_tasks: Integer?
|
|
218
|
+
attr_accessor drain_timeout_secs: Integer?
|
|
219
|
+
|
|
220
|
+
def initialize: (?max_queue_size: Integer, ?max_concurrent_tasks: Integer, ?drain_timeout_secs: Integer) -> void
|
|
221
|
+
def self.default: () -> BackgroundTaskConfig
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
class BackgroundJobMetadata
|
|
225
|
+
attr_accessor name: String?
|
|
226
|
+
attr_accessor request_id: String?
|
|
227
|
+
|
|
228
|
+
def initialize: (?name: String, ?request_id: String) -> void
|
|
229
|
+
def self.default: () -> BackgroundJobMetadata
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
class GrpcConfig
|
|
233
|
+
attr_accessor enabled: bool?
|
|
234
|
+
attr_accessor max_message_size: Integer?
|
|
235
|
+
attr_accessor enable_compression: bool?
|
|
236
|
+
attr_accessor request_timeout: Integer?
|
|
237
|
+
attr_accessor max_concurrent_streams: Integer?
|
|
238
|
+
attr_accessor enable_keepalive: bool?
|
|
239
|
+
attr_accessor keepalive_interval: Integer?
|
|
240
|
+
attr_accessor keepalive_timeout: Integer?
|
|
241
|
+
attr_accessor max_stream_response_bytes: Integer?
|
|
242
|
+
|
|
243
|
+
def initialize: (?enabled: bool, ?max_message_size: Integer, ?enable_compression: bool, ?request_timeout: Integer, ?max_concurrent_streams: Integer, ?enable_keepalive: bool, ?keepalive_interval: Integer, ?keepalive_timeout: Integer, ?max_stream_response_bytes: Integer) -> void
|
|
244
|
+
def self.default: () -> GrpcConfig
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
class JsonRpcConfig
|
|
248
|
+
attr_accessor enabled: bool?
|
|
249
|
+
attr_accessor endpoint_path: String?
|
|
250
|
+
attr_accessor enable_batch: bool?
|
|
251
|
+
attr_accessor max_batch_size: Integer?
|
|
252
|
+
|
|
253
|
+
def initialize: (?enabled: bool, ?endpoint_path: String, ?enable_batch: bool, ?max_batch_size: Integer) -> void
|
|
254
|
+
def self.default: () -> JsonRpcConfig
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
class OpenApiConfig
|
|
258
|
+
attr_accessor enabled: bool?
|
|
259
|
+
attr_accessor title: String?
|
|
260
|
+
attr_accessor version: String?
|
|
261
|
+
attr_accessor description: String?
|
|
262
|
+
attr_accessor swagger_ui_path: String?
|
|
263
|
+
attr_accessor redoc_path: String?
|
|
264
|
+
attr_accessor openapi_json_path: String?
|
|
265
|
+
attr_accessor contact: ContactInfo?
|
|
266
|
+
attr_accessor license: LicenseInfo?
|
|
267
|
+
attr_accessor servers: Array[ServerInfo]?
|
|
268
|
+
attr_accessor security_schemes: Hash[String, SecuritySchemeInfo]?
|
|
269
|
+
|
|
270
|
+
def initialize: (?enabled: bool, ?title: String, ?version: String, ?description: String, ?swagger_ui_path: String, ?redoc_path: String, ?openapi_json_path: String, ?contact: ContactInfo, ?license: LicenseInfo, ?servers: Array[ServerInfo], ?security_schemes: Hash[String, SecuritySchemeInfo]) -> void
|
|
271
|
+
def self.default: () -> OpenApiConfig
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
class ContactInfo
|
|
275
|
+
attr_reader name: String
|
|
276
|
+
attr_reader email: String
|
|
277
|
+
attr_reader url: String
|
|
278
|
+
|
|
279
|
+
def initialize: (?name: String, ?email: String, ?url: String) -> void
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
class LicenseInfo
|
|
283
|
+
attr_reader name: String
|
|
284
|
+
attr_reader url: String
|
|
285
|
+
|
|
286
|
+
def initialize: (name: String, ?url: String) -> void
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
class ServerInfo
|
|
290
|
+
attr_reader url: String
|
|
291
|
+
attr_reader description: String
|
|
292
|
+
|
|
293
|
+
def initialize: (url: String, ?description: String) -> void
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
class Response
|
|
297
|
+
attr_accessor content: JsonValue?
|
|
298
|
+
attr_accessor status_code: Integer?
|
|
299
|
+
attr_accessor headers: Hash[String, String]?
|
|
300
|
+
|
|
301
|
+
def initialize: (?content: JsonValue, ?status_code: Integer, ?headers: Hash[String, String]) -> void
|
|
302
|
+
def set_header: (String key, String value) -> void
|
|
303
|
+
def set_cookie: (String key, String value, bool secure, bool http_only, ?Integer max_age, ?String domain, ?String path, ?String same_site) -> void
|
|
304
|
+
def self.default: () -> Response
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
class SseEvent
|
|
308
|
+
attr_reader event_type: String
|
|
309
|
+
attr_reader data: JsonValue
|
|
310
|
+
attr_reader id: String
|
|
311
|
+
attr_reader retry: Integer
|
|
312
|
+
|
|
313
|
+
def initialize: (?event_type: String, data: JsonValue, ?id: String, ?retry: Integer) -> void
|
|
314
|
+
def with_id: (String id) -> SseEvent
|
|
315
|
+
def with_retry: (Integer retry_ms) -> SseEvent
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
class TestingSseEvent
|
|
319
|
+
attr_reader data: String
|
|
320
|
+
|
|
321
|
+
def initialize: (data: String) -> void
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
class JwtConfig
|
|
325
|
+
attr_reader secret: String
|
|
326
|
+
attr_reader algorithm: String
|
|
327
|
+
attr_reader audience: Array[String]
|
|
328
|
+
attr_reader issuer: String
|
|
329
|
+
attr_reader leeway: Integer
|
|
330
|
+
|
|
331
|
+
def initialize: (secret: String, algorithm: String, ?audience: Array[String], ?issuer: String, leeway: Integer) -> void
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
class ApiKeyConfig
|
|
335
|
+
attr_reader keys: Array[String]
|
|
336
|
+
attr_reader header_name: String
|
|
337
|
+
|
|
338
|
+
def initialize: (keys: Array[String], header_name: String) -> void
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
class StaticFilesConfig
|
|
342
|
+
attr_reader directory: String
|
|
343
|
+
attr_reader route_prefix: String
|
|
344
|
+
attr_reader index_file: bool
|
|
345
|
+
attr_reader cache_control: String
|
|
346
|
+
|
|
347
|
+
def initialize: (directory: String, route_prefix: String, index_file: bool, ?cache_control: String) -> void
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
class ServerConfig
|
|
351
|
+
attr_accessor host: String?
|
|
352
|
+
attr_accessor port: Integer?
|
|
353
|
+
attr_accessor workers: Integer?
|
|
354
|
+
attr_accessor enable_request_id: bool?
|
|
355
|
+
attr_accessor max_body_size: Integer?
|
|
356
|
+
attr_accessor request_timeout: Integer?
|
|
357
|
+
attr_accessor compression: CompressionConfig?
|
|
358
|
+
attr_accessor rate_limit: RateLimitConfig?
|
|
359
|
+
attr_accessor jwt_auth: JwtConfig?
|
|
360
|
+
attr_accessor api_key_auth: ApiKeyConfig?
|
|
361
|
+
attr_accessor static_files: Array[StaticFilesConfig]?
|
|
362
|
+
attr_accessor graceful_shutdown: bool?
|
|
363
|
+
attr_accessor shutdown_timeout: Integer?
|
|
364
|
+
attr_accessor asyncapi: AsyncApiConfig?
|
|
365
|
+
attr_accessor openapi: OpenApiConfig?
|
|
366
|
+
attr_accessor jsonrpc: JsonRpcConfig?
|
|
367
|
+
attr_accessor grpc: GrpcConfig?
|
|
368
|
+
attr_accessor background_tasks: BackgroundTaskConfig?
|
|
369
|
+
attr_accessor enable_http_trace: bool?
|
|
370
|
+
|
|
371
|
+
def initialize: (?host: String, ?port: Integer, ?workers: Integer, ?enable_request_id: bool, ?max_body_size: Integer, ?request_timeout: Integer, ?compression: CompressionConfig, ?rate_limit: RateLimitConfig, ?jwt_auth: JwtConfig, ?api_key_auth: ApiKeyConfig, ?static_files: Array[StaticFilesConfig], ?graceful_shutdown: bool, ?shutdown_timeout: Integer, ?asyncapi: AsyncApiConfig, ?openapi: OpenApiConfig, ?jsonrpc: JsonRpcConfig, ?grpc: GrpcConfig, ?background_tasks: BackgroundTaskConfig, ?enable_http_trace: bool) -> void
|
|
372
|
+
def self.default: () -> ServerConfig
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
class GraphQLSubscriptionSnapshot
|
|
376
|
+
attr_reader operation_id: String
|
|
377
|
+
attr_reader acknowledged: bool
|
|
378
|
+
attr_reader event: JsonValue
|
|
379
|
+
attr_reader errors: Array[JsonValue]
|
|
380
|
+
attr_reader complete_received: bool
|
|
381
|
+
|
|
382
|
+
def initialize: (operation_id: String, acknowledged: bool, ?event: JsonValue, errors: Array[JsonValue], complete_received: bool) -> void
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
class TestClient
|
|
386
|
+
def get: (String path, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
|
|
387
|
+
def post: (String path, ?JsonValue json, ?Array[String] form_data, String multipart, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
|
|
388
|
+
def request_raw: (Method method, String path, String body, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
|
|
389
|
+
def put: (String path, ?JsonValue json, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
|
|
390
|
+
def patch: (String path, ?JsonValue json, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
|
|
391
|
+
def delete: (String path, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
|
|
392
|
+
def options: (String path, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
|
|
393
|
+
def head: (String path, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
|
|
394
|
+
def trace: (String path, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
|
|
395
|
+
def graphql_at: (String endpoint, String query, ?JsonValue variables, ?String operation_name) -> ResponseSnapshot
|
|
396
|
+
def graphql: (String query, ?JsonValue variables, ?String operation_name) -> ResponseSnapshot
|
|
397
|
+
def graphql_with_status: (String query, ?JsonValue variables, ?String operation_name) -> String
|
|
398
|
+
def graphql_subscription_at: (String endpoint, String query, ?JsonValue variables, ?String operation_name) -> GraphQLSubscriptionSnapshot
|
|
399
|
+
def graphql_subscription: (String query, ?JsonValue variables, ?String operation_name) -> GraphQLSubscriptionSnapshot
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
class SnapshotError
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
class WebSocketMessage
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
class Method
|
|
409
|
+
type value = :get | :post | :put | :patch | :delete | :head | :options | :trace
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
class SecuritySchemeInfo
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
def self.schema_query_only: () -> QueryOnlyConfig
|
|
416
|
+
|
|
417
|
+
def self.schema_query_mutation: () -> QueryMutationConfig
|
|
418
|
+
|
|
419
|
+
def self.schema_full: () -> FullSchemaConfig
|
|
420
|
+
|
|
421
|
+
class GraphQLErrorInfo
|
|
422
|
+
def status_code: () -> Integer
|
|
423
|
+
def transient?: () -> bool
|
|
424
|
+
def error_type: () -> String
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
end
|