@@ -39,7 +39,78 @@ _Tested at Rust version: `rustc 1.53.0 (53cb7b09b 2021-06-17)`_
39
39
40
40
## Examples
41
41
42
- Incoming.
42
+ ### Warp
43
+
44
+ A litle example to how to use it.
45
+ If there is something unclear, please write an issue on the repo.
46
+ Some examples are going to be written soon.
47
+
48
+ ``` rust
49
+ use async_graphql_extension_apollo_tracing :: {ApolloTracing , ApolloTracingDataExt , HTTPMethod , register :: register};
50
+
51
+ async fn main () -> anyhow :: Result <()> {
52
+ ...
53
+
54
+ let schema = Schema :: build (Query :: default (), Mutation :: default (), EmptySubscription )
55
+ . data (some_data_needed_for_you )
56
+ . extension (ApolloTracing :: new (
57
+ " authorization_token" . into (),
58
+ " https://yourdomain.ltd" . into (),
59
+ " your_graph@variant" . into (),
60
+ " v1.0.0" . into (),
61
+ 10 ,
62
+ ))
63
+ . finish ();
64
+
65
+ register (" authorization_token" , & schema , " my-allocation-id" , " variant" , " 1.0.0" , " staging" ). await ? ;
66
+
67
+ ...
68
+
69
+ let client_name = warp :: header :: optional (" apollographql-client-name" );
70
+ let client_version = warp :: header :: optional (" apollographql-client-version" );
71
+ let env = my_env_filter ();
72
+
73
+ let graphql_post = warp :: post ()
74
+ . and (warp :: path (" graphql" ))
75
+ . and (async_graphql_warp :: graphql (schema ))
76
+ . and (env )
77
+ . and (client_name )
78
+ . and (client_version )
79
+ . and_then (
80
+ | (schema , request ): (
81
+ Schema <Query , Mutation , EmptySubscription >,
82
+ async_graphql :: Request ,
83
+ ),
84
+ env : Environment ,
85
+ client_name : Option <String >,
86
+ client_version : Option <String >| async move {
87
+ let userid : Option <String > = env . userid (). map (| x | x . to_string ());
88
+
89
+ Ok :: <_ , std :: convert :: Infallible >(async_graphql_warp :: Response :: from (
90
+ schema
91
+ . execute (
92
+ request . data (ApolloTracingDataExt {
93
+ userid ,
94
+ path : Some (" /graphql" . to_string ()),
95
+ host : Some (" https://yourdomain.ltd" . to_string ()),
96
+ method : Some (HTTPMethod :: POST ),
97
+ secure : Some (true ),
98
+ protocol : Some (" HTTP/1.1" . to_string ()),
99
+ status_code : Some (200 ),
100
+ client_name ,
101
+ client_version ,
102
+ })
103
+ . data (env ),
104
+ )
105
+ . await ,
106
+ ))
107
+ },
108
+ );
109
+
110
+
111
+
112
+ }
113
+ ```
43
114
44
115
## Incoming
45
116
0 commit comments