Skip to content
This repository was archived by the owner on Apr 17, 2020. It is now read-only.

Commit f968900

Browse files
author
Your Name
committed
preparing new lessons
1 parent c27b1a8 commit f968900

File tree

8 files changed

+108
-28
lines changed

8 files changed

+108
-28
lines changed

package.json

+6-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"angular-cli": {},
66
"scripts": {
77
"ng": "ng",
8-
"start": "ng serve",
8+
"start": "ng serve --proxy-config proxy.conf.json",
9+
"rest-api": "./node_modules/.bin/ts-node ./src/server/server.ts",
910
"test": "ng test",
1011
"lint": "ng lint",
1112
"e2e": "ng e2e"
@@ -20,9 +21,12 @@
2021
"@angular/platform-browser": ">=4.0.0-beta <5.0.0",
2122
"@angular/platform-browser-dynamic": ">=4.0.0-beta <5.0.0",
2223
"@angular/router": ">=4.0.0-beta <5.0.0",
24+
"@types/express": "^4.0.35",
2325
"@types/lodash": "^4.14.52",
2426
"angularfire2": "^2.0.0-beta.8",
27+
"body-parser": "^1.17.1",
2528
"core-js": "^2.4.1",
29+
"express": "^4.15.2",
2630
"firebase": "^3.7.0",
2731
"lodash": "^4.17.4",
2832
"rxjs": "^5.0.1",
@@ -43,7 +47,7 @@
4347
"karma-coverage-istanbul-reporter": "^0.2.0",
4448
"karma-jasmine": "^1.0.2",
4549
"protractor": "~5.1.0",
46-
"ts-node": "1.2.1",
50+
"ts-node": "^2.1.0",
4751
"tslint": "^4.3.0",
4852
"typescript": "~2.1.0"
4953
}

proxy.conf.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"/api": {
3+
"target": "http://localhost:8090",
4+
"secure": false
5+
}
6+
}

src/app/newsletter/newsletter.component.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ <h5>Hello {{(userService.user$ | async)?.firstName }},
55
enter your name below to subscribe:</h5>
66

77
<form>
8-
<input type="email" name="email" placeholder="Enter your Email">
9-
<input #email type="button" class="button button-primary" value="Subscribe"
10-
(click)="subscribe(email.value)">
8+
<input #email type="email" name="email" placeholder="Enter your Email">
9+
<input type="button" class="button button-primary" value="Subscribe"
10+
(click)="subscribe(email)">
1111
</form>
1212
</fieldset>

src/app/newsletter/newsletter.component.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,15 @@ export class NewsletterComponent {
1414

1515
}
1616

17-
subscribe(email:string) {
18-
this.newsletterService.subscribeToNewsletter(email);
17+
subscribe(emailField) {
18+
this.newsletterService.subscribeToNewsletter(emailField.value)
19+
.subscribe(
20+
() => {
21+
alert('Subscription successful ...');
22+
emailField.value = '';
23+
},
24+
console.error
25+
);
1926
}
2027

2128
}

src/app/services/newsletter.service.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import { Injectable } from '@angular/core';
22
import {Http} from "@angular/http";
3+
import {Observable} from "rxjs";
34

