Crate oembed[][src]

Expand description

This crate provides a simple generic implementation of the oEmbed specification version 1.0.

Notes and Caveats

  • No HTTP client mechanism is included; users of this library must provide an implementation of client::Http to functions requiring remote resources.
  • Discovery is not currently supported.
  • XML responses are not currently supported.
  • Some endpoints — not naming names — will return data that doesn’t conform with the specification; such data can’t currently be parsed by this library. No decision on how to address this has been made yet, and suggestions are welcome.

Examples

use std::error::Error;
use std::borrow::Cow;
use oembed::client::*;

struct DummyHttp;

impl Http for DummyHttp {
    fn url_encode<'a>(&mut self, s: &'a str) -> HttpResult<Cow<'a, str>> {
        Ok(s.into())
    }

    fn get(&mut self, _url: &str) -> HttpResult<String> {
        Ok("{
            \"version\": \"1.0\",
            \"type\": \"photo\",
            \"width\": 240,
            \"height\": 160,
            \"title\": \"ZB8T0193\",
            \"url\": \"http://farm4.static.flickr.com/3123/2341623661_7c99f48bbf_m.jpg\",
            \"author_name\": \"Bees\",
            \"author_url\": \"http://www.flickr.com/photos/bees/\",
            \"provider_name\": \"Flickr\",
            \"provider_url\": \"http://www.flickr.com/\"
        }".to_string())
    }
}

let schema = Schema::load_included();
let some_url = "http://www.flickr.com/photos/bees/2341623661/";
let mut http = DummyHttp {};

let response = schema.fetch(&mut http, some_url)
    .expect("Missing provider")
    .expect("Failed to fetch server response");

assert_eq!("ZB8T0193", response.title.unwrap());

Modules

Structs

oEmbed endpoint

oEmbed provider

Endpoint response to an oEmbed request

Enums

Crate-wide error type

Type-specific oEmbed response data