vipex/node-tuleap-api

View on GitHub
lib/Models/artifactFiles.js

Summary

Maintainability
A
2 hrs
Test Coverage
/**
 * ArtifactsFiles module
 * @module Tuleap/Models/artifactsFiles
 */

'use strict';

/**
 * Standard request cb
 * @callback requestCallback
 * @param {Error} Error
 * @param {object} Data
 */

var Utils = require('../utils.js');

var Debug = require('debug')('Tuleap:ArtifactFiles');

/**
 * @class
 * @param {object} client - API client
 * @constructor
 */
var ArtifactFiles = function (client) {
    if (!client) {
        throw new Error('No client object.');
    }
    this.path = '/artifact_files/';
    this.client = client;
};

/**
 * Endpoint: GET /artifact_files/{id}
 * https://tuleap.net/api/explorer/#!/artifact_files
 * A user can only access the attached files they can view.
 * Returns a file Chunk of max 1048576 bytes.
 *
 * @param {object} query - Query parameters
 * @param {number} query.id - File id
 * @param {number} [query.offset=0] - File offset
 * @param {number} [query.limit=1048576] - File size read per request (max 1048576)
 * @param {requestCallback} cb - The callback function
 * @returns {object} - Request object
 */
ArtifactFiles.prototype.getFile = function (query, cb) {
    Debug('File query:', query);

    query.limit = query.limit || 1048576;
    var qr = {
        offset: query.offset || 0,
        limit: (query.limit <= 1048576 ? query.limit : 1048576)
    };

    return this.client
        .get(
            this.path + query.id,
            {query: qr},
            function (err, res, data) {
                cb.apply(null, Utils.resParse(err, res, data));
            }
        );
};

/**
 * ArtifactFiles module exported
 *
 * @type {ArtifactFiles}
 */
module.exports = ArtifactFiles;