scoopit-api 0.17.0

Rust client for www.scoop.it REST API
Documentation
use reqwest::Method;
use scoopit_api::{
    serde_qs, types::SourceTypeData, CreateSuggestionEngineSourceRequest,
    DeleteSuggestionEngineSourceRequest, GetSuggestionEngineSourcesRequest, UpdateRequest,
    UpdateSuggestionEngineSourceRequest,
};

#[test]
fn test_source_requests_serialization() {
    let get_source = GetSuggestionEngineSourcesRequest {
        suggestion_engine_id: 123,
    };
    assert_eq!(
        "",
        serde_qs::to_string(&get_source).expect("This must be serializable")
    );

    let delete_source = DeleteSuggestionEngineSourceRequest {
        suggestion_engine_id: 123,
        source_id: 456,
    };
    assert_eq!("se/123/sources/456", delete_source.endpoint());
    assert_eq!("", String::from_utf8_lossy(&delete_source.body().unwrap()));
    assert_eq!(Method::DELETE, delete_source.method());

    let update_source = UpdateSuggestionEngineSourceRequest {
        suggestion_engine_id: 123,
        source_id: 456,
        name: None,
    };
    assert_eq!("se/123/sources/456", update_source.endpoint());
    assert_eq!("", String::from_utf8_lossy(&update_source.body().unwrap()));
    assert_eq!(Method::POST, update_source.method());

    let update_source = UpdateSuggestionEngineSourceRequest {
        suggestion_engine_id: 123,
        source_id: 456,
        name: Some("foobar".into()),
    };
    assert_eq!("se/123/sources/456", update_source.endpoint());
    assert_eq!(
        "name=foobar",
        String::from_utf8_lossy(&update_source.body().unwrap())
    );

    let create_twitter_source = CreateSuggestionEngineSourceRequest {
        suggestion_engine_id: 123,
        name: None,
        source_data: SourceTypeData::TwitterFollowUser {
            twitter_user: "bluxte".into(),
        },
    };
    assert_eq!("se/123/sources", create_twitter_source.endpoint());
    assert_eq!(
        "type=twitter_follow_user&twitterUser=bluxte",
        String::from_utf8_lossy(&create_twitter_source.body().unwrap())
    );
    assert_eq!(Method::PUT, create_twitter_source.method());
}