browser.js 1.12 KB
'use strict';

var native = module.exports;

native._canCheck = function(me) {
	me._canCheck = {};
	return me
		.request({ url: me._baseUrl + '/api/_acme_api_/' })
		.then(function(resp) {
			if (resp.body.success) {
				me._canCheck['http-01'] = true;
				me._canCheck['dns-01'] = true;
			}
		})
		.catch(function() {
			// ignore
		});
};

native._dns01 = function(me, ch) {
	return me
		.request({
			url: me._baseUrl + '/api/dns/' + ch.dnsHost + '?type=TXT'
		})
		.then(function(resp) {
			var err;
			if (!resp.body || !Array.isArray(resp.body.answer)) {
				err = new Error('failed to get DNS response');
				console.error(err);
				throw err;
			}
			if (!resp.body.answer.length) {
				err = new Error('failed to get DNS answer record in response');
				console.error(err);
				throw err;
			}
			return {
				answer: resp.body.answer.map(function(ans) {
					return { data: ans.data, ttl: ans.ttl };
				})
			};
		});
};

native._http01 = function(me, ch) {
	var url = encodeURIComponent(ch.challengeUrl);
	return me
		.request({
			url: me._baseUrl + '/api/http?url=' + url
		})
		.then(function(resp) {
			return resp.body;
		});
};