如何将端点作为参数传递给Ballerina中的函数

时间:2018-07-15 18:27:39

标签: ftp ftp-client ballerina

我正在使用“ wso2 / ftp”包进行某些文件传输过程,并且在主.bal文件中具有如下所示的ftp:Client端点。

endpoint ftp:Client server1 {
    protocol: ftp:FTP,
    host:<ip_address>,
    port:21,
    secureSocket: {
        basicAuth: {
            username: <user_name>,
            password: <password>
        }
    }
};

将此端点传递给另一个.bal文件中的公共功能的方法是什么。

尝试照做

function functionName(ftp:Client server1){
    functionFromOtherBalFile(server1);
} 

但收到错误消息

invalid action invocation, expected an endpoint

来自第二个.bal文件,其中包含“ functionFromOtherBalFile”实现。

“ functionFromOtherBalFile”的实现:

public function functionFromOtherBalFile(ftp:Client server1){
    var readFile=server1->get("/file.txt");
    match readFile{
        error err=>{
            io:println("An error occured");
            return err;
        }
        io:ByteChannel =>{
            io:println("Success");
            return readFile;
        }
    }
}

有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:4)

这是将端点作为参数传递给函数的方法。

import ballerina/http;
import ballerina/io;

function main (string... args) {
    endpoint http:Client cheapAir {
        url: "http://localhost:9090/CheapAir"
    };

    invoke(cheapAir);
}

function invoke(http:Client client) {
    endpoint http:Client myEP = client;

    json reqPayload = {firstName:"Sameera", lastName:"Jayasoma"};
    http:Response response = check myEP -> post("/bookFlight", reqPayload);
    json resPayload = check response.getJsonPayload();
    io:println(resPayload);  
}