added api page
added login added api.ejs added middleware for authorization check
This commit is contained in:
160
consumerWebsite/views/api.ejs
Normal file
160
consumerWebsite/views/api.ejs
Normal file
@ -0,0 +1,160 @@
|
||||
<!--
|
||||
API Documentation HTML Template - 1.0.1
|
||||
Copyright © 2016 Florian Nicolas
|
||||
Licensed under the MIT license.
|
||||
https://github.com/ticlekiwi/API-Documentation-HTML-Template
|
||||
!-->
|
||||
|
||||
<%- include('top') %>
|
||||
|
||||
<body class="one-content-column-version">
|
||||
<div class="left-menu">
|
||||
<div class="content-logo">
|
||||
<div class="logo">
|
||||
<img alt="platform by Emily van den Heever from the Noun Project" title="platform by Emily van den Heever from the Noun Project" src="images/apilogo.png" height="32" />
|
||||
<span>API Documentation</span>
|
||||
</div>
|
||||
<button class="burger-menu-icon" id="button-menu-mobile">
|
||||
<svg width="34" height="34" viewBox="0 0 100 100"><path class="line line1" d="M 20,29.000046 H 80.000231 C 80.000231,29.000046 94.498839,28.817352 94.532987,66.711331 94.543142,77.980673 90.966081,81.670246 85.259173,81.668997 79.552261,81.667751 75.000211,74.999942 75.000211,74.999942 L 25.000021,25.000058"></path><path class="line line2" d="M 20,50 H 80"></path><path class="line line3" d="M 20,70.999954 H 80.000231 C 80.000231,70.999954 94.498839,71.182648 94.532987,33.288669 94.543142,22.019327 90.966081,18.329754 85.259173,18.331003 79.552261,18.332249 75.000211,25.000058 75.000211,25.000058 L 25.000021,74.999942"></path></svg>
|
||||
</button>
|
||||
</div>
|
||||
<div class="mobile-menu-closer"></div>
|
||||
<div class="content-menu">
|
||||
<div class="content-infos">
|
||||
<div class="info"><b>Version:</b> 1.0.5</div>
|
||||
<div class="info"><b>Last Updated:</b> 15th Sep, 2021</div>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="scroll-to-link active" data-target="content-get-started">
|
||||
<a>GET STARTED</a>
|
||||
</li>
|
||||
<li class="scroll-to-link" data-target="content-get-characters">
|
||||
<a>Get Characters</a>
|
||||
</li>
|
||||
<li class="scroll-to-link" data-target="content-errors">
|
||||
<a>Errors</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="content-page">
|
||||
<div class="content">
|
||||
<div class="overflow-hidden content-section" id="content-get-started">
|
||||
<h1>Get started</h1>
|
||||
<p>
|
||||
The Westeros API provides programmatic access to read Game of Thrones data. Retrieve a character, provide an oauth connexion, retrieve a familly, filter them, etc.
|
||||
</p>
|
||||
<p>
|
||||
To use this API, you need an <strong>API key</strong>. Please contact us at <a href="mailto:jon.snow@nightswatch.wes">jon.snow@nightswatch.wes</a> to get your own API key.
|
||||
</p>
|
||||
</div>
|
||||
<div class="overflow-hidden content-section" id="content-get-characters">
|
||||
<h2>get characters</h2>
|
||||
<p>
|
||||
To get characters you need to make a POST call to the following url :<br>
|
||||
<code class="higlighted break-word">http://api.westeros.com/character/get</code>
|
||||
</p>
|
||||
<br>
|
||||
<h4>QUERY PARAMETERS</h4>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Field</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>secret_key</td>
|
||||
<td>String</td>
|
||||
<td>Your API key.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>search</td>
|
||||
<td>String</td>
|
||||
<td>(optional) A search word to find character by name.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>house</td>
|
||||
<td>String</td>
|
||||
<td>
|
||||
(optional) a string array of houses:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>alive</td>
|
||||
<td>Boolean</td>
|
||||
<td>
|
||||
(optional) a boolean to filter alived characters
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>gender</td>
|
||||
<td>String</td>
|
||||
<td>
|
||||
(optional) a string to filter character by gender:<br> m: male<br> f: female
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>offset</td>
|
||||
<td>Integer</td>
|
||||
<td>(optional - default: 0) A cursor for use in pagination. Pagination starts offset the specified offset.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>limit</td>
|
||||
<td>Integer</td>
|
||||
<td>(optional - default: 10) A limit on the number of objects to be returned, between 1 and 100.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="overflow-hidden content-section" id="content-errors">
|
||||
<h2>Errors</h2>
|
||||
<p>
|
||||
The Westeros API uses the following error codes:
|
||||
</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Error Code</th>
|
||||
<th>Meaning</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>X000</td>
|
||||
<td>
|
||||
Some parameters are missing. This error appears when you don't pass every mandatory parameters.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>X001</td>
|
||||
<td>
|
||||
Unknown or unvalid <code class="higlighted">secret_key</code>. This error appears if you use an unknow API key or if your API key expired.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>X002</td>
|
||||
<td>
|
||||
Unvalid <code class="higlighted">secret_key</code> for this domain. This error appears if you use an API key non specified for your domain. Developper or Universal API keys doesn't have domain checker.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>X003</td>
|
||||
<td>
|
||||
Unknown or unvalid user <code class="higlighted">token</code>. This error appears if you use an unknow user <code class="higlighted">token</code> or if the user <code class="higlighted">token</code> expired.
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -85,4 +85,5 @@
|
||||
<!-- Bootstrap core JavaScript -->
|
||||
<script src="vendor/jquery/jquery.min.js"></script>
|
||||
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="js/api.js"></script>
|
||||
</body>
|
||||
|
@ -1,6 +1,7 @@
|
||||
<%- include('top') %>
|
||||
|
||||
|
||||
|
||||
<header class="slider-main">
|
||||
<div id="carouselExampleIndicators" class="carousel slide carousel-fade" data-ride="carousel">
|
||||
<ol class="carousel-indicators">
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link rel="stylesheet" href="css/sp.css" />
|
||||
<!-- <link rel="stylesheet" href="css/contact.css" /> -->
|
||||
|
||||
<!-- jQuery library -->
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"
|
||||
@ -35,18 +36,23 @@
|
||||
<!-- wait for DOC to be ready -->
|
||||
|
||||
<script>
|
||||
//make document ready
|
||||
$(document).ready(function () {
|
||||
//check if user is logged in
|
||||
app.auth.isLoggedIn(function (error, data) {
|
||||
if (data) {
|
||||
$('#cl-logout-button').show();
|
||||
$('#cl-profile-button').show();
|
||||
$('#cl-login-button').hide();
|
||||
$('#cl-logout-button').show('fast');
|
||||
$('#cl-profile-button').show('fast');
|
||||
$('#cl-login-button').hide('fast');
|
||||
} else {
|
||||
$('#cl-login-button').show();
|
||||
$('#cl-login-button').show('fast');
|
||||
}
|
||||
$('body').show('fast')
|
||||
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-light top-nav fixed-top">
|
||||
@ -69,6 +75,9 @@
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/contact">Contact</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/api">API Doc</a>
|
||||
</li>
|
||||
<!-- profile button -->
|
||||
<div class="form-inline mt-2 mt-md-0">
|
||||
<a id="cl-profile-button" class="btn btn-outline-danger my-2 my-sm-0" href="/profile"
|
||||
@ -84,7 +93,7 @@
|
||||
<button id="cl-logout-button" class="btn btn-outline-danger my-2 my-sm-0"
|
||||
onclick="app.auth.logOut(e => window.location.href='/')" style="display: none;">
|
||||
<i class="fas fa-sign-out"></i>
|
||||
Log Out
|
||||
Logout
|
||||
</button>
|
||||
</div>
|
||||
</ul>
|
||||
|
64
consumerWebsite/views/profile.ejs
Normal file
64
consumerWebsite/views/profile.ejs
Normal file
@ -0,0 +1,64 @@
|
||||
<%- include('top') %>
|
||||
<script type="text/javascript">
|
||||
// Require login to see this page.
|
||||
app.auth.forceLogin()
|
||||
</script>
|
||||
|
||||
<div class="full-title">
|
||||
<div class="container">
|
||||
<h1 class="mt-4 mb-3">Profile
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="centered-content">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-3 border-right">
|
||||
<div class="d-flex flex-column align-items-center text-center p-3 py-5"><img
|
||||
class="rounded-circle mt-5" width="150px"
|
||||
src="https://st3.depositphotos.com/15648834/17930/v/600/depositphotos_179308454-stock-illustration-unknown-person-silhouette-glasses-profile.jpg">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-5 border-right">
|
||||
<div class="p-3 py-5">
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<h4 class="text-right">Profile Settings</h4>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-md-6"><label class="labels">Name</label><input type="text"
|
||||
class="form-control" placeholder="first name" value=""></div>
|
||||
<div class="col-md-6"><label class="labels">Surname</label><input type="text"
|
||||
class="form-control" value="" placeholder="surname"></div>
|
||||
</div>
|
||||
<div class="row mt-3">
|
||||
<div class="col-md-12"><label class="labels">Mobile Number</label><input type="text"
|
||||
class="form-control" placeholder="enter phone number" value=""></div>
|
||||
<div class="col-md-12"><label class="labels">Address</label><input type="text"
|
||||
class="form-control" placeholder="enter address" value=""></div>
|
||||
<div class="col-md-12"><label class="labels">Email</label><input type="text"
|
||||
class="form-control" placeholder="enter email" value=""></div>
|
||||
<div class="col-md-12"><label class="labels">Password</label><input type="text"
|
||||
class="form-control" placeholder="enter password" value=""></div>
|
||||
<div class="col-md-12"><label class="labels">Password</label><input type="text"
|
||||
class="form-control" placeholder="re enter password" value=""></div>
|
||||
</div>
|
||||
<div class="mt-2 text-center">
|
||||
<button class="btn btn-sm btn-secondary change-password-button" type="button">Change
|
||||
Password</button>
|
||||
</div>
|
||||
<div class="mt-5 text-center"><button class="btn btn-primary profile-button" type="button">Save
|
||||
Profile</button></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<%- include('bot') %>
|
||||
|
||||
|
@ -1,4 +1,7 @@
|
||||
<%- include('logintop') %>
|
||||
<script type="text/javascript">
|
||||
app.auth.redirectIfLoggedIn();
|
||||
</script>
|
||||
|
||||
<body>
|
||||
<section class="wrapper">
|
||||
@ -7,7 +10,9 @@
|
||||
<header>Signup</header>
|
||||
<!-- localhost/api/v0/user/register -->
|
||||
<!-- evalAjax Fires when status 200 is returned -->
|
||||
<form action="user/register" onsubmit="formAJAX(this)" evalAJAX="app.auth.logInRedirect();">
|
||||
<form action="auth/register" onsubmit="formAJAX(this)" evalAJAX="app.auth.logInRedirect();">
|
||||
<input type="text" name="firstname" placeholder="First Name" required />
|
||||
<input type="text" name="lastname" placeholder="Last Name" required />
|
||||
<input type="text" name="username" placeholder="Username" required />
|
||||
<input type="text" name="email" placeholder="Email" required />
|
||||
<input type="text" name="address" placeholder="Address" required />
|
||||
@ -22,10 +27,10 @@
|
||||
<header>Login</header>
|
||||
<div class="card-header shadow actionMessage" style="display:none"></div>
|
||||
<!-- evalAjax Fires when status 200 is returned -->
|
||||
<form action="user/login" onsubmit="formAJAX(this)"
|
||||
<form action="auth/login" onsubmit="formAJAX(this)"
|
||||
evalAJAX="app.auth.homeRedirect();
|
||||
app.auth.setToken(data.token);
|
||||
app.auth.setUserId(data.userId);
|
||||
app.auth.setUserId(data.userid);
|
||||
app.auth.setUsername(data.username);
|
||||
">
|
||||
|
||||
|
@ -1,11 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<meta http-equiv="cleartype" content="on">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
|
||||
@ -18,6 +20,12 @@
|
||||
<link href="css/learnmore.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link href="css/contact.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/api.css" media="all">
|
||||
<!-- weird api page cdn -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,500;1,300&family=Source+Code+Pro:wght@300&display=swap" rel="stylesheet">
|
||||
|
||||
|
||||
<!-- jQuery library -->
|
||||
@ -27,32 +35,40 @@
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
|
||||
integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
|
||||
crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<!-- weird api page cdn -->
|
||||
<!-- https://github.com/floriannicolas/API-Documentation-HTML-Template/tree/master -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/highlight.min.js"></script>
|
||||
<!-- https://github.com/floriannicolas/API-Documentation-HTML-Template/tree/master -->
|
||||
<script>
|
||||
hljs.initHighlightingOnLoad();
|
||||
</script>
|
||||
<!-- jquery app.js -->
|
||||
<script src="js/app.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- javascript function to check if user is auth -->
|
||||
<!-- wait for DOC to be ready -->
|
||||
<script>
|
||||
//make document ready
|
||||
$(document).ready(function () {
|
||||
//check if user is logged in
|
||||
app.auth.isLoggedIn(function (error, data) {
|
||||
if (data) {
|
||||
$('#cl-logout-button').show();
|
||||
$('#cl-profile-button').show();
|
||||
$('#cl-login-button').hide();
|
||||
$('#cl-logout-button').show('fast');
|
||||
$('#cl-profile-button').show('fast');
|
||||
$('#cl-login-button').hide('fast');
|
||||
} else {
|
||||
$('#cl-login-button').show();
|
||||
$('#cl-login-button').show('fast');
|
||||
}
|
||||
$('body').show('fast')
|
||||
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<body>
|
||||
<nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-light top-nav fixed-top">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="/">
|
||||
@ -73,22 +89,24 @@
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/contact">Contact</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/api">API Doc</a>
|
||||
</li>
|
||||
<!-- profile button -->
|
||||
<div class="form-inline mt-2 mt-md-0">
|
||||
<a id="cl-profile-button" class="btn btn-outline-danger my-2 my-sm-0" href="/profile"
|
||||
style="display: none;">
|
||||
<i class="fas fa-sign-out"></i>
|
||||
Profile
|
||||
<!-- Profile Button -->
|
||||
<a id="cl-profile-button" class="btn btn-outline-info btn-sm my-2 my-sm-0" href="/profile" style="display: none;">
|
||||
<i class="fas fa-sign-out"></i> Profile
|
||||
</a>
|
||||
<a id="cl-login-button" class="btn btn-outline-danger my-2 my-sm-0"
|
||||
onclick="app.auth.forceLogin()" style="display: none;">
|
||||
<i class="fas fa-sign-out"></i>
|
||||
Login
|
||||
|
||||
<!-- Login Button -->
|
||||
<a id="cl-login-button" class="btn btn-outline-danger btn-sm my-2 my-sm-0" onclick="app.auth.forceLogin()" style="display: none;">
|
||||
<i class="fas fa-sign-out"></i> Login
|
||||
</a>
|
||||
<button id="cl-logout-button" class="btn btn-outline-danger my-2 my-sm-0"
|
||||
onclick="app.auth.logOut(e => window.location.href='/')" style="display: none;">
|
||||
<i class="fas fa-sign-out"></i>
|
||||
Log Out
|
||||
|
||||
<!-- Logout Button -->
|
||||
<button id="cl-logout-button" class="btn btn-outline-danger btn-sm my-2 my-sm-0" href="/" onclick="app.auth.logOut(e => window.location.href='/')" style="display: none;">
|
||||
<i class="fas fa-sign-out"></i> Logut
|
||||
</button>
|
||||
</div>
|
||||
</ul>
|
||||
@ -97,36 +115,4 @@
|
||||
</nav>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
<!--
|
||||
<ul class="navbar-nav ms-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/news">News</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/contact">Contact</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/profile">Profile</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<div class="form-inline mt-2 mt-md-0">
|
||||
<a id="cl-login-button" class="btn btn-outline-danger my-2 my-sm-0"
|
||||
onclick="app.auth.forceLogin()" style="display: none;">
|
||||
<i class="fas fa-sign-out"></i>
|
||||
Login
|
||||
</a>
|
||||
<button id="cl-logout-button" class="btn btn-outline-danger my-2 my-sm-0"
|
||||
onclick="app.auth.logOut(e => window.location.href='/')" style="display: none;">
|
||||
<i class="fas fa-sign-out"></i>
|
||||
Log Out
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
-->
|
||||
</html>
|
Reference in New Issue
Block a user