0

Pentaho の REST クライアント リクエストで Twitter にリクエストを送信できるようにしたいのですが、このソフトウェアには oauth の概念がありません。Pentaho の Java クラス変換で実装したい( Java での OAuth の実装) きちんとした Java クラスを見つけましたが、Pentaho を初めて使用するので、このタスクは非常に困難です。誰かがこれで私を助けてくれることを願っています....

4

1 に答える 1

3

twitter4Jという素晴らしい Twitter Java ライブラリを見つけ、コア クラスを pentaho ディレクトリ pentaho/design-tools/data-integration/libext にインポートし、以下のカスタム ユーザー Java クラスを作成しました。

// NO COLLECTION TYPE SAFETY ALLOWED, MUST CAST ALL OBJECTS
import twitter4j.*;
import twitter4j.auth.*;
import twitter4j.conf.*;
//import other libs here

//put your vars here


// Variables
private Twitter twitter = null;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException 
{

    Object[] r = getRow();
    if (r==null)
    {
        setOutputDone();
        return false;
    }

    if (first) {
        first=false;

        paging = new Paging();
        paging.setCount(100);

    }

    oauth_user_key = get(Fields.In, "oauth_user_key").getString(r); 
    oauth_user_secret = get(Fields.In, "oauth_user_secret").getString(r); 
    consumer_key = get(Fields.In, "consumer_key").getString(r); 
    consumer_secret = get(Fields.In, "consumer_secret").getString(r); 

    //wierd long/string thing here (pentho compiles java wierd)
    user_id =  get(Fields.In, "source_user_id").getInteger(r);
    Long user = user_id;


    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
        .setIncludeEntitiesEnabled(true)
        .setOAuthConsumerKey(consumer_key)
        .setOAuthConsumerSecret(consumer_secret)
        .setOAuthAccessToken(oauth_user_key)
        .setOAuthAccessTokenSecret(oauth_user_secret);

    twitter = new TwitterFactory(cb.build()).getInstance();

    try {
        //be creative with twitter4j here and output rows with results (may require a loop)

    } catch (TwitterException e){
        logDebug(e.getMessage());
        return true;
    }

    logBasic("twitter collect done" );
    return true;
}
于 2012-06-27T13:20:09.713 に答える