4 releases (breaking)
Uses old Rust 2015
0.9.1 | Jul 6, 2015 |
---|---|
0.8.0 | Jun 8, 2015 |
0.2.0 | Apr 9, 2015 |
0.1.0 | Apr 9, 2015 |
#1389 in HTTP server
36 downloads per month
28KB
357 lines
API Docs can be found here
Rust Firebase
Rust based library for interacting with the Firebase REST API.
Load the crate!
Don't forget to include the library in your project:
extern crate firebase;
use firebase::Firebase;
Creating a Firebase reference
Simple
You can currently create a simple reference to your firebase server:
let firebase = Firebase::new("https://<your-firebase>.firebaseio.com");
Authenticated
Or you can create an authenticated connection by supplying your auth token:
let firebase = Firebase::authed("https://<your-firebase>.firebaseio.com", "<token>");
NOTE: You must send your requests through HTTPS or Firebase will reject it. Not specifying HTTPS will also result in an error: ParseError::UrlIsNotHTTPS
Walking the database
Reference nested objects in your server like so:
let show = firebase.at("/shows/futurama"); // points to /shows/futurama
let episode = show.at("s10/meanwhile"); // points to /shows/futurama/s10/meanwhile
Slashes and .json extensions will be handled accordingly:
// All of the following are equivalent:
let show = firebase.at("/shows/futurama.json");
let show = firebase.at("shows/futurama/");
let show = firebase.at("/shows/futurama/");
Working with data
Reading data
Reading data can be done with a simple call to .get()
let response = show.get();
Writing data
let description = episode.at("description");
let response = description.set("the last episode");
Pushing data
let episodes = firebase.at("/shows/futurama/episodes");
let response = episodes.push("The Lost Episode!");
Updating data
let description = episode.at("description");
let response = description.update("the penultimate episode");
Removing data
let episode = firebase.at("/shows/futurama/s10/meanwhile");
let response = episode.remove();
Requests with parameters
let episodes = firebase.at("/shows/futurama/episodes");
let top5 = episodes.order_by("\"imdb\"").limit_to_first(5).get();
The full list of supported parameters are listed here:
order_by
limit_to_first
limit_to_last
start_at
end_at
equal_to
shallow
Not yet there...
Working with JSON values
For now JSON is sent and received as a string literal, an easier method is likely to be implemented in future versions
let json = "{ \"name\": \"David Smith\" }"
let people = firebase.at("/earth/us/indiana");
let response = episodes.push(json);
Dependencies
~11MB
~264K SLoC