AWS ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ 7์ฅ (p189)
-
js/config.js
var configConstants = { auth0: { domain: '1yangsh.us.auth0.com', clientId: 'Bkia8NNISRVmEw6M7lANfYmvoutaOVdD' }, // user-profile API ํธ์ถ URL apiBaseUrl: 'https://tzecikd5j7.execute-api.us-east-1.amazonaws.com/dev', // get-file-list API ํธ์ถ URL getFileListApiUrl: 'https://x9p0er0szb.execute-api.us-east-1.amazonaws.com/dev' // ์ถ๊ฐ };
-
c:\serverless\24-hour-video\js\video-controller.js
// P209 var videoController = { data: { config: null }, uiElements: { videoCardTemplate: null, videoList: null }, init: function(config) { // index.html ๋ฌธ์์ id ์์ฑ์ด video-template, video-list์ธ ์์๋ฅผ ์ฐธ์กฐ this.uiElements.videoCardTemplate = $('#video-template'); this.uiElements.videoList = $('#video-list'); // config.js ํ์ผ์ ์๋ ๋ด์ฉ์ ์ฐธ์กฐ this.data.config = config; this.getVideoList(); }, // get-video-list API๋ฅผ ํธ์ถ getVideoList: function() { var that = this; // get-video-list API ํธ์ถ URL + ๋ฆฌ์์ค ์ด๋ฆ // videos ๋ฆฌ์์ค๋ฅผ GET ๋ฐฉ์์ผ๋ก ํธ์ถ --> get-video-list ๋๋ค ํจ์๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ ๋ฐ์ var url = this.data.config.getFileListApiUrl + '/videos'; $.get(url, function(data, status) { that.updateVideoFrontPage(data); }); }, // get-video-list ๋๋ค ํจ์์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ชฉ๋ก์ผ๋ก ํ๋ฉด์ ์ถ๋ ฅ updateVideoFrontPage: function(data) { console.log(data); // TODO } };
-
c:\serverless\24-hour-video\js\main.js
// ์ฆ์ ์คํ ํจ์ (function() { console.log("### 1"); // ํด๋น ์น ํ์ด์ง ๋ฌธ์๊ฐ ๋ก๋ฉ๋๋ฉด ์ค์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ์ค์ $(document).ready(function() { console.log("### 2"); // user-controller.js์ ์ ์ธ๋์ด ์๋ userController ๊ฐ์ฒด์ init ๋ฉ์๋๋ฅผ ํธ์ถ // coonfig.js์ ์ ์ธ๋์ด ์๋ configConstants ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ์ ๋ฌ userController.init(configConstants); videoController.init(configConstants); /* ์ถ๊ฐ */ }); })();
-
c:\serverless\24-hour-video\index.html
<!-- (์๋ต) --> <!-- Main jumbotron for a primary marketing message or call to action --> <div class="jumbotron"> <!-- ๋๋ต 66๋ฒ ๋ผ์ธ <div class="container"> <h1>Hello, world!</h1> <p>This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.</p> <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more »</a></p> </div> --> <!-- ์ถ๊ฐ ์์: P209 ์ฝ๋ ์ฐธ์กฐ --> <div class="container" id="video-list-container"> <div id="video-template" class="col-md-6 col"> <div class="video-card"> <video width="100%" height="100%" controls> <source type="video/mp4"> ์ง์ํ์ง ์๋ ํ์ </video> </div> </div> <div calss="row"> <ul id="video-list"> </ul> </div> </div> <!-- ์ถ๊ฐ ๋ --> </div> <!-- (์๋ต) --> <script src="https://cdn.auth0.com/js/lock/11.27/lock.min.js"></script> <script src="js/config.js"></script> <script src="js/user-controller.js"></script> <script src="js/video-controller.js"></script> <!-- ์ถ๊ฐ --> <script src="js/main.js"></script> <!-- (์๋ต) -->
-
c:\serverless\24-hour-video\js\video-controller.js
updateVideoFrontPage: function(data) { console.log(data); // <ul id="video-list"> // <li url="https://serverless...jini.s3.amazonaws.com/my+video/my+video-1080p.mp4">๋์์ ํ์ผ๋ช </li> // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ // baseUrl urls.Key urls.Key์์ ํ์ผ๋ช ๋ง ์ถ์ถ var baseUrl = data.baseUrl; var urls = data.urls; /* for (var i = 0; i < urls.length; i ++) { var url = urls[i]; var key = url.Key; var filename = key.split('/')[1]; var litag = '<li url="' + baseUrl + '/' + key + '">' + filename + '</li>'; $('#video-list').append(litag); } */ urls.forEach(url => { var key = url.Key; var filename = key.split('/')[1]; var litag = `<li url="${baseUrl}/${key}">${filename}</li>`; $('#video-list').append(litag); }); }
-
controller.js
// ์ถ๊ฐ // ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์(์ด๋ฒคํธ ํธ๋ค๋ฌ)๋ฅผ ์ ์ // https://developer.mozilla.org/ko/docs/Web/HTML/Element/Video wireEvents: function() { // id ์์ฑ(attibute) ๊ฐ์ด video-list์ธ ์์(element, tag) ์๋์์ // li ์์์ click ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์ํํ ๋์์ ์ ์ $('#video-list').on('click', 'li', function() { // ํด๋ฆญํ li ํ๊ทธ(์์)์ url ์์ฑ์ ๊ฐ์ ๊ฐ์ ธ์์ url ๋ณ์์ ํ ๋น var url = $(this).attr('url'); /* <video width="100%" height="100%" controls> <!-- video ํ๊ทธ์ ์ฌ์ฉ๋ ๋์์์ ์์ค --> <!-- src ์์ฑ์ ๋์์์ ์ฃผ์๋ฅผ ์ถ๊ฐํ๋ฉด ์ฌ์์ด ๊ฐ๋ฅ --> <source type="video/mp4"> ์ง์ํ์ง ์๋ ํ์ </video> */ // source ํ๊ทธ(์์)์ src ์์ฑ์ ๊ฐ์ผ๋ก url ๋ณ์์ ๊ฐ์ ์ค์ $('source').attr('src', url); // video ํ๊ทธ(์์)์ ์ค์ ๋ ๋์์ ํ์ผ์ ์ฝ์ด๋ค๋ฆผ $('video').load(); }); }