Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Promises... #1

Open
antonaut opened this issue Feb 26, 2018 · 6 comments
Open

Promises... #1

antonaut opened this issue Feb 26, 2018 · 6 comments

Comments

@antonaut
Copy link

antonaut commented Feb 26, 2018

Hade lite trist och såg att @mold och @JohnTu hade lekt lite. Ville också vara med. Såg lite på ´src/server/index.js`. Snyggade till app.get('/refresh-token',....) lite. Har inte rättigheter till repot, men föreslår att den kan skrivas ungefär såhär. Det pajjar iofs HTML:en vid ett fel, men tyckte det blev snyggare. Vad tycker ni? :D

Det behövs en npm install --save bluebird i tillägg. :)

index.js:

const Promise = require('bluebird');
const readFileAsync = Promise.promisify(require('fs').readFile);

/*** Random stuff ***/



const fillInRefreshToken = ({data, token}) => {
    const authUrl = spotify.playbackAPI.getAuthUrl();
    data = data.replace(/{authUrl}/g, authUrl);
    data = data.replace(/{refreshToken}/g, token);
    return Promise().resolve(data);
}

// Spotify refresh token end point
app.get('/refresh-token', (req, res) => {
    
    if (!req.query.code || req.query.state != 'auth') {
        console.info('no code supplied in request or got weird state');
        res.send('pls send code in query, kthx');
        return;
    }

    Promise.props({
        'data': fs.readFileAsync(__dirname + '/refresh-token.html', 'utf8'),
        'token': spotify.playbackAPI.getRefreshToken(req.query.code)})
        .then(fillInRefreshToken)
        .then((data) => Promise.resolve(res.send(data)))
        .catch((err) => {
            if (err.response) {
                err = err.response;
                err = `${err.status} (${err.data.error}) ${err.data.error_description}`;
            }
            console.error(err);
            res.send(err)
        });
});

https://github.com/mold/snoppify/blob/624397ef3bd3d20303226050880ab75371a35759/src/server/index.js#L27

@mold
Copy link
Collaborator

mold commented Mar 2, 2018

haha tack för hjälpen!!! Jag överlåter det här till @JohnTu eftersom han har ansvaret (läs git-blame:n) för snoppify-kontrollern

@johnbrynte
Copy link
Collaborator

Vad kul :D Riktigt snyggt!

Nu har vi ju testat också, funkade bra! Lite knas i början sen flöt det på hela kvällen. Flera ville att vi skulle göra en "riktig" version också, så om @mold vill tycker jag vi ska göra den lite mer tillgänglig, och då får du gärna va med! Man kan ju göra en desktop-app med webkit tom om man vill paketera det snyggt! 🎉

@mold
Copy link
Collaborator

mold commented Mar 4, 2018 via email

@mold
Copy link
Collaborator

mold commented Mar 4, 2018 via email

@johnbrynte
Copy link
Collaborator

Ja precis!
host

@antonaut
Copy link
Author

Fett!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants