summaryrefslogtreecommitdiff
path: root/src/serve.rs
blob: ee0e5ff31c476cbd41ed221374d76b49515462af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use crate::database;
use crate::errors::Error;
use crate::spotify;
use rocket::response::Redirect;

#[get("/callback/<name>/<lobby>/<url>")]
pub async fn get_tracks(name: String, lobby: String, url: String) -> Result<(), Error> {
    let (spotify_uid, spotify_client) = spotify::auth_user(name.as_ref(), url).await?;
    let uid = database::insert_user(spotify_uid.as_ref(), lobby.as_ref())?;
    spotify::load_profile(uid, spotify_uid.as_ref(), spotify_client).await
}

#[get("/token/<name>")]
pub fn token(name: String) -> Result<Redirect, Error> {
    Ok(Redirect::to(spotify::token(name)?))
}

#[get("/match/<lobby>/<names>")]
pub fn match_users(lobby: String, names: String) -> Result<String, Error> {
    //let bytes = base64::decode_config(names, base64::URL_SAFE).unwrap();
    //let names = String::from_utf8(bytes).unwrap();
    let names: Vec<&str> = names.split(',').collect();
    database::match_users(lobby, names.as_slice())
}

#[get("/users/<lobby>")]
pub fn get_users(lobby: String) -> Result<String, Error> {
    database::get_users(lobby.as_str())
}

//#[post("/lobby", format = "application/json", data = "<name>")]
#[post("/lobby/<name>")]
pub fn create_lobby(name: String) -> Result<String, Error> {
    database::create_lobby(name.as_str())
}