3 var _ = require('lodash');
4 var util = require('util');
5 var desk = require('desk.js');
7 var DeskAccount = require('../../models').DeskAccount;
9 // Get list of desk_accounts
10 exports.index = function(req, res) {
11 var attributes = ['description', 'name', 'username', 'remoteUri'];
12 var per_page = req.query.per_page ? parseInt(req.query.per_page, 10) : 100;
13 var page = req.query.page ? parseInt(req.query.page, 10) : 0;
18 offset: page * per_page
21 _.forIn(req.query, function(value, key) {
27 query.order = util.format('%s %s', req.query.sort_by, req.query.sort_order || 'ASC') || null;
33 attributes.forEach(function(attribute) {
36 $like: '%' + value + '%'
39 query.where.$or.push(tmp);
46 query.where[key].$like = '%' + value + '%';
51 .findAndCountAll(query)
52 .then(function(result) {
54 var total_pages = Math.ceil(result.count / per_page);
55 var next_page = total_pages > (query.offset + 1) ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page + 1) : null;
56 var previous_page = page > 0 ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page - 1) : null;
58 return res.status(200).send({
62 previous_page: previous_page,
63 total_pages: total_pages
67 .catch(function(err) {
68 return res.status(500).send({
69 error: 'Something blew up!'
74 // Get a single desk_account
75 exports.show = function(req, res) {
77 .findById(req.params.id)
78 .then(function(desk_account) {
80 return res.sendStatus(404);
82 return res.send(desk_account);
84 .catch(function(err) {
85 return handleError(res, err);
89 // Creates a new desk_account in the DB.
90 exports.create = function(req, res) {
93 .then(function(desk_account) {
94 return res.status(201).send(desk_account);
96 .catch(function(err) {
97 return handleError(res, err);
101 // Updates an existing desk_account in the DB.
102 exports.update = function(req, res) {
107 .findById(req.params.id)
108 .then(function(desk_account) {
110 return res.sendStatus(404);
112 var updated = _.merge(desk_account, req.body);
115 return res.status(200).send(desk_account);
117 .catch(function(err) {
118 return handleError(res, err);
121 .catch(function(err) {
122 return handleError(res, err);
126 // Deletes a desk_account from the DB.
127 exports.destroy = function(req, res) {
129 .findById(req.params.id)
130 .then(function(desk_account) {
132 return res.sendStatus(404);
134 desk_account.destroy()
136 return res.sendStatus(204);
138 .catch(function(err) {
139 return handleError(res, err);
142 .catch(function(err) {
143 return handleError(res, err);
147 exports.checkAccount = function(req, res) {
149 .findById(req.params.id)
150 .then(function(account) {
152 endpoint: stripTrailingSlash(account.remoteUri),
155 if (account.authType === 'basic') {
156 desk_account.username = account.username;
157 desk_account.password = account.password;
158 } else if (account.authType === 'oauth') {
159 desk_account.consumerKey = account.consumerKey;
160 desk_account.consumerSecret = account.consumerSecret;
161 desk_account.token = account.token;
162 desk_account.tokenSecret = account.tokenSecret;
164 console.log(desk_account);
165 var client = desk.createClient(desk_account);
166 client.get('/api/v2/users/me', function(err, body, response) {
169 return handleError(res, err);
171 return res.sendStatus(200);
174 .catch(function(err) {
175 return handleError(res, err);
179 function stripTrailingSlash(str) {
180 if (str.substr(-1) === '/') {
181 return str.substr(0, str.length - 1);
186 function handleError(res, err) {
187 return res.status(500).send(err);