45
@Injectable()
56
export class NewsletterService {
67

78

89
constructor(private http:Http) { }
910

10-
subscribeToNewsletter(email: string) {
11-
11+
subscribeToNewsletter(email: string): Observable<any> {
12+
return this.http.post('/api/newsletter', {email});
1213
}
1314

1415

src/server/newsletterRoute.ts

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
3+
export function newsletterRoute(req, res) {
4+
5+
const payload = req.body;
6+
7+
console.log('subscribing to newsletter ...', payload.email);
8+
9+
res.status(200).send();
10+
}

src/server/server.ts

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
3+
import * as express from 'express';
4+
import {Application} from 'express';
5+
import {newsletterRoute} from "./newsletterRoute";
6+
const bodyParser = require('body-parser');
7+
8+
const app: Application = express();
9+
10+
app.use(bodyParser.json());
11+
12+
13+
console.log('Starting server ...');
14+
15+
16+
app.route('/api/newsletter').post(newsletterRoute);
17+
18+
19+
app.listen(8090, () => {
20+
console.log('Server is now running on port 8090 ...');
21+
});
22+
23+

yarn.lock

+48-19
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,19 @@
148148
magic-string "^0.19.0"
149149
source-map "^0.5.6"
150150

151+
"@types/express-serve-static-core@*":
152+
version "4.0.41"
153+
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.41.tgz#05df354cbbe5069b4c089320065870033f41e670"
154+
dependencies:
155+
"@types/node" "*"
156+
157+
"@types/express@^4.0.35":
158+
version "4.0.35"
159+
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.0.35.tgz#6267c7b60a51fac473467b3c4a02cd1e441805fe"
160+
dependencies:
161+
"@types/express-serve-static-core" "*"
162+
"@types/serve-static" "*"
163+
151164
152165
version "2.5.38"
153166
resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717"
@@ -156,7 +169,11 @@
156169
version "4.14.54"
157170
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.54.tgz#287dbbcd97d5da69c25ca99fb5afa81c4839b7fa"
158171

159-
"@types/node@^6.0.42", "@types/node@^6.0.46":
172+
"@types/mime@*":
173+
version "0.0.29"
174+
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-0.0.29.tgz#fbcfd330573b912ef59eeee14602bface630754b"
175+
176+
"@types/node@*", "@types/node@^6.0.42", "@types/node@^6.0.46":
160177
version "6.0.64"
161178
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8"
162179

@@ -168,6 +185,13 @@
168185
version "2.53.40"
169186
resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02"
170187

188+
"@types/serve-static@*":
189+
version "1.7.31"
190+
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.7.31.tgz#15456de8d98d6b4cff31be6c6af7492ae63f521a"
191+
dependencies:
192+
"@types/express-serve-static-core" "*"
193+
"@types/mime" "*"
194+
171195
abbrev@1:
172196
version "1.1.0"
173197
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
@@ -584,7 +608,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
584608
version "4.11.6"
585609
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
586610

587-
body-parser@^1.12.4:
611+
body-parser@^1.12.4, body-parser@^1.17.1:
588612
version "1.17.1"
589613
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47"
590614
dependencies:
@@ -1346,10 +1370,6 @@ di@^0.0.1:
13461370
version "0.0.1"
13471371
resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
13481372

1349-
diff@^2.1.1:
1350-
version "2.2.3"
1351-
resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99"
1352-
13531373
diff@^3.0.1, diff@^3.1.0:
13541374
version "3.2.0"
13551375
resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
@@ -1652,7 +1672,7 @@ exports-loader@^0.6.3:
16521672
loader-utils "^1.0.2"
16531673
source-map "0.5.x"
16541674

1655-
express@^4.13.3:
1675+
express@^4.13.3, express@^4.15.2:
16561676
version "4.15.2"
16571677
resolved "https://registry.yarnpkg.com/express/-/express-4.15.2.tgz#af107fc148504457f2dca9a6f2571d7129b97b35"
16581678
dependencies:
@@ -4801,20 +4821,22 @@ ts-helpers@^1.1.1:
48014821
version "1.1.2"
48024822
resolved "https://registry.yarnpkg.com/ts-helpers/-/ts-helpers-1.1.2.tgz#fc69be9f1f3baed01fb1a0ef8d4cfe748814d835"
48034823

4804-
ts-node@1.2.1:
4805-
version "1.2.1"
4806-
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-1.2.1.tgz#108f1e43366e25f5223e8549fa7c6dcf780eda23"
4824+
ts-node@^2.1.0:
4825+
version "2.1.0"
4826+
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-2.1.0.tgz#aa2bf4b2e25c5fb6a7c54701edc3666d3a9db25d"
48074827
dependencies:
48084828
arrify "^1.0.0"
48094829
chalk "^1.1.1"
4810-
diff "^2.1.1"
4830+
diff "^3.1.0"
48114831
make-error "^1.1.1"
48124832
minimist "^1.2.0"
48134833
mkdirp "^0.5.1"
48144834
pinkie "^2.0.4"
48154835
source-map-support "^0.4.0"
48164836
tsconfig "^5.0.2"
4837+
v8flags "^2.0.11"
48174838
xtend "^4.0.0"
4839+
yn "^1.2.0"
48184840

48194841
tsconfig@^5.0.2:
48204842
version "5.0.3"
@@ -4982,6 +5004,10 @@ url@^0.11.0:
49825004
punycode "1.3.2"
49835005
querystring "0.2.0"
49845006

5007+
user-home@^1.1.1:
5008+
version "1.1.1"
5009+
resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
5010+
49855011
useragent@^2.1.9:
49865012
version "2.1.12"
49875013
resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2"
@@ -5023,6 +5049,12 @@ uuid@^3.0.0:
50235049
version "3.0.1"
50245050
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
50255051

5052+
v8flags@^2.0.11:
5053+
version "2.0.11"
5054+
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
5055+
dependencies:
5056+
user-home "^1.1.1"
5057+
50265058
validate-npm-package-license@^3.0.1:
50275059
version "3.0.1"
50285060
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
@@ -5246,20 +5278,13 @@ write-file-atomic@^1.1.2:
52465278
imurmurhash "^0.1.4"
52475279
slide "^1.1.5"
52485280

5249-
5281+
[email protected], ws@^1.0.1:
52505282
version "1.0.1"
52515283
resolved "https://registry.yarnpkg.com/ws/-/ws-1.0.1.tgz#7d0b2a2e58cddd819039c29c9de65045e1b310e9"
52525284
dependencies:
52535285
options ">=0.0.5"
52545286
ultron "1.0.x"
52555287

5256-
ws@^1.0.1:
5257-
version "1.1.2"
5258-
resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f"
5259-
dependencies:
5260-
options ">=0.0.5"
5261-
ultron "1.0.x"
5262-
52635288
xdg-basedir@^3.0.0:
52645289
version "3.0.0"
52655290
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
@@ -5375,6 +5400,10 @@ [email protected]:
53755400
version "0.1.2"
53765401
resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
53775402

5403+
yn@^1.2.0:
5404+
version "1.2.0"
5405+
resolved "https://registry.yarnpkg.com/yn/-/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63"
5406+
53785407
zone.js@^0.7.2:
53795408
version "0.7.7"
53805409
resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620"

0 commit comments

Comments
 (0)