2323 */
2424package org .kohsuke .github ;
2525
26+ import org .apache .commons .io .IOUtils ;
2627import org .codehaus .jackson .map .DeserializationConfig .Feature ;
2728import org .codehaus .jackson .map .ObjectMapper ;
2829import org .codehaus .jackson .map .introspect .VisibilityChecker .Std ;
2930
31+ import java .io .File ;
32+ import java .io .FileInputStream ;
33+ import java .io .FileNotFoundException ;
3034import java .io .IOException ;
3135import java .net .URL ;
3236import java .util .HashMap ;
3337import java .util .Map ;
38+ import java .util .Properties ;
3439
3540import static org .codehaus .jackson .annotate .JsonAutoDetect .Visibility .ANY ;
3641import static org .codehaus .jackson .annotate .JsonAutoDetect .Visibility .NONE ;
@@ -46,18 +51,37 @@ public class GitHub {
4651
4752 private final Map <String ,GHUser > users = new HashMap <String , GHUser >();
4853
54+ private GitHub (String login , String apiToken ) {
55+ this .login = login ;
56+ this .token = apiToken ;
57+ }
58+
59+ /**
60+ * Obtains the credential from "~/.github"
61+ */
62+ public static GitHub connect () throws IOException {
63+ Properties props = new Properties ();
64+ File homeDir = new File (System .getProperty ("user.home" ));
65+ FileInputStream in = new FileInputStream (new File (homeDir , ".github" ));
66+ try {
67+ props .load (in );
68+ } finally {
69+ IOUtils .closeQuietly (in );
70+ }
71+ return new GitHub (props .getProperty ("login" ),props .getProperty ("token" ));
72+ }
73+
74+ public static GitHub connect (String login , String apiToken ) throws IOException {
75+ return new GitHub (login ,apiToken );
76+ }
77+
4978 /**
5079 * Connects to GitHub anonymously.
5180 *
5281 * All operations that requires authentication will fail.
5382 */
54- public GitHub () {
55- this (null ,null );
56- }
57-
58- public GitHub (String login , String apiToken ) {
59- this .login = login ;
60- this .token = apiToken ;
83+ public static GitHub connectAnonymously () {
84+ return new GitHub (null ,null );
6185 }
6286
6387 /*package*/ void requireCredential () {
0 commit comments