0

I'm working on a Gulp task that would fetch the result from an external API (https://api.wordpress.org/secret-key/1.1/salt/) and store it in a variable for use further down the pipeline.

I've tried using node's parseurl package like this

const gulp = require('gulp');
const replace = require('gulp-replace');
const plumber = require('gulp-plumber');
const parseurl = require('parseurl');

gulp.task('wordpress:config', function(){
    var salted_hash, url ="https://api.wordpress.org/secret-key/1.1/salt/";
    return gulp.src('./src/wp-config.php')
    .pipe(plumber(plumberErrorHandler))
    .pipe(
        function(){
            salted_hash = parseurl(url);
            console.log(salted_hash);
            return salted_hash;
        }
        )
    .pipe(replace('{DB_NAME}', project.db_name))
    .pipe(replace('{DB_USER}', project.db_user ))
    .pipe(replace('{DB_PASS}', project.db_pass ))
    .pipe(replace('{DB_PREFIX}', project.theme_slug+'_' ))
    .pipe(replace('{SALTED_HASH}', salted_hash ))
    .pipe(gulp.dest('./'+project.wordpress ));
});

This returns an error: TypeError: dest.on is not a function. I'm not sure this is at all in the right direction and could use your advises.

pixeline
  • 17,669
  • 12
  • 84
  • 109

1 Answers1

3

I could make it work using request() instead, and launch the pipeline in the request callback, like this:

const gulp = require('gulp');
const request = require('request');
const replace = require('gulp-replace');
const plumber = require('gulp-plumber');

gulp.task('wordpress:config', function() {
    return request("https://api.wordpress.org/secret-key/1.1/salt/", function(error, response, body) {
        if (!error && response.statusCode == 200) {
            gulp.src('./src/wp-config.php')
            .pipe(plumber(plumberErrorHandler))
            .pipe(replace('{DB_NAME}', project.db_name))
            .pipe(replace('{DB_USER}', project.db_user))
            .pipe(replace('{DB_PASS}', project.db_pass))
            .pipe(replace('{DB_PREFIX}', project.theme_slug + '_'))
            .pipe(replace('{SALTED_HASH}', body))
            .pipe(gulp.dest('./' + project.wordpress));
        }
    });
});
pixeline
  • 17,669
  • 12
  • 84
  • 109