0
//Express
var express = require('express');
var server = express();

//Steam
var SteamWebAPI = require('steamwebapi').SteamWebAPI;
SteamWebAPI.setAPIKey('XXXXXXXXXXXXXXXXXXXXXXXXXXXX');

//Steam - Recently Played Games
server.get('/games', function (req, res) {
    SteamWebAPI.getRecentlyPlayedGames('76561198190043289', 5, function(response) {
        res.json(response.response.games);
    });
});

//Localhost
server.listen(3000, function () {
    console.log('Server: ');
});

This is my output:

[{"appid":730,"name":"Counter-Strike: Global Offensive","playtime_2weeks":620,"playtime_forever":4016,"img_icon_url":"69f7ebe2735c366c65c0b33dae00e12dc40edbe4","img_logo_url":"d0595ff02f5c79fd19b06f4d6165c3fda2372820"}]

Ok, if you go to website: https://steamid.io/ ,you enter your name, press button 'lookup', and you get your IDs. How do I make that? Is it possible to make that user enter his name/id and he get informations. This way I'm only one who can enter user, and he gets text, images according to his request.

Like, I learned a lot about Steam Web Api these days but I still haven't figured out how to display data. Some cool guy helped me, but we used Angular, I'm still not familiar with it, I'm planning to learn Ember.js these days, but are they any alternatives?

halfer
  • 19,824
  • 17
  • 99
  • 186
Benjamin
  • 65
  • 2
  • 9

2 Answers2

0

If you wanna do as your example, it seems you miss to do the front part, and some back end too.

First you have to create a form. In your case, just an input to ask the user ID and a submit button could be enough. Then you have created your form in a html file, render it with the render function gave by Express framework (http://expressjs.com/en/4x/api.html#app.render)

And a light reminder on the html form (http://www.w3schools.com/html/html_forms.asp)

But you have to render it, to a specific URL, for example

    // Render your basic form
    // The form is in the form.html file
    // By default, views have to be placed into the view or views folder, I don't know exactly no more
    server.get('/ask_user_id', function (req, res) {
         app.render('form', function(err, html){
             if(err) return res.send(err);
             else    return res.send(html)             
         });
    });

So if you go on localhost:3000/ask_user_id your form will be rendered

Second when a user write its ID into your input and submit the form, you have to retrieve theses info, and then call your steam API. So, if the action of your form is a POST, and the Url to submit is /user_infos, and the input for user ID's name is userId, here will be the code.

    // Render your basic form
    // The form is in the form.html file
    // By default, views have to be placed into the view or views folder, I don't know exactly no more
    server.get('/ask_user_id', function (req, res) {
         app.render('form', function(err, html){
             if(err) return res.send(err);
             else    return res.send(html)             
         });
    });

    // You have to have a route that handle your form submission
    server.post('/user_infos', function (req, res) {

        // All your form submitted is in your req.body
        // So retrieve the userID
        var _userID = req.body.userId;

        // Then sent the variable to the SteamAPI
        SteamWebAPI.getRecentlyPlayedGames(_userID, 5, function(response) {
            return res.json(response.response.games);
        });

    });

Hope it helps

Chilipote
  • 1,037
  • 1
  • 8
  • 30
  • Awesomely explained! I get those things...I'll try this, and I'll tell you if it works or not...If i edit comment, do you get notification? – Benjamin Mar 01 '16 at 00:48
  • 1
    I Don't know for editing, but If you add some, yes :). Good luck :) – Chilipote Mar 01 '16 at 01:11
0

In your controller/Factory, make sure you have a callback function to get the response from the server.

$scope.postData = function(){
    $http.post('/', {data: someData})
    .then(function(response){
        console.log(JSON.stringify(response.data));
});
Vinay
  • 548
  • 2
  • 12