simple-ssdp-client 0.1.4

A simple yet functional SSDP Client Written in Rust
Documentation
# A simple yet functional SSDP Client Written in Rust

A little personal experiment to:
1) learn the Rust's networking (and specifically UDP related) APIs
1) implement a working and easy to use SSDP Client 
1) learn a little more about SSDP

Currently, ~~documentation and~~ testing coverage is pretty lacking. This will be addressed in subsequent commits.

## Building

    cargo build

### Release Candidate

    cargo build --release

## Running

### Local Testing

    $ ./target/debug/simple_ssdp_client --help

### Release Candidate

    $ ./target/release/simple_ssdp_client --help

## Example Usage
   
### As an App
    
    $ ./target/debug/simple_ssdp_client --server=roku
    {"server" : "roku/9.2.0 upnp/1.0 roku/9.2.0", "location: "http://192.168.1.25:8060/"}
    
#### Showing SSDP M-Search Payload

    $ ./target/debug/simple_ssdp_client --print-payload

        M-SEARCH * HTTP/1.1
        Host: 239.255.255.250:1900
        Man: "ssdp:discover"
        ST: ssdp:all
        MX: 5

### As a Lib

### Cargo.toml
    
    ssdp = { package = "simple-ssdp-client", version = "0.1.4" }

### mod declaration

    extern crate ssdp;
    

#### Code

    # optionally if you wanted to use a server response outside of this context
    let mut url = String::new(); 
    let print_headers = |response_headers: &ResponseHeaders| {
        fn determine_server(abc: &ArgMatches) -> String {
            match abc.value_of("server_pattern") {
                Some(server) => { return String::from(server) }
                None => { return String::new() }
            };
        }
        let resolved_server = determine_server( &args());
        if response_headers.server.contains(resolved_server.as_str()) {
            println!("{{\"server\" : \"{}\", \"location: \"{}\"}}", response_headers.server, response_headers.location);
            url = response_headers.location.clone(); # see above
            exit(0);
        }
    };

    ssdp::listen( print_headers)