diff options
Diffstat (limited to 'examples/request_blocking_to_gemtext_from_ast.rs')
| -rw-r--r-- | examples/request_blocking_to_gemtext_from_ast.rs | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/examples/request_blocking_to_gemtext_from_ast.rs b/examples/request_blocking_to_gemtext_from_ast.rs index 6abfdfb..10ff6fb 100644 --- a/examples/request_blocking_to_gemtext_from_ast.rs +++ b/examples/request_blocking_to_gemtext_from_ast.rs @@ -16,17 +16,34 @@ // Copyright (C) 2022-2022 Fuwn <[email protected]> // SPDX-License-Identifier: GPL-3.0-only +//! This example demonstrates a chain of Germ's capabilities by fetching a +//! Gemini capsule, parsing the response content into an abstract syntax tree, +//! and converting the abstract syntax tree back to Gemtext, identical to the +//! Gemini response content. + fn main() { - match germ::request::blocking::request( - &url::Url::parse("gemini://fuwn.me/").unwrap(), - ) { - Ok(response) => println!( - "{}", - germ::ast::Ast::from_string( - &*response.content().clone().unwrap_or_else(|| "".to_string()) - ) - .to_gemtext() - ), + // Form a valid URL to a Gemini capsule + let url = url::Url::parse("gemini://fuwn.me/").unwrap(); + // Perform a blocking request to the Gemini capsule + let request = germ::request::blocking::request(&url); + + match request { + // If the request was successful: + Ok(response) => { + // Obtain the content of the Gemini response + let response_content = + &*response.content().clone().unwrap_or_else(|| "".to_string()); + // Parse the Gemini response content into an abstract syntax tree + let ast = germ::ast::Ast::from_string(response_content); + // Convert the abstract syntax tree back to Gemtext, identical to the + // Gemini response content, constructed from the parsed abstract syntax + // tree + let gemtext = ast.to_gemtext(); + + // Print the Gemtext + println!("{}", gemtext) + } + // If the request was unsuccessful, do nothing Err(_) => {} } } |