Skip to content

Commit 051df61

Browse files
made changes in config and index file
1 parent 3610bd5 commit 051df61

File tree

9 files changed

+173
-169
lines changed

9 files changed

+173
-169
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules/
2+
.env

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# url-shorten-api
2-
This URL Shortener API can be accessed by: http://pp0.xyz/api/url/shorten
2+
3+
This URL Shortener API can be accessed by: http://pp0.xyz/api/shorten
34

45

56
Post the following using Postman:

config/db.js

+31-30
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
1-
const mongoose = require('mongoose');
2-
3-
const config = require('config');
4-
5-
const db = config.get('mongoURL')
6-
7-
8-
const connectDB = async () => {
9-
10-
try {
11-
12-
await mongoose.connect(db, {
13-
14-
useNewUrlParser: true, useUnifiedTopology: true
15-
});
16-
17-
18-
console.log('Connected to DB')
19-
20-
} catch (err) {
21-
22-
console.log(err.message)
23-
24-
process.exit(1);
25-
26-
}
27-
28-
29-
}
30-
1+
const mongoose = require('mongoose');
2+
3+
const config = require('config');
4+
5+
const db = process.env.DB_URL;
6+
7+
8+
9+
const connectDB = async () => {
10+
11+
try {
12+
13+
await mongoose.connect(db, {
14+
15+
useNewUrlParser: true, useUnifiedTopology: true
16+
});
17+
18+
19+
console.log('Connected to DB')
20+
21+
} catch (err) {
22+
23+
console.log(err.message)
24+
25+
process.exit(1);
26+
27+
}
28+
29+
30+
}
31+
3132
module.exports = connectDB;

