text: /**
   *  mixin events
   *
   *  Copyright 2012 Cloud9 IDE, Inc.
   *
   *  This product includes software developed by
   *  Cloud9 IDE, Inc (http://c9.io).
   *
   *  Author: Mike de Boer <info@mikedeboer.nl>
   **/
  
  "use strict";
  
  var error = require("./../../error");
  var Util = require("./../../util");
  
  var events = module.exports = {
      events: {}
  };
  
  (function() {
      /** section: github
       *  events#get(msg, callback) -> null
       *      - msg (Object): Object that contains the parameters and their values to be sent to the server.
       *      - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument.
       * 
       *  ##### Params on the `msg` object:
       * 
       *  - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent'.
       *  - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `.
       *  - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `.
       **/
      this.get = function(msg, block, callback) {
          var self = this;
          this.client.httpSend(msg, block, function(err, res) {
              if (err)
                  return self.sendError(err, null, msg, callback);
  
              var ret;
              try {
                  ret = res.data && JSON.parse(res.data);
              }
              catch (ex) {
                  if (callback)
                      callback(new error.InternalServerError(ex.message), res);
                  return;
              }
              
              if (!ret)
                  ret = {};
              if (!ret.meta)
                  ret.meta = {};
              ["x-ratelimit-limit", "x-ratelimit-remaining", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) {
                  if (res.headers[header])
                      ret.meta[header] = res.headers[header];
              });
              
              if (callback)
                  callback(null, ret);
          });
      };
  
      /** section: github
       *  events#getFromRepo(msg, callback) -> null
       *      - msg (Object): Object that contains the parameters and their values to be sent to the server.
       *      - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument.
       * 
       *  ##### Params on the `msg` object:
       * 
       *  - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent'.
       *  - user (String): Required. 
       *  - repo (String): Required. 
       *  - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `.
       *  - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `.
       **/
      this.getFromRepo = function(msg, block, callback) {
          var self = this;
          this.client.httpSend(msg, block, function(err, res) {
              if (err)
                  return self.sendError(err, null, msg, callback);
  
              var ret;
              try {
                  ret = res.data && JSON.parse(res.data);
              }
              catch (ex) {
                  if (callback)
                      callback(new error.InternalServerError(ex.message), res);
                  return;
              }
              
              if (!ret)
                  ret = {};
              if (!ret.meta)
                  ret.meta = {};
              ["x-ratelimit-limit", "x-ratelimit-remaining", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) {
                  if (res.headers[header])
                      ret.meta[header] = res.headers[header];
              });
              
              if (callback)
                  callback(null, ret);
          });
      };
  
      /** section: github
       *  events#getFromRepoIssues(msg, callback) -> null
       *      - msg (Object): Object that contains the parameters and their values to be sent to the server.
       *      - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument.
       * 
       *  ##### Params on the `msg` object:
       * 
       *  - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent'.
       *  - user (String): Required. 
       *  - repo (String): Required. 
       *  - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `.
       *  - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `.
       **/
      this.getFromRepoIssues = function(msg, block, callback) {
          var self = this;
          this.client.httpSend(msg, block, function(err, res) {
              if (err)
                  return self.sendError(err, null, msg, callback);
  
              var ret;
              try {
                  ret = res.data && JSON.parse(res.data);
              }
              catch (ex) {
                  if (callback)
                      callback(new error.InternalServerError(ex.message), res);
                  return;
              }
              
              if (!ret)
                  ret = {};
              if (!ret.meta)
                  ret.meta = {};
              ["x-ratelimit-limit", "x-ratelimit-remaining", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) {
                  if (res.headers[header])
                      ret.meta[header] = res.headers[header];
              });
              
              if (callback)
                  callback(null, ret);
          });
      };
  
      /** section: github
       *  events#getFromRepoNetwork(msg, callback) -> null
       *      - msg (Object): Object that contains the parameters and their values to be sent to the server.
       *      - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument.
       * 
       *  ##### Params on the `msg` object:
       * 
       *  - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent'.
       *  - user (String): Required. 
       *  - repo (String): Required. 
       *  - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `.
       *  - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `.
       **/
      this.getFromRepoNetwork = function(msg, block, callback) {
          var self = this;
          this.client.httpSend(msg, block, function(err, res) {
              if (err)
                  return self.sendError(err, null, msg, callback);
  
              var ret;
              try {
                  ret = res.data && JSON.parse(res.data);
              }
              catch (ex) {
                  if (callback)
                      callback(new error.InternalServerError(ex.message), res);
                  return;
              }
              
              if (!ret)
                  ret = {};
              if (!ret.meta)
                  ret.meta = {};
              ["x-ratelimit-limit", "x-ratelimit-remaining", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) {
                  if (res.headers[header])
                      ret.meta[header] = res.headers[header];
              });
              
              if (callback)
                  callback(null, ret);
          });
      };
  
      /** section: github
       *  events#getFromOrg(msg, callback) -> null
       *      - msg (Object): Object that contains the parameters and their values to be sent to the server.
       *      - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument.
       * 
       *  ##### Params on the `msg` object:
       * 
       *  - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent'.
       *  - org (String): Required. 
       *  - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `.
       *  - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `.
       **/
      this.getFromOrg = function(msg, block, callback) {
          var self = this;
          this.client.httpSend(msg, block, function(err, res) {
              if (err)
                  return self.sendError(err, null, msg, callback);
  
              var ret;
              try {
                  ret = res.data && JSON.parse(res.data);
              }
              catch (ex) {
                  if (callback)
                      callback(new error.InternalServerError(ex.message), res);
                  return;
              }
              
              if (!ret)
                  ret = {};
              if (!ret.meta)
                  ret.meta = {};
              ["x-ratelimit-limit", "x-ratelimit-remaining", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) {
                  if (res.headers[header])
                      ret.meta[header] = res.headers[header];
              });
              
              if (callback)
                  callback(null, ret);
          });
      };
  
      /** section: github
       *  events#getReceived(msg, callback) -> null
       *      - msg (Object): Object that contains the parameters and their values to be sent to the server.
       *      - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument.
       * 
       *  ##### Params on the `msg` object:
       * 
       *  - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent'.
       *  - user (String): Required. 
       *  - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `.
       *  - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `.
       **/
      this.getReceived = function(msg, block, callback) {
          var self = this;
          this.client.httpSend(msg, block, function(err, res) {
              if (err)
                  return self.sendError(err, null, msg, callback);
  
              var ret;
              try {
                  ret = res.data && JSON.parse(res.data);
              }
              catch (ex) {
                  if (callback)
                      callback(new error.InternalServerError(ex.message), res);
                  return;
              }
              
              if (!ret)
                  ret = {};
              if (!ret.meta)
                  ret.meta = {};
              ["x-ratelimit-limit", "x-ratelimit-remaining", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) {
                  if (res.headers[header])
                      ret.meta[header] = res.headers[header];
              });
              
              if (callback)
                  callback(null, ret);
          });
      };
  
      /** section: github
       *  events#getReceivedPublic(msg, callback) -> null
       *      - msg (Object): Object that contains the parameters and their values to be sent to the server.
       *      - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument.
       * 
       *  ##### Params on the `msg` object:
       * 
       *  - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent'.
       *  - user (String): Required. 
       *  - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `.
       *  - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `.
       **/
      this.getReceivedPublic = function(msg, block, callback) {
          var self = this;
          this.client.httpSend(msg, block, function(err, res) {
              if (err)
                  return self.sendError(err, null, msg, callback);
  
              var ret;
              try {
                  ret = res.data && JSON.parse(res.data);
              }
              catch (ex) {
                  if (callback)
                      callback(new error.InternalServerError(ex.message), res);
                  return;
              }
              
              if (!ret)
                  ret = {};
              if (!ret.meta)
                  ret.meta = {};
              ["x-ratelimit-limit", "x-ratelimit-remaining", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) {
                  if (res.headers[header])
                      ret.meta[header] = res.headers[header];
              });
              
              if (callback)
                  callback(null, ret);
          });
      };
  
      /** section: github
       *  events#getFromUser(msg, callback) -> null
       *      - msg (Object): Object that contains the parameters and their values to be sent to the server.
       *      - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument.
       * 
       *  ##### Params on the `msg` object:
       * 
       *  - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent'.
       *  - user (String): Required. 
       *  - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `.
       *  - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `.
       **/
      this.getFromUser = function(msg, block, callback) {
          var self = this;
          this.client.httpSend(msg, block, function(err, res) {
              if (err)
                  return self.sendError(err, null, msg, callback);
  
              var ret;
              try {
                  ret = res.data && JSON.parse(res.data);
              }
              catch (ex) {
                  if (callback)
                      callback(new error.InternalServerError(ex.message), res);
                  return;
              }
              
              if (!ret)
                  ret = {};
              if (!ret.meta)
                  ret.meta = {};
              ["x-ratelimit-limit", "x-ratelimit-remaining", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) {
                  if (res.headers[header])
                      ret.meta[header] = res.headers[header];
              });
              
              if (callback)
                  callback(null, ret);
          });
      };
  
      /** section: github
       *  events#getFromUserPublic(msg, callback) -> null
       *      - msg (Object): Object that contains the parameters and their values to be sent to the server.
       *      - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument.
       * 
       *  ##### Params on the `msg` object:
       * 
       *  - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent'.
       *  - user (String): Required. 
       *  - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `.
       *  - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `.
       **/
      this.getFromUserPublic = function(msg, block, callback) {
          var self = this;
          this.client.httpSend(msg, block, function(err, res) {
              if (err)
                  return self.sendError(err, null, msg, callback);
  
              var ret;
              try {
                  ret = res.data && JSON.parse(res.data);
              }
              catch (ex) {
                  if (callback)
                      callback(new error.InternalServerError(ex.message), res);
                  return;
              }
              
              if (!ret)
                  ret = {};
              if (!ret.meta)
                  ret.meta = {};
              ["x-ratelimit-limit", "x-ratelimit-remaining", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) {
                  if (res.headers[header])
                      ret.meta[header] = res.headers[header];
              });
              
              if (callback)
                  callback(null, ret);
          });
      };
  
      /** section: github
       *  events#getFromUserOrg(msg, callback) -> null
       *      - msg (Object): Object that contains the parameters and their values to be sent to the server.
       *      - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument.
       * 
       *  ##### Params on the `msg` object:
       * 
       *  - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent'.
       *  - user (String): Required. 
       *  - org (String): Required. 
       *  - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `.
       *  - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `.
       **/
      this.getFromUserOrg = function(msg, block, callback) {
          var self = this;
          this.client.httpSend(msg, block, function(err, res) {
              if (err)
                  return self.sendError(err, null, msg, callback);
  
              var ret;
              try {
                  ret = res.data && JSON.parse(res.data);
              }
              catch (ex) {
                  if (callback)
                      callback(new error.InternalServerError(ex.message), res);
                  return;
              }
              
              if (!ret)
                  ret = {};
              if (!ret.meta)
                  ret.meta = {};
              ["x-ratelimit-limit", "x-ratelimit-remaining", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) {
                  if (res.headers[header])
                      ret.meta[header] = res.headers[header];
              });
              
              if (callback)
                  callback(null, ret);
          });
      };
  
  }).call(events.events);
  