forked from pierre/GrammalecteClient
		
	Add simple suggestion
This commit is contained in:
		
							
								
								
									
										36
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								src/lib.rs
									
									
									
									
									
								
							| @@ -57,6 +57,11 @@ pub struct SpellingError { | |||||||
|     pub error_type: String, |     pub error_type: String, | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] | ||||||
|  | pub struct SuggestResult { | ||||||
|  |     suggestions: Vec<String>, | ||||||
|  | } | ||||||
|  |  | ||||||
| pub struct GrammalecteClient { | pub struct GrammalecteClient { | ||||||
|     base_url: String, |     base_url: String, | ||||||
| } | } | ||||||
| @@ -80,7 +85,7 @@ impl GrammalecteClient { | |||||||
|     /// Run spell check on text |     /// Run spell check on text | ||||||
|     pub async fn spell_check(&self, text: &str) -> Result<CheckResult, Box<dyn Error>> { |     pub async fn spell_check(&self, text: &str) -> Result<CheckResult, Box<dyn Error>> { | ||||||
|         let url = format!("{}/gc_text/fr", self.base_url); |         let url = format!("{}/gc_text/fr", self.base_url); | ||||||
|         log::info!("Will use URL {}", url); |         log::debug!("Will use URL {} for spell check", url); | ||||||
|  |  | ||||||
|         let mut params = HashMap::new(); |         let mut params = HashMap::new(); | ||||||
|         params.insert("text", text); |         params.insert("text", text); | ||||||
| @@ -95,6 +100,23 @@ impl GrammalecteClient { | |||||||
|  |  | ||||||
|         Ok(result) |         Ok(result) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /// Ask for word suggestion | ||||||
|  |     pub async fn suggest(&self, token: &str) -> Result<SuggestResult, Box<dyn Error>> { | ||||||
|  |         let url = format!("{}/suggest/fr", self.base_url); | ||||||
|  |         log::debug!("Will use URL {} for word suggestion", url); | ||||||
|  |  | ||||||
|  |         let mut params = HashMap::new(); | ||||||
|  |         params.insert("token", token); | ||||||
|  |  | ||||||
|  |         Ok(reqwest::Client::new() | ||||||
|  |             .post(&url) | ||||||
|  |             .form(¶ms) | ||||||
|  |             .send() | ||||||
|  |             .await? | ||||||
|  |             .json() | ||||||
|  |             .await?) | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| #[cfg(test)] | #[cfg(test)] | ||||||
| @@ -109,4 +131,16 @@ mod test { | |||||||
|         let res = GrammalecteClient::default().spell_check(msg).await.unwrap(); |         let res = GrammalecteClient::default().spell_check(msg).await.unwrap(); | ||||||
|         println!("RESULT = {:#?}", res); |         println!("RESULT = {:#?}", res); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     #[tokio::test] | ||||||
|  |     async fn simple_suggestion() { | ||||||
|  |         let _ = env_logger::builder().is_test(true).try_init(); | ||||||
|  |  | ||||||
|  |         let res = GrammalecteClient::default() | ||||||
|  |             .suggest("bonjou") | ||||||
|  |             .await | ||||||
|  |             .unwrap(); | ||||||
|  |         assert!(res.suggestions.contains(&"bonjour".to_string())); | ||||||
|  |         println!("RESULT = {:#?}", res); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user