Member Contribution Report (Ömer Şafak Bebek) - bounswe/bounswe2023group7 GitHub Wiki

Important Issues Related to the Practice Application

  • #148: The issue is related to initialization of a node js project for backend of the practice app.
  • #151: The issue is related to establishment of database connection of backend of the practice app.
  • #153: The issue is related to addition of swagger options and swagger documentation functionality to our api.
  • #155: The issue is related to addition of jest to backend of the practice app. Jest is used for unit testing.
  • #157: The issue is related to my api functions.
  • #168: The issue is related to api functions that are used for authentication (signup and login). The issue also includes creating a middleware function that verifies the user.
  • #191: The issue is related to creation of login and signup pages for our application. The issue also includes integration of these pages with our backend.
  • #192: The issues is related to creation favorite games page for our application. The issue also includes integration of this page with our backend.

Third-Party URIs

I utilized the Internal Steam Web API API. The api functions that I used are Get App Details and Search Apps.

  • Get App Details

The uri of this function is https://store.steampowered.com/api/appdetails?appids={appIds}&l=en and the method of this function is GET. The function takes appIds as a list seperated with comma as a query parameter and gives details of the applications (from steam) corresponding to these appIds. However, I used this api function just with an appId to get details of an application. Example URI: https://store.steampowered.com/api/appdetails?appids=730&l=en

  • Search Apps

 The uri of this function is https://steamcommunity.com/actions/SearchApps/{searchKey} and the method of this function is GET. The function takes a search key as a request parameter. The function gives a response that includes applications as result of the search with the given key (from steam api database). Example URI: https://steamcommunity.com/actions/SearchApps/counter.

API Functions

I have created six functions. Four of them are used for favorite games feature and two of them are used for authentication.

  • Favorite Games Functions
    • Search Games - GET

    Route: /api/favorite-games/search?searchValue={searchValue}
    Description: This api function takes a search key as a query parameter and gives a response with a list of games. This api function uses Search Apps api function that I mentioned above.
     Example api URI: http://18.185.125.88:8080/api/favorite-games/search?searchValue=Counter

    • Add a game to favorites - POST

    Route: /api/favorite-games?appId={appId}
    Description: This api function takes an appId from the user add the game with that appId to the user's favorites. This function requires an access token in the authorization header to verify the user. This api function uses Get App Detail api function that I mentioned above to get the details of the game with the given appId. 
    Example api URI: http://18.185.125.88:8080/api/favorite-games?appId=730

    • Remove a game from favorites - DELETE

    Route: /api/favorite-games?appId={appId}
    Description: This api function takes an appId from the user and removes the game with that appId from the user's favorites. This function requires an access token in the authorization header to verify the user.
    Example api URI: http://18.185.125.88:8080/api/favorite-games?appId=730

    • Get the user's favorite games - GET

    Route: /api/favorite-games
    Description: This api function takes an appId from the user and removes the game with that appId from the user's favorites. This function requires an access token in the authorization header to verify the user.
    Example api URI: http://18.185.125.88:8080/api/favorite-games

  • Authentication routes
    • Signup Route

    Route: /api/users/signup
    Description: This api function is used to register a user to our database. This function takes a request body which includes email, username and password of the user.
    Example api URI: http://18.185.125.88:8080/api/users/signup

    • Login Route

    Route: /api/users/login
    Description: This api function is used to login our application This function takes a request body which includes identifier (email or username) and password of the user. This function returns an accessToken to user to use it in our api functions which needs authentication
    Example api URI: http://18.185.125.88:8080/api/users/login

Unit Tests

I created 19 unit tests in total. 13 of them are for favorite games functions and 6 of them are for authentication functions. For favorite games functions, I create a user with signup function and get the access token for that user as below.
Screenshot 2023-05-12 at 16 54 00
I created unit test for all of four api functions. These unit tests includes all possible responses that are expected.
/favorite-games/search - GET Screenshot 2023-05-12 at 16 57 02
/favorite-games - POST Screenshot 2023-05-12 at 17 07 57 Screenshot 2023-05-12 at 17 08 14
/favorite-games - DELETE
Screenshot 2023-05-12 at 17 11 21
/favorite-games - GET
Screenshot 2023-05-12 at 17 12 46
/users/signup - POST
Screenshot 2023-05-12 at 17 15 01
/users/login - POST
Screenshot 2023-05-12 at 17 15 57

Unit Test Results

Screenshot 2023-05-12 at 19 24 17

