Browse Source

Handle ExcludedSearchPhrasesResponse.

main
Titouan Rigoudy 1 year ago
parent
commit
6c9c5c0959
2 changed files with 51 additions and 0 deletions
  1. +1
    -0
      proto/src/server/constants.rs
  2. +50
    -0
      proto/src/server/response.rs

+ 1
- 0
proto/src/server/constants.rs View File

@ -16,4 +16,5 @@ pub const CODE_PARENT_MIN_SPEED: u32 = 83;
pub const CODE_PARENT_SPEED_RATIO: u32 = 84;
pub const CODE_WISHLIST_INTERVAL: u32 = 104;
pub const CODE_ROOM_TICKERS: u32 = 113;
pub const CODE_EXCLUDED_SEARCH_PHRASES: u32 = 160;
pub const CODE_CANNOT_CONNECT: u32 = 1001;

+ 50
- 0
proto/src/server/response.rs View File

@ -17,6 +17,7 @@ use crate::{User, UserStatus};
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum ServerResponse {
ConnectToPeerResponse(ConnectToPeerResponse),
ExcludedSearchPhrasesResponse(ExcludedSearchPhrasesResponse),
FileSearchResponse(FileSearchResponse),
LoginResponse(LoginResponse),
PeerAddressResponse(PeerAddressResponse),
@ -49,6 +50,10 @@ impl ValueEncode for ServerResponse {
encoder.encode_u32(CODE_CONNECT_TO_PEER)?;
response.encode_to(encoder)?;
}
ServerResponse::ExcludedSearchPhrasesResponse(ref response) => {
encoder.encode_u32(CODE_EXCLUDED_SEARCH_PHRASES)?;
response.encode_to(encoder)?;
}
ServerResponse::FileSearchResponse(ref response) => {
encoder.encode_u32(CODE_FILE_SEARCH)?;
response.encode_to(encoder)?;
@ -130,6 +135,10 @@ impl ValueDecode for ServerResponse {
let response = decoder.decode()?;
ServerResponse::ConnectToPeerResponse(response)
}
CODE_EXCLUDED_SEARCH_PHRASES => {
let response = decoder.decode()?;
ServerResponse::ExcludedSearchPhrasesResponse(response)
}
CODE_FILE_SEARCH => {
let response = decoder.decode()?;
ServerResponse::FileSearchResponse(response)
@ -260,6 +269,38 @@ impl ValueDecode for ConnectToPeerResponse {
}
}
/*=========================*
* EXCLUDED SEARCH PHRASES *
*=========================*/
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ExcludedSearchPhrasesResponse {
pub phrases: Vec<String>,
}
impl From<ExcludedSearchPhrasesResponse> for ServerResponse {
fn from(response: ExcludedSearchPhrasesResponse) -> Self {
Self::ExcludedSearchPhrasesResponse(response)
}
}
impl ValueEncode for ExcludedSearchPhrasesResponse {
fn encode_to(
&self,
encoder: &mut ValueEncoder,
) -> Result<(), ValueEncodeError> {
encoder.encode(&self.phrases)
}
}
impl ValueDecode for ExcludedSearchPhrasesResponse {
fn decode_from(decoder: &mut ValueDecoder) -> Result<Self, ValueDecodeError> {
let phrases = decoder.decode()?;
Ok(ExcludedSearchPhrasesResponse { phrases })
}
}
/*=============*
* FILE SEARCH *
*=============*/
@ -1155,6 +1196,15 @@ mod tests {
))
}
#[test]
fn roundtrip_excluded_search_phrases() {
roundtrip(ServerResponse::ExcludedSearchPhrasesResponse(
ExcludedSearchPhrasesResponse {
phrases: vec!["yo".to_string(), "lo".to_string()],
},
))
}
#[test]
fn roundtrip_file_search() {
roundtrip(ServerResponse::FileSearchResponse(FileSearchResponse {


Loading…
Cancel
Save