gitlab.js 3.26 KB
Newer Older
Rosanny Sihombing's avatar
Rosanny Sihombing committed
1
2
3
4
5
6
7
var env = process.env.NODE_ENV || 'testing'
const config = require('../config/config')[env]
const axios = require('axios')
const fs = require('fs')
var formData = require('form-data')

var gitlab = {
Rosanny Sihombing's avatar
Rosanny Sihombing committed
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    getUserIdByEmail: function(email, callback) {
        let dataConfig = {
            method: 'get',
            url: 'https://transfer.hft-stuttgart.de/gitlab/api/v4/users?search='+email,
            headers: { 
                'Authorization': 'Bearer '+config.gitlab.token_readWriteProjects}
        }

        axios(dataConfig)
        .then(function (response) {
            let res = {
                error: false,
                data: response.data[0].id}
            callback(res)
        })
        .catch(function (err) {
            let res = {
                error: true,
                data: err}
            callback(res)
        })
    },
    // todo: fixing callback
Rosanny Sihombing's avatar
Rosanny Sihombing committed
31
32
33
34
35
36
    createNewPages: function(newPagesdata, callback) {
        let data = new formData()
        data.append('avatar', fs.createReadStream(newPagesdata.avatar))

        let dataConfig = {
            method: 'post',
Rosanny Sihombing's avatar
Rosanny Sihombing committed
37
            url: 'https://transfer.hft-stuttgart.de/gitlab/api/v4/projects/user/'+newPagesdata.gitlabUserId+
Rosanny Sihombing's avatar
Rosanny Sihombing committed
38
39
40
41
42
43
44
45
                '?name='+newPagesdata.name+'&description='+newPagesdata.description+'&tag_list=website'+
                '&use_custom_template=true&template_name=page_basic',
            headers: { 
                'Authorization': 'Bearer '+config.gitlab.token_readWriteProjects, 
                ...data.getHeaders()
            },
            data : data
        }
Rosanny Sihombing's avatar
Rosanny Sihombing committed
46

Rosanny Sihombing's avatar
Rosanny Sihombing committed
47
48
49
50
51
52
53
        axios(dataConfig)
        .then(function (response) {
            callback(response.data)
        })
        .catch(function (err) {
            if(err)
                callback(err.response.data)
Rosanny Sihombing's avatar
Rosanny Sihombing committed
54
55
56
57
58
59
60
61
62
63
        }) 
    },
    getUserProjects: function(gitlabUserId, callback) {
        axios.get('https://transfer.hft-stuttgart.de/gitlab/api/v4/users/'+gitlabUserId+'/projects?private_token='+
            config.gitlab.token_readWriteProjects+'&owned=true&simple=true&visibility=public')
        .then(response => {
            let res = {
                error: false,
                data: response.data}
            callback(res)
Rosanny Sihombing's avatar
Rosanny Sihombing committed
64
        })
Rosanny Sihombing's avatar
Rosanny Sihombing committed
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
        .catch(err => {
            let res = {
                error: true,
                data: err}
            callback(res)
        })
    },
    getProjectIdsFromRunners: function(gitlabUserId, callback) {
        let projectIds = []
        let dataConfig = {
            method: 'get',
            url: 'https://transfer.hft-stuttgart.de/gitlab/api/v4/runners/7',
            headers: { 
                'Authorization': 'Bearer '+config.gitlab.token_readWriteProjects}
        }
          
        axios(dataConfig)
        .then(function (response) {
            let projects = response.data.projects
            projects.forEach((project) => {
                if(project.namespace.id == gitlabUserId) {
                    projectIds.push(project.id)
                }
            })
            let res = {
                error: false,
                data: projectIds}

            callback(res)
        })
        .catch(function (err) {
            let res = {
                error: true,
                data: err}

            callback(res)
        });
Rosanny Sihombing's avatar
Rosanny Sihombing committed
102
103
104
105
    }
}

module.exports = gitlab