Sample Calls

/favorite-games/search

Method: GET
URI: http://18.185.125.88:8080/api/favorite-games/search?searchValue=counter
Request Headers:
Screenshot 2023-05-12 at 17 18 47
Response:

Status: 200
Body:

[
    {
        "appid": "730",
        "name": "Counter-Strike: Global Offensive",
        "icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/730/69f7ebe2735c366c65c0b33dae00e12dc40edbe4.jpg",
        "logo": "https://cdn.cloudflare.steamstatic.com/steam/apps/730/capsule_184x69.jpg"
    },
    {
        "appid": "10",
        "name": "Counter-Strike",
        "icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/10/6b0312cda02f5f777efa2f3318c307ff9acafbb5.jpg",
        "logo": "https://cdn.cloudflare.steamstatic.com/steam/apps/10/capsule_184x69.jpg"
    },
    {
        "appid": "240",
        "name": "Counter-Strike: Source",
        "icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/240/9052fa60c496a1c03383b27687ec50f4bf0f0e10.jpg",
        "logo": "https://cdn.cloudflare.steamstatic.com/steam/apps/240/capsule_184x69.jpg"
    },
    {
        "appid": "1976440",
        "name": "CounterSide",
        "icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1976440/c1f4a95b95894dac0827b2918193a36c0d617e05.jpg",
        "logo": "https://cdn.cloudflare.steamstatic.com/steam/apps/1976440/capsule_184x69.jpg"
    },
    {
        "appid": "273110",
        "name": "Counter-Strike Nexon: Studio",
        "icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/273110/5c1fafdd68af71dcf0e40917d7c288a3c541e2b7.jpg",
        "logo": "https://cdn.cloudflare.steamstatic.com/steam/apps/273110/capsule_184x69.jpg"
    },
    {
        "appid": "80",
        "name": "Counter-Strike: Condition Zero",
        "icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/80/077b050ef3e89cd84e2c5a575d78d53b54058236.jpg",
        "logo": "https://cdn.cloudflare.steamstatic.com/steam/apps/80/capsule_184x69.jpg"
    },
    {
        "appid": "666220",
        "name": "CS2D",
        "icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/666220/ef00f5299425ba5a443f1e1b33b46395d5d726f5.jpg",
        "logo": "https://cdn.cloudflare.steamstatic.com/steam/apps/666220/capsule_184x69.jpg"
    },
    {
        "appid": "1626460",
        "name": "Over the Counter",
        "icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1626460/014e05df4fc0f386cd341020c38f88a4453bfa86.jpg",
        "logo": "https://cdn.cloudflare.steamstatic.com/steam/apps/1626460/capsule_184x69.jpg"
    },
    {
        "appid": "1486440",
        "name": "Graze Counter GM",
        "icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1486440/3cc1898600aaa0a4c562076d9166409f7626f9f3.jpg",
        "logo": "https://cdn.cloudflare.steamstatic.com/steam/apps/1486440/capsule_184x69.jpg"
    },
    {
        "appid": "2061750",
        "name": "Counterpact",
        "icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/2061750/758e8fa85874830408ad0c2c8e5b7a0c1b94bb34.jpg",
        "logo": "https://cdn.cloudflare.steamstatic.com/steam/apps/2061750/capsule_184x69.jpg"
    }
]

/favorite-games

Method: POST
URI: http://18.185.125.88:8080/api/favorite-games?appId=730
Request Headers:
Screenshot 2023-05-12 at 17 25 02
Response:

 Status: 200
Body:

{
    "message": "The game is added to the favorites",
    "created": {
        "appId": 730,
        "name": "Counter-Strike: Global Offensive",
        "header_image": "https://cdn.akamai.steamstatic.com/steam/apps/730/header.jpg?t=1683566799",
        "email": "[email protected]",
        "_id": "645e4cf726f45a35958c4ac3",
        "__v": 0
    }
}

/favorite-games

Method: DELETE
URI: http://18.185.125.88:8080/api/favorite-games?appId=730
Request Headers:
Screenshot 2023-05-12 at 17 29 49
Response:

 Status: 200
Body:

{
    "message": "The game is removed from favorites"
}

/favorite-games

Method: GET
URI: http://18.185.125.88:8080/api/favorite-games
Request Headers:
Screenshot 2023-05-12 at 17 32 00
Response:

 Status: 200
Body:

