sprinkle in some async/await
This commit is contained in:
		
							parent
							
								
									297b932db2
								
							
						
					
					
						commit
						71746ca759
					
				
							
								
								
									
										108
									
								
								greenlock.js
									
									
									
									
									
								
							
							
						
						
									
										108
									
								
								greenlock.js
									
									
									
									
									
								
							@ -113,8 +113,8 @@ G.create = function(gconf) {
 | 
				
			|||||||
                request: request
 | 
					                request: request
 | 
				
			||||||
                //punycode: require('punycode')
 | 
					                //punycode: require('punycode')
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            .then(function() {
 | 
					            .then(async function() {
 | 
				
			||||||
                return greenlock.manager._defaults().then(function(MCONF) {
 | 
					                var MCONF = await greenlock.manager._defaults();
 | 
				
			||||||
                mergeDefaults(MCONF, gconf);
 | 
					                mergeDefaults(MCONF, gconf);
 | 
				
			||||||
                if (true === MCONF.agreeToTerms) {
 | 
					                if (true === MCONF.agreeToTerms) {
 | 
				
			||||||
                    gdefaults.agreeToTerms = function(tos) {
 | 
					                    gdefaults.agreeToTerms = function(tos) {
 | 
				
			||||||
@ -123,7 +123,6 @@ G.create = function(gconf) {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return greenlock.manager._defaults(MCONF);
 | 
					                return greenlock.manager._defaults(MCONF);
 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            .catch(function(err) {
 | 
					            .catch(function(err) {
 | 
				
			||||||
                if ('load_plugin' !== err.context) {
 | 
					                if ('load_plugin' !== err.context) {
 | 
				
			||||||
@ -196,14 +195,10 @@ G.create = function(gconf) {
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // certs.get
 | 
					    // certs.get
 | 
				
			||||||
    greenlock.get = function(args) {
 | 
					    greenlock.get = async function(args) {
 | 
				
			||||||
        return greenlock
 | 
					        greenlock._single(args);
 | 
				
			||||||
            ._single(args)
 | 
					 | 
				
			||||||
            .then(function() {
 | 
					 | 
				
			||||||
        args._includePems = true;
 | 
					        args._includePems = true;
 | 
				
			||||||
                return greenlock.renew(args);
 | 
					        var results = await greenlock.renew(args);
 | 
				
			||||||
            })
 | 
					 | 
				
			||||||
            .then(function(results) {
 | 
					 | 
				
			||||||
        if (!results || !results.length) {
 | 
					        if (!results || !results.length) {
 | 
				
			||||||
            // TODO throw an error here?
 | 
					            // TODO throw an error here?
 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
@ -235,12 +230,12 @@ G.create = function(gconf) {
 | 
				
			|||||||
        // site for plugin options, such as http-01 challenge
 | 
					        // site for plugin options, such as http-01 challenge
 | 
				
			||||||
        // pems for the obvious reasons
 | 
					        // pems for the obvious reasons
 | 
				
			||||||
        return result;
 | 
					        return result;
 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    greenlock._single = function(args) {
 | 
					    // TODO remove async here, it doesn't matter
 | 
				
			||||||
 | 
					    greenlock._single = async function(args) {
 | 
				
			||||||
        if ('string' !== typeof args.servername) {
 | 
					        if ('string' !== typeof args.servername) {
 | 
				
			||||||
            return Promise.reject(new Error('no `servername` given'));
 | 
					            throw new Error('no `servername` given');
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // www.example.com => *.example.com
 | 
					        // www.example.com => *.example.com
 | 
				
			||||||
        args.wildname =
 | 
					        args.wildname =
 | 
				
			||||||
@ -262,34 +257,31 @@ G.create = function(gconf) {
 | 
				
			|||||||
            args.issueBefore ||
 | 
					            args.issueBefore ||
 | 
				
			||||||
            args.expiresBefore
 | 
					            args.expiresBefore
 | 
				
			||||||
        ) {
 | 
					        ) {
 | 
				
			||||||
            return Promise.reject(
 | 
					            throw new Error(
 | 
				
			||||||
                new Error(
 | 
					 | 
				
			||||||
                'bad arguments, did you mean to call greenlock.renew()?'
 | 
					                'bad arguments, did you mean to call greenlock.renew()?'
 | 
				
			||||||
                )
 | 
					 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // duplicate, force, and others still allowed
 | 
					        // duplicate, force, and others still allowed
 | 
				
			||||||
        return Promise.resolve(args);
 | 
					        return args;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    greenlock._config = function(args) {
 | 
					    greenlock._config = async function(args) {
 | 
				
			||||||
        return greenlock._single(args).then(function() {
 | 
					        greenlock._single(args);
 | 
				
			||||||
            return greenlock._configAll(args).then(function(sites) {
 | 
					        var sites = await greenlock._configAll(args);
 | 
				
			||||||
        return sites[0];
 | 
					        return sites[0];
 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    greenlock._configAll = function(args) {
 | 
					    greenlock._configAll = async function(args) {
 | 
				
			||||||
        return greenlock._find(args).then(function(sites) {
 | 
					        var sites = await greenlock._find(args);
 | 
				
			||||||
        if (!sites || !sites.length) {
 | 
					        if (!sites || !sites.length) {
 | 
				
			||||||
            return [];
 | 
					            return [];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        sites = JSON.parse(JSON.stringify(sites));
 | 
					        sites = JSON.parse(JSON.stringify(sites));
 | 
				
			||||||
            return greenlock.manager._defaults().then(function(mconf) {
 | 
					        var mconf = await greenlock.manager._defaults();
 | 
				
			||||||
        return sites.map(function(site) {
 | 
					        return sites.map(function(site) {
 | 
				
			||||||
            if (site.store && site.challenges) {
 | 
					            if (site.store && site.challenges) {
 | 
				
			||||||
                return site;
 | 
					                return site;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var dconf = site;
 | 
					            var dconf = site;
 | 
				
			||||||
            // TODO make cli and api mode the same
 | 
					            // TODO make cli and api mode the same
 | 
				
			||||||
            if (gconf._bin_mode) {
 | 
					            if (gconf._bin_mode) {
 | 
				
			||||||
@ -303,26 +295,22 @@ G.create = function(gconf) {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            return site;
 | 
					            return site;
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // needs to get info about the renewal, such as which store and challenge(s) to use
 | 
					    // needs to get info about the renewal, such as which store and challenge(s) to use
 | 
				
			||||||
    greenlock.renew = function(args) {
 | 
					    greenlock.renew = async function(args) {
 | 
				
			||||||
        return greenlock._init().then(function() {
 | 
					        await greenlock._init();
 | 
				
			||||||
            return greenlock.manager._defaults().then(function(mconf) {
 | 
					        var mconf = await greenlock.manager._defaults();
 | 
				
			||||||
        return greenlock._renew(mconf, args);
 | 
					        return greenlock._renew(mconf, args);
 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    greenlock._renew = function(mconf, args) {
 | 
					    greenlock._renew = async function(mconf, args) {
 | 
				
			||||||
        if (!args) {
 | 
					        if (!args) {
 | 
				
			||||||
            args = {};
 | 
					            args = {};
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var renewedOrFailed = [];
 | 
					        var renewedOrFailed = [];
 | 
				
			||||||
        //console.log('greenlock._renew find', args);
 | 
					        //console.log('greenlock._renew find', args);
 | 
				
			||||||
        return greenlock._find(args).then(function(sites) {
 | 
					        var sites = await greenlock._find(args);
 | 
				
			||||||
        // Note: the manager must guaranteed that these are mutable copies
 | 
					        // Note: the manager must guaranteed that these are mutable copies
 | 
				
			||||||
        //console.log('greenlock._renew found', sites);;
 | 
					        //console.log('greenlock._renew found', sites);;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -332,10 +320,11 @@ G.create = function(gconf) {
 | 
				
			|||||||
                    JSON.stringify(sites)
 | 
					                    JSON.stringify(sites)
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
            function next() {
 | 
					
 | 
				
			||||||
 | 
					        await (async function next() {
 | 
				
			||||||
            var site = sites.shift();
 | 
					            var site = sites.shift();
 | 
				
			||||||
            if (!site) {
 | 
					            if (!site) {
 | 
				
			||||||
                    return Promise.resolve(null);
 | 
					                return null;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var order = { site: site };
 | 
					            var order = { site: site };
 | 
				
			||||||
@ -366,12 +355,9 @@ G.create = function(gconf) {
 | 
				
			|||||||
                .then(function() {
 | 
					                .then(function() {
 | 
				
			||||||
                    return next();
 | 
					                    return next();
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
            }
 | 
					        })();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return next().then(function() {
 | 
					 | 
				
			||||||
        return renewedOrFailed;
 | 
					        return renewedOrFailed;
 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    greenlock._acme = async function(mconf, args) {
 | 
					    greenlock._acme = async function(mconf, args) {
 | 
				
			||||||
@ -412,16 +398,14 @@ G.create = function(gconf) {
 | 
				
			|||||||
        return acme;
 | 
					        return acme;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    greenlock.order = function(siteConf) {
 | 
					    greenlock.order = async function(siteConf) {
 | 
				
			||||||
        return greenlock._init().then(function() {
 | 
					        await greenlock._init();
 | 
				
			||||||
            return greenlock.manager._defaults().then(function(mconf) {
 | 
					        var mconf = await greenlock.manager._defaults();
 | 
				
			||||||
        return greenlock._order(mconf, siteConf);
 | 
					        return greenlock._order(mconf, siteConf);
 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    greenlock._order = function(mconf, siteConf) {
 | 
					    greenlock._order = async function(mconf, siteConf) {
 | 
				
			||||||
        // packageAgent, maintainerEmail
 | 
					        // packageAgent, maintainerEmail
 | 
				
			||||||
        return greenlock._acme(mconf, siteConf).then(function(acme) {
 | 
					        var acme = await greenlock._acme(mconf, siteConf);
 | 
				
			||||||
        var storeConf = siteConf.store || mconf.store;
 | 
					        var storeConf = siteConf.store || mconf.store;
 | 
				
			||||||
        storeConf = JSON.parse(JSON.stringify(storeConf));
 | 
					        storeConf = JSON.parse(JSON.stringify(storeConf));
 | 
				
			||||||
        storeConf.packageRoot = gconf.packageRoot;
 | 
					        storeConf.packageRoot = gconf.packageRoot;
 | 
				
			||||||
@ -434,26 +418,26 @@ G.create = function(gconf) {
 | 
				
			|||||||
            gconf.packageRoot || process.cwd(),
 | 
					            gconf.packageRoot || process.cwd(),
 | 
				
			||||||
            storeConf.basePath
 | 
					            storeConf.basePath
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
            return P._loadStore(storeConf).then(function(store) {
 | 
					        var store = await P._loadStore(storeConf);
 | 
				
			||||||
                return A._getOrCreate(
 | 
					        var account = await A._getOrCreate(
 | 
				
			||||||
            greenlock,
 | 
					            greenlock,
 | 
				
			||||||
            mconf,
 | 
					            mconf,
 | 
				
			||||||
            store.accounts,
 | 
					            store.accounts,
 | 
				
			||||||
            acme,
 | 
					            acme,
 | 
				
			||||||
            siteConf
 | 
					            siteConf
 | 
				
			||||||
                ).then(function(account) {
 | 
					        );
 | 
				
			||||||
                    var challengeConfs =
 | 
					        var challengeConfs = siteConf.challenges || mconf.challenges;
 | 
				
			||||||
                        siteConf.challenges || mconf.challenges;
 | 
					        var challenges = {};
 | 
				
			||||||
                    return Promise.all(
 | 
					        var arr = await Promise.all(
 | 
				
			||||||
            Object.keys(challengeConfs).map(function(typ01) {
 | 
					            Object.keys(challengeConfs).map(function(typ01) {
 | 
				
			||||||
                return P._loadChallenge(challengeConfs, typ01);
 | 
					                return P._loadChallenge(challengeConfs, typ01);
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
                    ).then(function(arr) {
 | 
					        );
 | 
				
			||||||
                        var challenges = {};
 | 
					 | 
				
			||||||
        arr.forEach(function(el) {
 | 
					        arr.forEach(function(el) {
 | 
				
			||||||
            challenges[el._type] = el;
 | 
					            challenges[el._type] = el;
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
                        return C._getOrOrder(
 | 
					
 | 
				
			||||||
 | 
					        var pems = await C._getOrOrder(
 | 
				
			||||||
            greenlock,
 | 
					            greenlock,
 | 
				
			||||||
            mconf,
 | 
					            mconf,
 | 
				
			||||||
            store.certificates,
 | 
					            store.certificates,
 | 
				
			||||||
@ -461,21 +445,15 @@ G.create = function(gconf) {
 | 
				
			|||||||
            challenges,
 | 
					            challenges,
 | 
				
			||||||
            account,
 | 
					            account,
 | 
				
			||||||
            siteConf
 | 
					            siteConf
 | 
				
			||||||
                        ).then(function(pems) {
 | 
					        );
 | 
				
			||||||
        if (!pems) {
 | 
					        if (!pems) {
 | 
				
			||||||
            throw new Error('no order result');
 | 
					            throw new Error('no order result');
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (!pems.privkey) {
 | 
					        if (!pems.privkey) {
 | 
				
			||||||
                                throw new Error(
 | 
					            throw new Error('missing private key, which is kinda important');
 | 
				
			||||||
                                    'missing private key, which is kinda important'
 | 
					 | 
				
			||||||
                                );
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return pems;
 | 
					        return pems;
 | 
				
			||||||
                        });
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    greenlock._create();
 | 
					    greenlock._create();
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user