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 = { 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) }) }, createNewPages: function(newPagesData, newLogoFile, callback) { let data = new formData() data.append('avatar', fs.createReadStream(newLogoFile)) let dataConfig = { method: 'post', url: 'https://transfer.hft-stuttgart.de/gitlab/api/v4/projects/user/'+newPagesData.getOwnerGitlabId()+ '?name='+newPagesData.getName()+'&description='+newPagesData.getDesc()+'&tag_list=website'+ '&use_custom_template=true&template_name=page_basic', headers: { 'Authorization': 'Bearer '+config.gitlab.token_readWriteProjects, ...data.getHeaders() }, data : data } axios(dataConfig) .then(response => { let res = { error: false, data: response.data} callback(res) }) .catch(err => { console.log(err) let res = { error: true, data: err.response.data} callback(res) }) }, updateProject: function(updatedProjectData, newLogoFile, callback){ console.log(updatedProjectData) let data = new formData() if (newLogoFile) { data.append('avatar', fs.createReadStream(newLogoFile)) } let dataConfig = { method: 'put', url: 'https://transfer.hft-stuttgart.de/gitlab/api/v4/projects/'+updatedProjectData.getId()+ '?name='+updatedProjectData.getName()+'&description='+updatedProjectData.getDesc(), headers: { 'Authorization': 'Bearer '+config.gitlab.token_readWriteProjects, ...data.getHeaders() }, data : data } axios(dataConfig) .then(response => { let res = { error: false, data: response.data} callback(res) }) .catch(err => { console.log(err) let res = { error: true, data: err.response.data} callback(res) }) }, 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) }) .catch(err => { let res = { error: true, data: err.message} 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) }); } } module.exports = gitlab