import { Map } from '../types/lang';
import { assign } from '../util';
import * as request from 'request';

export class Lookup {
    constructor(options) {
    }

    public request(requestOptions: Map<any>, callback) {
        var service = requestOptions.service;
        delete requestOptions.service;
        var options = assign({
            uri: `http://${requestOptions.host}:${requestOptions.port}/v1/lookup/name?name=${service}`
        }, requestOptions || {});
        
        request(options, function (err, response) {
            if (err) {
                callback(err);
                return;
            }

            if (response.statusCode !== 200) {
                callback(new Error(`Error: ${response.statusMessage} - ${response.statusMessage}`));
                return;
            }
            
            callback(null, typeof response.body === 'string' && JSON.parse(response.body) || response.body);
        });
    }
}