<commit_before>'use strict';

var fs = require('fs');
var request = require('request');
var validUrl = require('valid-url');
var parseDataForLinks = require('./lib/parsedataforlinks');

module.exports = function getPageLinks(opts, callback){

  if(!opts.uri && !opts.file && !opts.data){
    return callback(new Error('Missing required param'), null);
  }

  if(opts.uri && !validUrl.isWebUri(opts.uri)){
    return callback(new Error('Invalid uri'), null);
  }

  var newOpts = {
      data : false,
      attrs: opts.attrs
    }
    ;

  if(opts.uri){
    request(opts.uri, function(error, response, body){
      if(error){
        return callback(error, null);
      }

      newOpts.data = body.toString()
        ;

      parseDataForLinks(newOpts, function(err, links){
        if(err){
          return callback(err, null);
        }

        return callback(null, links);

      });

    });
  }

  if(opts.file){
    fs.readFile(opts.file, function(err, data){
      if(err){
        return callback(err, null);
      }

      newOpts.data = data.toString();

      parseDataForLinks(newOpts, function(err, links){
        if(err){
          return callback(err, null);
        }

        return callback(null, links);

      });

    });
  }

  if(opts.data){

    newOpts.data = opts.data;

    parseDataForLinks(newOpts, function(err, links){
      if(err){
        return callback(err, null);
          }

      return callback(null, links);

    });
  }

};<commit_msg>Refactoring<commit_after>'use strict';

var fs = require('fs');
var request = require('request');
var validUrl = require('valid-url');
var parseDataForLinks = require('./lib/parsedataforlinks');

function parseAndReturn(options, callback){
  parseDataForLinks(options, function(err, links){
    if (err) {
      return callback(err, null);
    }
    return callback(null, links);
  });
}

function getPageData(opts, callback){

  if (!opts.uri && !opts.file && !opts.data) {
    return callback(new Error('Missing required param'), null);
  }

  if (opts.uri && !validUrl.isWebUri(opts.uri)) {
    return callback(new Error('Invalid uri'), null);
  }

  var newOpts = {
    data : false,
    attrs: opts.attrs
  };

  if (opts.uri) {
    request(opts.uri, function(error, response, body){
      if (error) {
        return callback(error, null);
      }

      newOpts.data = body.toString();

      parseAndReturn(newOpts, callback);

    });
  }

  if (opts.file) {
    fs.readFile(opts.file, function(err, data){
      if (err) {
        return callback(err, null);
      }

      newOpts.data = data.toString();

      parseAndReturn(newOpts, callback);

    });
  }

  if (opts.data) {

    newOpts.data = opts.data;

    parseAndReturn(newOpts, callback);
  }

}

module.exports = getPageData;
{'fraction_non_alphanumeric': 0.1520488856937455, 'fraction_numerical': 0.0, 'mean_word_length': 2.6909814323607426, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '840171', 'n_tokens_mistral': 902, 'n_tokens_neox': 883, 'n_words': 186}