Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
m4lab_tv1
Project Page
Commits
9d64c450
Commit
9d64c450
authored
Jan 28, 2021
by
Rosanny Sihombing
Browse files
remove unused codes and add bug fixing
parent
615f43e4
Changes
2
Hide whitespace changes
Inline
Side-by-side
routes/gitlab.js
0 → 100644
View file @
9d64c450
var
env
=
process
.
env
.
NODE_ENV
||
'
testing
'
const
config
=
require
(
'
../config/config
'
)[
env
]
const
axios
=
require
(
'
axios
'
)
var
gitlab
=
{
getRepos
:
async
function
(
perPage
,
idAfter
)
{
try
{
let
projects
=
await
axios
({
method
:
'
get
'
,
url
:
'
https://transfer.hft-stuttgart.de/gitlab/api/v4/projects?visibility=public&pagination=keyset&per_page=
'
+
perPage
+
'
&order_by=id&sort=asc&id_after=
'
+
idAfter
})
let
data
=
projects
.
data
let
reposArr
=
[]
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
){
// skip template project
if
(
data
[
i
].
name
==
'
template_gitlab_page
'
)
{
continue
}
else
if
(
!
data
[
i
].
tag_list
.
includes
(
'
website
'
))
{
reposArr
.
push
(
data
[
i
])
}
}
return
{
error
:
false
,
data
:
reposArr
}
}
catch
(
err
)
{
return
{
error
:
true
,
data
:
err
}
}
},
getPages
:
async
function
(
perPage
,
idAfter
)
{
try
{
let
projects
=
await
axios
({
method
:
'
get
'
,
url
:
'
https://transfer.hft-stuttgart.de/gitlab/api/v4/projects?visibility=public&pagination=keyset&per_page=
'
+
perPage
+
'
&order_by=id&sort=asc&id_after=
'
+
idAfter
})
let
data
=
projects
.
data
let
pagesArr
=
[]
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
){
// skip template project
if
(
data
[
i
].
name
==
'
template_gitlab_page
'
)
{
continue
}
else
if
(
data
[
i
].
tag_list
.
includes
(
'
website
'
))
{
pagesArr
.
push
(
data
[
i
])
}
}
return
{
error
:
false
,
data
:
pagesArr
}
}
catch
(
err
)
{
return
{
error
:
true
,
data
:
err
}
}
},
getProjectsFromRunners
:
async
function
()
{
try
{
let
runner
=
await
axios
({
method
:
'
get
'
,
url
:
'
https://transfer.hft-stuttgart.de/gitlab/api/v4/runners/7
'
,
headers
:
{
'
Authorization
'
:
'
Bearer
'
+
config
.
gitlab
.
token_readWriteProjects
}
})
let
runnerProjects
=
runner
.
data
.
projects
return
{
error
:
false
,
data
:
runnerProjects
}
}
catch
(
err
)
{
return
{
error
:
true
,
data
:
err
}
}
}
}
module
.
exports
=
gitlab
\ No newline at end of file
routes/routes-project.js
View file @
9d64c450
const
fs
=
require
(
'
fs
'
)
//const SamlStrategy = require('passport-saml').Strategy
const
dbconn
=
require
(
'
./dbconn
'
)
const
methods
=
require
(
'
./methods
'
)
const
gitlab
=
require
(
'
./gitlab
'
)
// pwd encryption
//const bcrypt = require('bcryptjs');
//const saltRounds = 10;
...
...
@@ -10,10 +9,8 @@ const methods = require('./methods')
const
async
=
require
(
'
async
'
)
//const crypto = require('crypto')
//const mailer = require('./mailer')
const
helpers
=
require
(
'
./helpers
'
)
const
pictSizeLimit
=
1000000
// 1 MB
const
axios
=
require
(
'
axios
'
)
module
.
exports
=
function
(
app
)
{
...
...
@@ -53,59 +50,6 @@ module.exports = function (app) {
])
})
app
.
get
(
'
/project_
'
,
function
(
req
,
res
)
{
async
.
waterfall
([
// get all projects from projectdb
function
(
done
)
{
methods
.
getAllProjects
(
function
(
projectsOverview
,
err
)
{
if
(
!
err
)
{
done
(
err
,
projectsOverview
)
}
})
},
// create JSON object for front-end
function
(
projectsOverview
,
done
)
{
var
activeProjects
=
[]
var
nonActiveProjects
=
[]
for
(
var
i
=
0
;
i
<
projectsOverview
.
length
;
i
++
)
{
var
project
=
{
id
:
projectsOverview
[
i
].
id
,
logo
:
projectsOverview
[
i
].
logo
,
akronym
:
projectsOverview
[
i
].
pname
,
title
:
projectsOverview
[
i
].
title
,
summary
:
projectsOverview
[
i
].
onelinesummary
,
category
:
projectsOverview
[
i
].
category
,
cp
:
projectsOverview
[
i
].
contact_email
,
gitlab
:
projectsOverview
[
i
].
gitlab
}
if
(
projectsOverview
[
i
].
projectstatus
==
0
)
{
nonActiveProjects
.
push
(
project
)
}
else
if
(
projectsOverview
[
i
].
projectstatus
==
1
)
{
activeProjects
.
push
(
project
)
}
}
// render the page
if
(
req
.
isAuthenticated
())
{
res
.
render
(
lang
+
'
/project/projects
'
,
{
isUserAuthenticated
:
true
,
nonActive
:
nonActiveProjects
,
active
:
activeProjects
});
}
else
{
res
.
render
(
lang
+
'
/project/projects
'
,
{
isUserAuthenticated
:
false
,
nonActive
:
nonActiveProjects
,
active
:
activeProjects
});
}
}
])
})
app
.
get
(
'
/
'
,
function
(
req
,
res
)
{
res
.
render
(
lang
+
'
/project/project-simplified
'
,
{
isUserAuthenticated
:
req
.
isAuthenticated
(),
...
...
@@ -121,52 +65,6 @@ module.exports = function (app) {
res
.
redirect
(
'
/login
'
)
}
})
app
.
post
(
'
/addprojectoverview__
'
,
function
(
req
,
res
)
{
if
(
req
.
isAuthenticated
())
{
var
wiki
=
0
if
(
req
.
body
.
wiki
)
wiki
=
1
var
projectTerm
=
req
.
body
.
termForm
+
"
-
"
+
req
.
body
.
termTo
var
projectOverviewData
=
{
pname
:
req
.
body
.
pname
,
title
:
req
.
body
.
title
,
onelinesummary
:
req
.
body
.
summary
,
category
:
req
.
body
.
category
,
logo
:
req
.
body
.
logo
,
gitlab
:
req
.
body
.
gitlabURL
,
wiki
:
wiki
,
overview
:
req
.
body
.
overview
,
question
:
req
.
body
.
question
,
approach
:
req
.
body
.
approach
,
result
:
req
.
body
.
result
,
keywords
:
req
.
body
.
keywords
,
announcement
:
req
.
body
.
announcement
,
term
:
projectTerm
,
further_details
:
req
.
body
.
furtherDetails
,
website
:
req
.
body
.
website
,
src
:
req
.
body
.
src
,
caption
:
req
.
body
.
caption
,
contact_lastname
:
req
.
body
.
contactName
,
contact_email
:
req
.
body
.
contactEmail
,
leader_lastname
:
req
.
body
.
leaderName
,
leader_email
:
req
.
body
.
leaderEmail
}
methods
.
addProjectOverview
(
projectOverviewData
,
function
(
err
){
if
(
err
)
{
//req.flash('error', "Failed")
req
.
flash
(
'
error
'
,
"
Fehlgeschlagen
"
)
res
.
redirect
(
'
/addProjectOverview
'
);
}
else
{
req
.
flash
(
'
success
'
,
'
Your project has been created.
'
)
res
.
redirect
(
'
/project
'
);
}
})
}
})
app
.
post
(
'
/addprojectoverview
'
,
function
(
req
,
res
)
{
if
(
req
.
isAuthenticated
())
{
...
...
@@ -304,10 +202,6 @@ module.exports = function (app) {
}
})
app
.
get
(
'
/updateprojectoverview
'
,
function
(
req
,
res
)
{
// only their own project
})
app
.
post
(
'
/updateprojectoverview
'
,
function
(
req
,
res
)
{
// only their own project
})
...
...
@@ -356,12 +250,6 @@ module.exports = function (app) {
])
})
async
function
getProjectsFromGitlab
(
perPage
,
idAfter
)
{
// public projects
return
await
axios
.
get
(
'
https://transfer.hft-stuttgart.de/gitlab/api/v4/projects?visibility=public&pagination=keyset&per_page=
'
+
perPage
+
'
&order_by=id&sort=asc&id_after=
'
+
idAfter
)
}
// Projektdaten
app
.
get
(
'
/projektdaten
'
,
async
function
(
req
,
res
){
let
projectArr
=
[]
...
...
@@ -369,7 +257,7 @@ module.exports = function (app) {
let
firstId
=
0
while
(
isProject
==
true
)
{
let
projects
=
await
g
etProjectsFromGitlab
(
10
,
firstId
)
let
projects
=
await
g
itlab
.
getRepos
(
10
0
,
firstId
)
let
projectData
=
projects
.
data
if
(
projectData
.
length
==
0
)
{
...
...
@@ -377,32 +265,24 @@ module.exports = function (app) {
}
else
{
for
(
let
i
=
0
;
i
<
projectData
.
length
;
i
++
){
// skip template project
if
(
projectData
[
i
].
name
==
"
template_gitlab_page
"
)
{
continue
// M4_LAB logo for all projects that do not have logo
if
(
projectData
[
i
].
avatar_url
==
null
)
{
projectData
[
i
].
avatar_url
=
"
https://m4lab.hft-stuttgart.de/img/footer/M4_LAB_LOGO_Graustufen.png
"
}
// for all projects that have no description
if
(
projectData
[
i
].
description
==
""
)
{
projectData
[
i
].
description
=
"
- no description -
"
}
// only repo
if
(
!
projectData
[
i
].
tag_list
.
includes
(
'
website
'
))
{
// M4_LAB logo for all projects that do not have logo
if
(
projectData
[
i
].
avatar_url
==
null
)
{
projectData
[
i
].
avatar_url
=
"
https://m4lab.hft-stuttgart.de/img/footer/M4_LAB_LOGO_Graustufen.png
"
}
// for all projects that have no description
if
(
projectData
[
i
].
description
==
""
)
{
projectData
[
i
].
description
=
"
- no description -
"
}
let
project
=
{
logo
:
projectData
[
i
].
avatar_url
,
name
:
projectData
[
i
].
name
,
weburl
:
projectData
[
i
].
web_url
,
desc
:
projectData
[
i
].
description
,
keywords
:
projectData
[
i
].
tag_list
}
projectArr
.
push
(
project
)
let
project
=
{
logo
:
projectData
[
i
].
avatar_url
,
name
:
projectData
[
i
].
name
,
weburl
:
projectData
[
i
].
web_url
,
desc
:
projectData
[
i
].
description
,
keywords
:
projectData
[
i
].
tag_list
}
projectArr
.
push
(
project
)
}
firstId
=
projectData
[
projectData
.
length
-
1
].
id
}
}
...
...
@@ -418,63 +298,68 @@ module.exports = function (app) {
let
isProject
=
true
let
firstId
=
0
while
(
isProject
==
true
)
{
let
projects
=
await
getProjectsFromGitlab
(
10
,
firstId
)
let
projectData
=
projects
.
data
if
(
projectData
.
length
==
0
)
{
isProject
=
false
let
runnerProjects
=
await
gitlab
.
getProjectsFromRunners
()
if
(
runnerProjects
.
error
)
{
// error response: to be updated
res
.
status
(
500
).
render
(
lang
+
'
/500
'
,
{
error
:
err
})
}
else
{
let
runnerProjectsData
=
runnerProjects
.
data
let
runnerProjectsIds
=
[]
for
(
let
i
=
0
;
i
<
runnerProjectsData
.
length
;
i
++
){
runnerProjectsIds
.
push
(
runnerProjectsData
[
i
].
id
)
}
else
{
for
(
let
i
=
0
;
i
<
projectData
.
length
;
i
++
){
// skip template project
if
(
projectData
[
i
].
name
==
"
template_gitlab_page
"
)
{
continue
}
// websites
if
(
projectData
[
i
].
tag_list
.
includes
(
'
website
'
))
{
// M4_LAB logo for all projects that do not have logo
if
(
projectData
[
i
].
avatar_url
==
null
)
{
projectData
[
i
].
avatar_url
=
"
https://m4lab.hft-stuttgart.de/img/footer/M4_LAB_LOGO_Graustufen.png
"
}
// for all projects that have no description
if
(
projectData
[
i
].
description
==
""
)
{
projectData
[
i
].
description
=
"
- no description -
"
}
// customize website name
if
(
projectData
[
i
].
name
==
"
Visualization
"
)
{
projectData
[
i
].
web_url
=
"
https://transfer.hft-stuttgart.de/pages/visualization
"
}
else
if
(
projectData
[
i
].
name
==
"
IN-Source
"
)
{
projectData
[
i
].
web_url
=
"
https://transfer.hft-stuttgart.de/pages/INsource
"
}
else
if
(
projectData
[
i
].
name
==
"
3DS_Visualization_Cesium
"
)
{
projectData
[
i
].
web_url
=
"
https://transfer.hft-stuttgart.de/pages/3ds_visualization_cesium
"
}
else
{
projectData
[
i
].
web_url
=
"
https://transfer.hft-stuttgart.de/pages/
"
+
projectData
[
i
].
name
}
// remove 'website' from tag list
const
index
=
projectData
[
i
].
tag_list
.
indexOf
(
'
website
'
);
if
(
index
>
-
1
)
{
projectData
[
i
].
tag_list
.
splice
(
index
,
1
);
}
// fill in pagesArr
let
pages
=
{
logo
:
projectData
[
i
].
avatar_url
,
name
:
projectData
[
i
].
name
,
weburl
:
projectData
[
i
].
web_url
,
desc
:
projectData
[
i
].
description
,
keywords
:
projectData
[
i
].
tag_list
while
(
isProject
==
true
)
{
let
pages
=
await
gitlab
.
getPages
(
100
,
firstId
)
let
pagesData
=
pages
.
data
if
(
pagesData
.
length
==
0
)
{
isProject
=
false
}
else
{
for
(
let
i
=
0
;
i
<
pagesData
.
length
;
i
++
){
// ONLY IF THE PROJECT IS AVAILABLE IN THE RUNNER
if
(
runnerProjectsIds
.
indexOf
(
pagesData
[
i
].
id
)
>
-
1
)
{
// M4_LAB logo for all projects that do not have logo
if
(
pagesData
[
i
].
avatar_url
==
null
)
{
pagesData
[
i
].
avatar_url
=
"
https://m4lab.hft-stuttgart.de/img/footer/M4_LAB_LOGO_Graustufen.png
"
}
// for all projects that have no description
if
(
pagesData
[
i
].
description
==
""
)
{
pagesData
[
i
].
description
=
"
- no description -
"
}
// customize website name
if
(
pagesData
[
i
].
name
==
"
Visualization
"
)
{
pagesData
[
i
].
web_url
=
"
https://transfer.hft-stuttgart.de/pages/visualization
"
}
else
if
(
pagesData
[
i
].
name
==
"
IN-Source
"
)
{
pagesData
[
i
].
web_url
=
"
https://transfer.hft-stuttgart.de/pages/INsource
"
}
else
if
(
pagesData
[
i
].
name
==
"
3DS_Visualization_Cesium
"
)
{
pagesData
[
i
].
web_url
=
"
https://transfer.hft-stuttgart.de/pages/3ds_visualization_cesium
"
}
else
{
pagesData
[
i
].
web_url
=
"
https://transfer.hft-stuttgart.de/pages/
"
+
pagesData
[
i
].
name
}
// remove 'website' from tag list
let
index
=
pagesData
[
i
].
tag_list
.
indexOf
(
'
website
'
)
if
(
index
>
-
1
)
{
pagesData
[
i
].
tag_list
.
splice
(
index
,
1
)
}
// fill in pagesArr
let
pages
=
{
logo
:
pagesData
[
i
].
avatar_url
,
name
:
pagesData
[
i
].
name
,
weburl
:
pagesData
[
i
].
web_url
,
desc
:
pagesData
[
i
].
description
,
keywords
:
pagesData
[
i
].
tag_list
}
pagesArr
.
push
(
pages
)
}
pagesArr
.
push
(
pages
)
}
firstId
=
pagesData
[
pagesData
.
length
-
1
].
id
}
firstId
=
projectData
[
projectData
.
length
-
1
].
id
}
}
}
res
.
render
(
lang
+
'
/project/pagesList
'
,
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment