visitYield()

in lib/common_generator.js [589:637]


  visitYield(ast, level) {
    assert.equal(ast.type, 'yield');
    let property = '';
    if (ast.expr && ast.expr.left && ast.expr.left.propertyPath) {
      property = ast.expr.left.propertyPath.pop();
    }
    if (_name(property) === 'doSSERequest') {
      const args = ast.expr.args;
      this.emit(`TeaRequest teaRequest = REQUEST.copy()`, level);
      this.emit('.setStyle(RequestStyle.');
      this.emit(`${_string(args[0].value).toUpperCase()}`);
      this.emit(').setAction("');
      this.emit(`${_string(args[1].value)}`);
      this.emit('").setMethod(HttpMethod.');
      this.emit(`${_string(args[2].value).toUpperCase()}`);
      this.emit(').setPathRegex("');
      this.emit(`${_string(args[3].value)}`);
      this.emit('").setBodyType(BodyType.');
      this.emit(`${_string(args[4].value).toUpperCase()}`);
      this.emit(').setBodyIsForm(');
      this.emit(`${args[5].value}`);
      if (typeof args[6].value.string !== 'undefined' && args[6].value.string !== '') {
        this.emit(').setReqBodyType(BodyType.');
        this.emit(`${_string(args[6].value).toUpperCase()}`);
      }
      this.emitln(`).formModel(${_name(args[7].id)});`);
      let modelName = _name(ast.expectedType);
      this.emitln(`${modelName}Iterator iterator = ${modelName}Iterator.create();`, level);
      this.ctx.iterators.push({
        iteratorType: ast.expectedType,
        iteratorStyle: SSE,
      });
      this.emitln(`ClientExecutionParams params = new ClientExecutionParams().withInput(${_name(args[7].id)}).withRequest(teaRequest).withHttpResponseHandler(new SSEHttpResponseHandler(iterator));`, level);
      var id = _name(ast.expr.left.id);
      if (id.indexOf('@') > -1) {
        id = `this.${id.substr(1)}`;
      }
      this.emitln(`${id}.execute(params);`, level);
      this.emitln('return new ResponseIterable<>(iterator);', level);
      return;
    }
    this.emit('return ', level);
    if (!ast.expr) {
      this.emit(';\n');
      return;
    }
    this.visitExpr(ast.expr, level);
    this.emit(';\n');
  }