[
    {
        "_id": "645d4a967e87002f7a3bee85",
        "appId": 1593500,
        "name": "God of War",
        "header_image": "https://cdn.akamai.steamstatic.com/steam/apps/1593500/header.jpg?t=1650554420",
        "email": "[email protected]",
        "__v": 0
    },
    {
        "_id": "645e4cf726f45a35958c4ac3",
        "appId": 730,
        "name": "Counter-Strike: Global Offensive",
        "header_image": "https://cdn.akamai.steamstatic.com/steam/apps/730/header.jpg?t=1683566799",
        "email": "[email protected]",
        "__v": 0
    }
]

https://store.steampowered.com/api/appdetails?appids=730

Method: GET
URI: https://store.steampowered.com/api/appdetails?appids=730
Request Headers:
Screenshot 2023-05-12 at 17 38 22
Response:

 Status: 200
Body:

{
    "730": {
        "success": true,
        "data": {
            "type": "game",
            "name": "Counter-Strike: Global Offensive",
            "steam_appid": 730,
            "required_age": 0,
            "is_free": true,
            "controller_support": "full",
            "detailed_description": "Counter-Strike: Global Offensive (CS: GO) expands upon the team-based action gameplay that it pioneered when it was launched 19 years ago.<br />\r\n<br />\r\nCS: GO features new maps, characters, weapons, and game modes, and delivers updated versions of the classic CS content (de_dust2, etc.).<br />\r\n<br />\r\n&quot;Counter-Strike took the gaming industry by surprise when the unlikely MOD became the most played online PC action game in the world almost immediately after its release in August 1999,&quot; said Doug Lombardi at Valve. &quot;For the past 12 years, it has continued to be one of the most-played games in the world, headline competitive gaming tournaments and selling over 25 million units worldwide across the franchise. CS: GO promises to expand on CS' award-winning gameplay and deliver it to gamers on the PC as well as the next gen consoles and the Mac.&quot;",
            "about_the_game": "Counter-Strike: Global Offensive (CS: GO) expands upon the team-based action gameplay that it pioneered when it was launched 19 years ago.<br />\r\n<br />\r\nCS: GO features new maps, characters, weapons, and game modes, and delivers updated versions of the classic CS content (de_dust2, etc.).<br />\r\n<br />\r\n&quot;Counter-Strike took the gaming industry by surprise when the unlikely MOD became the most played online PC action game in the world almost immediately after its release in August 1999,&quot; said Doug Lombardi at Valve. &quot;For the past 12 years, it has continued to be one of the most-played games in the world, headline competitive gaming tournaments and selling over 25 million units worldwide across the franchise. CS: GO promises to expand on CS' award-winning gameplay and deliver it to gamers on the PC as well as the next gen consoles and the Mac.&quot;",
            "short_description": "Counter-Strike: Global Offensive (CS: GO) expands upon the team-based action gameplay that it pioneered when it was launched 19 years ago. CS: GO features new maps, characters, weapons, and game modes, and delivers updated versions of the classic CS content (de_dust2, etc.).",
            "supported_languages": "Czech, Danish, Dutch, English<strong>*</strong>, Finnish, French, German, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, Portuguese - Portugal, Portuguese - Brazil, Romanian, Russian, Simplified Chinese, Spanish - Spain, Swedish, Thai, Traditional Chinese, Turkish, Bulgarian, Ukrainian, Greek, Spanish - Latin America, Vietnamese<br><strong>*</strong>languages with full audio support",
            "header_image": "https://cdn.akamai.steamstatic.com/steam/apps/730/header.jpg?t=1683566799",
            "website": "http://blog.counter-strike.net/",
            "pc_requirements": {
                "minimum": "<strong>Minimum:</strong><br><ul class=\"bb_ul\"><li><strong>OS:</strong> Windows® 7/Vista/XP<br></li><li><strong>Processor:</strong> Intel® Core™ 2 Duo E6600 or AMD Phenom™ X3 8750 processor or better<br></li><li><strong>Memory:</strong> 2 GB RAM<br></li><li><strong>Graphics:</strong> Video card must be 256 MB or more and should be a DirectX 9-compatible with support for Pixel Shader 3.0<br></li><li><strong>DirectX:</strong> Version 9.0c<br></li><li><strong>Storage:</strong> 15 GB available space</li></ul>"
            },
            "mac_requirements": {
                "minimum": "<strong>Minimum:</strong><br><ul class=\"bb_ul\"><li><strong>OS:</strong> MacOS X 10.11 (El Capitan) or later<br></li><li><strong>Processor:</strong> Intel Core Duo Processor (2GHz or better)<br></li><li><strong>Memory:</strong> 2 GB RAM<br></li><li><strong>Graphics:</strong> ATI Radeon HD 2400 or better / NVIDIA 8600M or better<br></li><li><strong>Storage:</strong> 15 GB available space</li></ul>"
            },
            "linux_requirements": {
                "minimum": "<strong>Minimum:</strong><br><ul class=\"bb_ul\"><li><strong>OS:</strong> Ubuntu 12.04<br></li><li><strong>Processor:</strong> 64-bit Dual core from Intel or AMD at 2.8 GHz<br></li><li><strong>Memory:</strong> 4 GB RAM<br></li><li><strong>Graphics:</strong> NVIDIA GeForce 8600/9600GT, ATI/AMD Radeon HD2600/3600 (Graphic Drivers: NVIDIA 310, AMD 12.11), OpenGL 2.1<br></li><li><strong>Storage:</strong> 15 GB available space<br></li><li><strong>Sound Card:</strong> OpenAL Compatible Sound Card</li></ul>"
            },
            "developers": [
                "Valve",
                "Hidden Path Entertainment"
            ],
            "publishers": [
                "Valve"
            ],
            "packages": [
                329385,
                298963,
                54029
            ],
            "package_groups": [
                {
                    "name": "default",
                    "title": "Buy Counter-Strike: Global Offensive",
                    "description": "",
                    "selection_text": "Select a purchase option",
                    "save_text": "",
                    "display_type": 0,
                    "is_recurring_subscription": "false",
                    "subs": [
                        {
                            "packageid": 298963,
                            "percent_savings_text": " ",
                            "percent_savings": 0,
                            "option_text": "Counter-Strike: Global Offensive - Free",
                            "option_description": "",
                            "can_get_free_license": "0",
                            "is_free_license": true,
                            "price_in_cents_with_discount": 0
                        },
                        {
                            "packageid": 54029,
                            "percent_savings_text": " ",
                            "percent_savings": 0,
                            "option_text": "Prime Status Upgrade - ₹ 1,190",
                            "option_description": "",
                            "can_get_free_license": "0",
                            "is_free_license": false,
                            "price_in_cents_with_discount": 119000
                        }
                    ]
                }
            ],
            "platforms": {
                "windows": true,
                "mac": true,
                "linux": true
            },
            "metacritic": {
                "score": 83,
                "url": "https://www.metacritic.com/game/pc/counter-strike-global-offensive?ftag=MCD-06-10aaa1f"
            },
            "categories": [
                {
                    "id": 1,
                    "description": "Multi-player"
                },
                {
                    "id": 22,
                    "description": "Steam Achievements"
                },
                {
                    "id": 28,
                    "description": "Full controller support"
                },
                {
                    "id": 29,
                    "description": "Steam Trading Cards"
                },
                {
                    "id": 30,
                    "description": "Steam Workshop"
                },
                {
                    "id": 35,
                    "description": "In-App Purchases"
                },
                {
                    "id": 8,
                    "description": "Valve Anti-Cheat enabled"
                },
                {
                    "id": 15,
                    "description": "Stats"
                },
                {
                    "id": 41,
                    "description": "Remote Play on Phone"
                },
                {
                    "id": 42,
                    "description": "Remote Play on Tablet"
                },
                {
                    "id": 43,
                    "description": "Remote Play on TV"
                }
            ],
            "genres": [
                {
                    "id": "1",
                    "description": "Action"
                },
                {
                    "id": "37",
                    "description": "Free to Play"
                }
            ],
            "screenshots": [
                {
                    "id": 0,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_118cb022b9a43f70d2e5a2df7427f29088b6b191.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_118cb022b9a43f70d2e5a2df7427f29088b6b191.1920x1080.jpg?t=1683566799"
                },
                {
                    "id": 1,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_d196d945c6170e9cadaf67a6dea675bd5fa7a046.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_d196d945c6170e9cadaf67a6dea675bd5fa7a046.1920x1080.jpg?t=1683566799"
                },
                {
                    "id": 2,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_8c9cce9a9dde7b9c020837dcbd4615efe6f77d66.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_8c9cce9a9dde7b9c020837dcbd4615efe6f77d66.1920x1080.jpg?t=1683566799"
                },
                {
                    "id": 3,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_2b9e362287b509bb3864fa7bad654fe1fda0f7ed.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_2b9e362287b509bb3864fa7bad654fe1fda0f7ed.1920x1080.jpg?t=1683566799"
                },
                {
                    "id": 4,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_855c016cde14b7cec5c3d2523589b9054c030010.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_855c016cde14b7cec5c3d2523589b9054c030010.1920x1080.jpg?t=1683566799"
                },
                {
                    "id": 5,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_34090867f1a02b6c17652ba9043e3f622ed985a9.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_34090867f1a02b6c17652ba9043e3f622ed985a9.1920x1080.jpg?t=1683566799"
                },
                {
                    "id": 6,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_77215ea1b454c08a75351a74585a5b089142da3e.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_77215ea1b454c08a75351a74585a5b089142da3e.1920x1080.jpg?t=1683566799"
                },
                {
                    "id": 7,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_110be563b66dde31b3b00dcf7d2f644c50374f07.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_110be563b66dde31b3b00dcf7d2f644c50374f07.1920x1080.jpg?t=1683566799"
                },
                {
                    "id": 8,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_92c05c1cb1319beb15ed92c63b6b1d6f261d2f64.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_92c05c1cb1319beb15ed92c63b6b1d6f261d2f64.1920x1080.jpg?t=1683566799"
                },
                {
                    "id": 9,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_3cef516c1a3c338f2554f3f11790aba3b7c0add7.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_3cef516c1a3c338f2554f3f11790aba3b7c0add7.1920x1080.jpg?t=1683566799"
                },
                {
                    "id": 10,
                    "path_thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_60b4f959497899515f46012df805b0006ef21af6.600x338.jpg?t=1683566799",
                    "path_full": "https://cdn.akamai.steamstatic.com/steam/apps/730/ss_60b4f959497899515f46012df805b0006ef21af6.1920x1080.jpg?t=1683566799"
                }
            ],
            "movies": [
                {
                    "id": 81958,
                    "name": "CS:GO Trailer Long",
                    "thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/81958/movie.293x165.jpg?t=1554409259",
                    "webm": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/81958/movie480.webm?t=1554409259",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/81958/movie_max.webm?t=1554409259"
                    },
                    "mp4": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/81958/movie480.mp4?t=1554409259",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/81958/movie_max.mp4?t=1554409259"
                    },
                    "highlight": true
                },
                {
                    "id": 2028288,
                    "name": "CS: GO Pro Tip Series: TM",
                    "thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/2028288/movie.293x165.jpg?t=1554409287",
                    "webm": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028288/movie480.webm?t=1554409287",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028288/movie_max.webm?t=1554409287"
                    },
                    "mp4": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028288/movie480.mp4?t=1554409287",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028288/movie_max.mp4?t=1554409287"
                    },
                    "highlight": false
                },
                {
                    "id": 2028287,
                    "name": "CS: GO Pro Tip Series: sapphiRe",
                    "thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/2028287/movie.293x165.jpg?t=1554409281",
                    "webm": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028287/movie480.webm?t=1554409281",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028287/movie_max.webm?t=1554409281"
                    },
                    "mp4": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028287/movie480.mp4?t=1554409281",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028287/movie_max.mp4?t=1554409281"
                    },
                    "highlight": false
                },
                {
                    "id": 2028286,
                    "name": "CS: GO Pro Tip Series: AZK",
                    "thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/2028286/movie.293x165.jpg?t=1554409276",
                    "webm": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028286/movie480.webm?t=1554409276",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028286/movie_max.webm?t=1554409276"
                    },
                    "mp4": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028286/movie480.mp4?t=1554409276",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028286/movie_max.mp4?t=1554409276"
                    },
                    "highlight": false
                },
                {
                    "id": 2028285,
                    "name": "CS: GO Pro Tip Series: Fifflaren",
                    "thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/2028285/movie.293x165.jpg?t=1554409299",
                    "webm": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028285/movie480.webm?t=1554409299",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028285/movie_max.webm?t=1554409299"
                    },
                    "mp4": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028285/movie480.mp4?t=1554409299",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028285/movie_max.mp4?t=1554409299"
                    },
                    "highlight": false
                },
                {
                    "id": 2028284,
                    "name": "CS: GO Pro Tip Series: ruggah",
                    "thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/2028284/movie.293x165.jpg?t=1554409270",
                    "webm": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028284/movie480.webm?t=1554409270",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028284/movie_max.webm?t=1554409270"
                    },
                    "mp4": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028284/movie480.mp4?t=1554409270",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028284/movie_max.mp4?t=1554409270"
                    },
                    "highlight": false
                },
                {
                    "id": 2028283,
                    "name": "CS: GO Pro Tip Series: nEiLZiNHo",
                    "thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/2028283/movie.293x165.jpg?t=1554409264",
                    "webm": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028283/movie480.webm?t=1554409264",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028283/movie_max.webm?t=1554409264"
                    },
                    "mp4": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028283/movie480.mp4?t=1554409264",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028283/movie_max.mp4?t=1554409264"
                    },
                    "highlight": false
                },
                {
                    "id": 2028289,
                    "name": "CS: GO Pro Tip Series: Semphis",
                    "thumbnail": "https://cdn.akamai.steamstatic.com/steam/apps/2028289/movie.jpg?t=1554409293",
                    "webm": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028289/movie480.webm?t=1554409293",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028289/movie_max.webm?t=1554409293"
                    },
                    "mp4": {
                        "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028289/movie480.mp4?t=1554409293",
                        "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028289/movie_max.mp4?t=1554409293"
                    },
                    "highlight": false
                }
            ],
            "recommendations": {
                "total": 3781641
            },
            "achievements": {
                "total": 167,
                "highlighted": [
                    {
                        "name": "Someone Set Up Us The Bomb",
                        "path": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/730/9f60ea3c56b4ab248ab598bbd62568b953116301.jpg"
                    },
                    {
                        "name": "Boomala Boomala",
                        "path": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/730/325ccbd68e599083c1597fd90dc6d4265d1ca3b4.jpg"
                    },
                    {
                        "name": "The Hurt Blocker",
                        "path": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/730/9b8627953feca51a56f0c2ac871493c8634a1c07.jpg"
                    },
                    {
                        "name": "Body Bagger",
                        "path": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/730/b11ef0453168cd3d10684e184004f71dcc0faa82.jpg"
                    },
                    {
                        "name": "Corpseman",
                        "path": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/730/60d83a42df84fa5d84910af681370579e3bb16bf.jpg"
                    },
                    {
                        "name": "God of War",
                        "path": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/730/2c2bb56a4f7376b53eeaf8e6d84044460b0d1cf2.jpg"
                    },
                    {
                        "name": "Second to None",
                        "path": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/730/986a53e24114699cb1f230f52b55b27e0de28ecf.jpg"
                    },
                    {
                        "name": "Counter-Counter-Terrorist",
                        "path": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/730/c09cb3fe34841fd1000a48c3b7825c4fde026188.jpg"
                    },
                    {
                        "name": "Rite of First Defusal",
                        "path": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/730/b2027dac5a9883f0f145e78a33e531a58944f3ec.jpg"
                    },
                    {
                        "name": "Short Fuse",
                        "path": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/730/648550738f4845f12aa686a1b4ee8c4a51ec2348.jpg"
                    }
                ]
            },
            "release_date": {
                "coming_soon": false,
                "date": "21 Aug, 2012"
            },
            "support_info": {
                "url": "",
                "email": ""
            },
            "background": "https://cdn.akamai.steamstatic.com/steam/apps/730/page_bg_generated_v6b.jpg?t=1683566799",
            "background_raw": "https://cdn.akamai.steamstatic.com/steam/apps/730/page_bg_generated.jpg?t=1683566799",
            "content_descriptors": {
                "ids": [
                    2,
                    5
                ],
                "notes": "Includes intense violence and blood."
            }
        }
    }
}

/users/signup

Method: POST
URI: http://18.185.125.88:8080/api/users/signup
Request Headers:
Screenshot 2023-05-12 at 19 13 02
Request Body:

{
    "email":"[email protected]",
    "password":"21312312321",
    "username":"test"

}

Response:

 Status: 200
Body:

{
    "message": "Signup is successful"
}

/users/login

Method: POST
URI: http://18.185.125.88:8080/api/users/login
Request Headers:
Screenshot 2023-05-12 at 19 17 25
Request Body:

{
    "identifier":"test",
    "password":"21312312321"
}

Response:

 Status: 200
Body:

{
    "message": "Login is successful",
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QiLCJpYXQiOjE2ODM5MDgyMzh9.QRTubx6rvdXcE7xvQhHefjUJcFuRAUTEDxeJ3OwY3cQ"
}

Other Significant Work

Challenges

  • It was hard for me to create frontend pages.
⚠️ **GitHub.com Fallback** ⚠️