package com.socioboard.t_board_pro.twitterapi;
import java.net.URLEncoder;
import java.security.Key;
import java.util.List;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.http.message.BasicNameValuePair;
public class OAuthSignaturesGeneratorPostReq {
public static final String ENCODING = "UTF-8";
public static final String VERSION_1_0 = "1.0";
public static final String FORM_ENCODED = "application/x-www-form-urlencoded";
public static final String OAUTH_CONSUMER_KEY = "oauth_consumer_key";
public static final String OAUTH_TOKEN = "oauth_token";
public static final String OAUTH_TOKEN_SECRET = "oauth_token_secret";
public static final String OAUTH_SIGNATURE_METHOD = "oauth_signature_method";
public static final String OAUTH_SIGNATURE = "oauth_signature";
public static final String OAUTH_TIMESTAMP = "oauth_timestamp";
public static final String OAUTH_NONCE = "oauth_nonce";
public static final String OAUTH_VERSION = "oauth_version";
public static final String OAUTH_CALLBACK = "oauth_callback";
public static final String OAUTH_CALLBACK_CONFIRMED = "oauth_callback_confirmed";
public static final String OAUTH_VERIFIER = "oauth_verifier";
public static final String HMAC_SHA1 = "HMAC-SHA1";
public static final String RSA_SHA1 = "RSA-SHA1";
public String accesToken;
public String tokenSecret;
public String cKey, cSecret;
public String url, method;
public String currentTimeStamp, currentOnonce;
public OAuthSignaturesGeneratorPostReq(String accesToken,
String tokenSecret, String cKey, String cSecret, String method) {
super();
this.accesToken = accesToken;
this.tokenSecret = tokenSecret;
this.cKey = cKey;
this.method = method;
this.cSecret = cSecret;
}
public String getOauthSignature(List<BasicNameValuePair> peramPairs) {
String oAuthSignature = null;
// * * * 1 * * * *
String GeneratedPerams = gentratedPerams(peramPairs);
// * * * 2 * * * *
String baseString = generateBaseString(GeneratedPerams);
// * * * 3 * * * *
String singningKey = genrateSigningKey();
// * * * 4 * * * *
oAuthSignature = getCalcShaHash(baseString, singningKey);
// * * * Done * * * *
return oAuthSignature;
}
String gentratedPerams(List<BasicNameValuePair> peramPairs) {
String GeneratedPerams = "";
GeneratedPerams = GeneratedPerams + "&" + OAUTH_CONSUMER_KEY + "="
+ URLEncoder.encode(getcKey()) + "&" + OAUTH_NONCE + "="
+ URLEncoder.encode(currentOnonce) + "&"
+ OAUTH_SIGNATURE_METHOD + "=" + URLEncoder.encode(HMAC_SHA1)
+ "&" + OAUTH_TIMESTAMP + "="
+ URLEncoder.encode(currentTimeStamp) + "&" + OAUTH_TOKEN + "="
+ URLEncoder.encode(getAccesToken()) + "&" + OAUTH_VERSION
+ "=" + URLEncoder.encode(VERSION_1_0);
if (peramPairs.size() > 0) {
for (int i = 0; i < peramPairs.size(); ++i) {
if (i == 0) {
GeneratedPerams = peramPairs.get(i).getName()+ "=" + URLEncoder.encode(peramPairs.get(i).getValue()).replace("+", "%20");
} else {
GeneratedPerams = GeneratedPerams
+ "&"
+ peramPairs.get(i).getName()
+ "="
+ URLEncoder.encode(peramPairs.get(i).getValue())
.replace("+", "%20");
}
}
}
System.out.println("GeneratedPerams = " + GeneratedPerams);
return GeneratedPerams;
}
String generateBaseString(String peramsUrl) {
String baseString = null;
// System.out.println("URLEncoder.encode("+url+") = "+
// URLEncoder.encode(url ));
baseString = method + "&" + URLEncoder.encode(url) + "&"
+ URLEncoder.encode(peramsUrl);
// System.out.println("baseString = "+ baseString);
return baseString;
}
String genrateSigningKey() {
String singningKey = null;
singningKey = URLEncoder.encode(cSecret) + "&"
+ URLEncoder.encode(tokenSecret);
System.out.println("genrateSigningKey = " + singningKey);
return singningKey;
}
public String getAccesToken() {
return accesToken;
}
public void setAccesToken(String accesToken) {
this.accesToken = accesToken;
}
public String getAcessSecret() {
return tokenSecret;
}
public void setAcessSecret(String tokenSecret) {
this.tokenSecret = tokenSecret;
}
public String getcKey() {
return cKey;
}
public void setcKey(String cKey) {
this.cKey = cKey;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
currentTimeStamp = calcTstamp();
currentOnonce = calcOnonce();
this.url = url;
}
public String calcTstamp() {
return new String("" + System.currentTimeMillis() / 1000);
}
public String calcOnonce() {
String oNonce = new String("" + (System.currentTimeMillis()) / 1000
* 55);
System.out.println("getOnonce = " + oNonce);
return oNonce;
}
public String getCalcShaHash(String data, String key) {
String oAuthSignature = null;
try {
Key signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1);
Mac mac = Mac.getInstance(HMAC_SHA1);
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(data.getBytes());
// Done
String noUrlEncoding = Base64.encodeBytes(rawHmac);
// Dircet
oAuthSignature = noUrlEncoding;
// perencoded
// oAuthSignature = URLEncoder.encode(noUrlEncoding,"ISO-8859-1");
System.out.println("getCalcShaHash = " + oAuthSignature);
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception = " + e);
}
return oAuthSignature;
}
}