I have 1,211,434 IP addresses that needed to be converted into geolocations. I found an api that answers this question by using GET request. But the thing is, the when using a for loop, I can not send the ip address and receive the description correctly.
Majorly I have two questions:
- I just can not output the - ip_and_infoarray, and can't find the reason. Can anybody tell me what went wrong?
- Now, the code I wrote can retrieve all the information that I need, there are around 200 ip addresses in the test_ip.txt. Would there be a potential problem if I try to send all those 1M IP addresses? 
Is there anyone can give me some advice?
Much Appreciated.
My code is as below:
fs = require('fs')
async = require("async")
http = require('http')
ip_and_info = []
// getIPInfo("1.171.58.24")
fs.readFile("../test_ips.txt", "utf-8", (err, content, printArr) => {
    content = content.split("\n")
    async.each(content, (ip) => {
        content = getIPInfo(ip)
        // console.log(ip)
    }, (err) => {
        if (err) {
            console.log(err)
        } else {
            console.log(ip_and_info)
        }
    })
    // for (i in content) {
    //     ((ip) => {
    //         getIPInfo(ip)
    //     })(content[i])
    // }
});
function getIPInfo(ipAddress) {
    options = {
        host: 'freegeoip.net',
        path: '/csv/' + ipAddress
    }
    request = http.get(options, function(response) {
        // console.log('STATUS: ' + response.statusCode)
        // console.log('HEADERS: ' + JSON.stringify(response.headers))
        // Buffer the body entirely for processing as a whole.
        bodyChunks = []
        response.on('data', function(chunk) {
            bodyChunks.push(chunk)
        }).on('end', function() {
            body = Buffer.concat(bodyChunks)
            content = body.toString('ascii')
            ip_and_info.push(content)
            console.log(content)
            return content
        })
    })
    request.on('error', function(e) {
        console.log('ERROR: ' + e.message)
    })
}
Much Appreciated!
 
     
     
    