config/default.json

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
{
2-
"mongoURL": "mongodb+srv://urlboy:[email protected]/<dbname>?retryWrites=true&w=majority",
3-
"baseUrl": "http://pp0.xyz"
1+
{
2+
"baseUrl": "http://pp0.xyz"
43
}

index.js

+37-37
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
1-
const express = require('express');
2-
const app = express();
3-
4-
var cors = require('cors');
5-
6-
require('dotenv/config');
7-
8-
9-
10-
const connectDB = require('./config/db');
11-
12-
connectDB();
13-
14-
app.use(cors());
15-
app.use(express.json());
16-
17-
18-
19-
app.get('/', (req, res) => {
20-
21-
res.send('Shorten your URLs here only!')
22-
})
23-
24-
app.use(function (req, res, next) {
25-
res.header("Access-Control-Allow-Origin", "*");
26-
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
27-
next();
28-
});
29-
30-
app.use('/', require('./routes/index'));
31-
app.use('/api/url', require('./routes/url'));
32-
33-
34-
35-
app.listen(process.env.PORT, () => {
36-
37-
console.log("Server has started on " + process.env.PORT)
1+
const express = require('express');
2+
const app = express();
3+
4+
var cors = require('cors');
5+
6+
require('dotenv/config');
7+
8+
9+
10+
const connectDB = require('./config/db');
11+
12+
connectDB();
13+
14+
app.use(cors());
15+
app.use(express.json());
16+
17+
18+
19+
app.get('/', (req, res) => {
20+
21+
res.send('© Prateek Pardeshi 2020')
22+
})
23+
24+
app.use(function (req, res, next) {
25+
res.header("Access-Control-Allow-Origin", "*");
26+
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
27+
next();
28+
});
29+
30+
app.use('/', require('./routes/index'));
31+
app.use('/api', require('./routes/url'));
32+
33+
34+
35+
app.listen(process.env.PORT, () => {
36+
37+
console.log("Server has started on " + process.env.PORT)
3838
})

models/url.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
const mongoose = require('mongoose');
2-
3-
4-
const urlSchema = new mongoose.Schema({
5-
urlCode: String,
6-
longUrl: String,
7-
shortUrl: String,
8-
date: { type: String, default: Date.now }
9-
});
10-
1+
const mongoose = require('mongoose');
2+
3+
4+
const urlSchema = new mongoose.Schema({
5+
urlCode: String,
6+
longUrl: String,
7+
shortUrl: String,
8+
date: { type: String, default: Date.now }
9+
});
10+
1111
module.exports = mongoose.model('Url', urlSchema);

package-lock.json

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

routes/index.js

+21-21
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
const express = require('express');
2-
const router = express.Router();
3-
4-
const Url = require('../models/url');
5-
6-
7-
router.get('/:code', async (req, res) => {
8-
try {
9-
const url = await Url.findOne({ urlCode: req.params.code });
10-
11-
if (url) {
12-
return res.redirect(url.longUrl);
13-
} else {
14-
return res.status(404).json('No url found');
15-
}
16-
} catch (err) {
17-
console.error(err);
18-
res.status(500).json('Server error');
19-
}
20-
});
21-
1+
const express = require('express');
2+
const router = express.Router();
3+
4+
const Url = require('../models/url');
5+
6+
7+
router.get('/:code', async (req, res) => {
8+
try {
9+
const url = await Url.findOne({ urlCode: req.params.code });
10+
11+
if (url) {
12+
return res.redirect(url.longUrl);
13+
} else {
14+
return res.status(404).json('No url found');
15+
}
16+
} catch (err) {
17+
console.error(err);
18+
res.status(500).json('Server error');
19+
}
20+
});
21+
2222
module.exports = router;

routes/url.js

+65-64
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,65 @@
1-
const express = require('express');
2-
3-
const router = express.Router();
4-
5-
const shortid = require('shortid');
6-
const validurl = require('valid-url');
7-
const config = require('config');
8-
9-
10-
const Url = require('../models/url');
11-
12-
13-
router.post('/shorten', async (req, res) => {
14-
15-
const { longUrl } = req.body;
16-
const baseUrl = config.get('baseUrl');
17-
18-
if (!validurl.isUri(baseUrl)) {
19-
return res.status(401).json('Invalid base Url');
20-
}
21-
22-
const urlCode = shortid.generate();
23-
24-
25-
if (validurl.isUri(longUrl)) {
26-
27-
try {
28-
let url = await Url.findOne({ longUrl })
29-
30-
if (url) {
31-
32-
res.json(url);
33-
} else {
34-
35-
const shortUrl = baseUrl + '/' + urlCode;
36-
37-
url = new Url({
38-
longUrl,
39-
shortUrl,
40-
urlCode,
41-
date: new Date()
42-
43-
});
44-
45-
await url.save();
46-
47-
res.json(url);
48-
}
49-
50-
} catch (err) {
51-
console.error(err);
52-
res.status(500).json('Server not found');
53-
}
54-
} else {
55-
56-
res.status(401).json('Invalid long Url')
57-
}
58-
});
59-
60-
module.exports = router;
61-
62-
63-
64-
1+
const express = require('express');
2+
3+
const router = express.Router();
4+
5+
const shortid = require('shortid');
6+
const validurl = require('valid-url');
7+
8+
const config = require('config');
9+
10+
const Url = require('../models/url');
11+
12+
13+
router.post('/shorten', async (req, res) => {
14+
15+
const { longUrl } = req.body;
16+
//const baseUrl = config.get('baseUrl');
17+
const baseUrl = config.get('baseUrl');
18+
19+
if (!validurl.isUri(baseUrl)) {
20+
return res.status(401).json('Invalid base Url');
21+
}
22+
23+
const urlCode = shortid.generate();
24+
25+
26+
if (validurl.isUri(longUrl)) {
27+
28+
try {
29+
let url = await Url.findOne({ longUrl })
30+
31+
if (url) {
32+
33+
res.json(url);
34+
} else {
35+
36+
const shortUrl = baseUrl + '/' + urlCode;
37+
38+
url = new Url({
39+
longUrl,
40+
shortUrl,
41+
urlCode,
42+
date: new Date()
43+
44+
});
45+
46+
await url.save();
47+
48+
res.json(url);
49+
}
50+
51+
} catch (err) {
52+
console.error(err);
53+
res.status(500).json('Server not found');
54+
}
55+
} else {
56+
57+
res.status(401).json('Invalid long Url')
58+
}
59+
});
60+
61+
module.exports = router;
62+
63+
64+
65+

0 commit comments

Comments
 (0)