text: "use strict";
  
  module.exports = WorklogClient;
  
  /**
   * Used to access Jira REST endpoints in '/rest/api/2/worklog'
   *
   * @param {JiraClient} jiraClient
   * @constructor WorkLogClient
   */
  function WorklogClient(jiraClient) {
      this.jiraClient = jiraClient;
  
      /**
       * Returns worklogs id and delete time of worklogs that were deleted since given time. The returns set of worklogs is 
       * limited to 1000 elements. This API will not return worklogs deleted during last minute.
       *
       * @method getWorklogDeleted
       * @memberOf WorklogClient#
       * @param {Object} opts The request options sent to the Jira API
       * @param {number} opts.since A date time in unix timestamp format since when deleted worklogs will be returned.
       *      Default: 0
       * @param [callback] Called when the search results are retrieved.
       * @return {Promise} Resolved when the search results are retrieved.
       */ 
      this.getWorklogDeleted = function (opts, callback) {
          var options = {
              uri: this.jiraClient.buildURL('/worklog/deleted'),
              method: 'GET',
              json: true,
              followAllRedirects: true,
              qs: {
                  since: opts.since
              }
          };
          return this.jiraClient.makeRequest(options, callback)
      };
  
      /**
       * Returns Returns worklogs for given worklog ids. Only worklogs to which the calling user has permissions, 
       * will be included in the result. The returns set of worklogs is limited to 1000 elements.
       *
       * @method worklogList
       * @memberOf WorklogClient#
       * @param {Object} opts The request options sent to the Jira API
       * @param {array} [opts.ids] a JSON array named ids which contains a list of issue IDs
       * @param [callback] Called when the search results are retrieved.
       * @return {Promise} Resolved when the search results are retrieved.
       */ 
      this.worklogList = function (opts, callback) {
          var options = {
              uri: this.jiraClient.buildURL('/worklog/list'),
              method: 'POST',
              json: true,
              followAllRedirects: true,
              body: {
                  ids: opts.ids
              }
          };
          return this.jiraClient.makeRequest(options, callback)
      };
  
      /**
       * Returns worklogs id and update time of worklogs that were updated since given time. The returns set of worklogs is 
       * limited to 1000 elements. This API will not return worklogs deleted during last minute.
       *
       * @method getWorklogUpdated
       * @memberOf WorklogClient#
       * @param {Object} opts The request options sent to the Jira API
       * @param {number} opts.since A date time in unix timestamp format since when updated worklogs will be returned.
       *      Default: 0
       * @param [callback] Called when the search results are retrieved.
       * @return {Promise} Resolved when the search results are retrieved.
       */ 
      this.getWorklogUpdated = function (opts, callback) {
          var options = {
              uri: this.jiraClient.buildURL('/worklog/updated'),
              method: 'GET',
              json: true,
              followAllRedirects: true,
              qs: {
                  since: opts.since
              }
          };
          return this.jiraClient.makeRequest(options, callback)
      }
  }
  