package com.vaguehope.onosendai.provider.twitter; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import com.vaguehope.onosendai.util.IoHelper; import com.vaguehope.onosendai.util.StringHelper; public final class TwitterOauth { public static final String CALLBACK_URL = "oauth://twitter"; public static final String IEXTRA_AUTH_URL = "auth_url"; public static final String IEXTRA_OAUTH_VERIFIER = "oauth_verifier"; public static final String IEXTRA_OAUTH_TOKEN = "oauth_token"; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - private static final String RES_PATH = "/api_twitter"; private static final String DEF_KEY = "API_TWITTER_CONSUMER_KEY"; private static final String DEF_SECRET = "API_TWITTER_CONSUMER_SECRET"; private static boolean read = false; private static String key; private static String secret; private TwitterOauth () { throw new AssertionError(); } public static String getConsumerKey () { read(); return key; } public static String getConsumerSecret () { read(); return secret; } private static void read () { if (read) return; final BufferedReader r = new BufferedReader(new InputStreamReader(TwitterOauth.class.getResourceAsStream(RES_PATH), Charset.forName("UTF-8"))); try { key = r.readLine(); secret = r.readLine(); if (StringHelper.isEmpty(key) || StringHelper.isEmpty(secret) || DEF_KEY.equals(key) || DEF_SECRET.equals(secret)) throw new IllegalStateException("API keys are missing."); read = true; } catch (IOException e) { throw new IllegalStateException("Failed to read internal API resource.", e); } finally { IoHelper.closeQuietly(r); } } }