1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.mylutece.modules.oauth.authentication;
35
36 import fr.paris.lutece.portal.service.security.LuteceUser;
37 import fr.paris.lutece.portal.service.util.AppLogService;
38
39 import net.sf.json.JSONObject;
40
41 import org.apache.http.HttpResponse;
42
43 import java.io.BufferedReader;
44 import java.io.IOException;
45 import java.io.InputStreamReader;
46
47 import java.util.Map.Entry;
48
49
50
51
52
53
54
55 public class JSONCredentialRetriever extends AbstractOAuthCredentialsRetriever
56 {
57
58
59
60
61 public void doRetrieveUserInfo( HttpResponse httpResponse, OAuthUser user )
62 {
63 JSONObject json = JSONObject.fromObject( readResponse( httpResponse ) );
64
65 for ( Entry<String, String[]> entry : getTags( ).entrySet( ) )
66 {
67 String strKey = entry.getKey( );
68
69 for ( String strJSONKey : entry.getValue( ) )
70 {
71 if ( json.containsKey( strJSONKey ) )
72 {
73 String strValue = json.getString( strJSONKey );
74
75 if ( AppLogService.isDebugEnabled( ) )
76 {
77 AppLogService.debug( "Retrieved " + strValue + " for " + entry.getKey( ) );
78 }
79
80 user.setUserInfo( strKey, strValue );
81
82 if ( LuteceUser.NAME_GIVEN.equals( strKey ) )
83 {
84 user.setName( strValue );
85 }
86
87 break;
88 }
89 }
90 }
91 }
92
93
94
95
96
97
98 private String readResponse( HttpResponse httpResponse )
99 {
100 BufferedReader buffer = null;
101 try
102 {
103 StringBuilder sbResponse = new StringBuilder( );
104 InputStreamReader streamReader = new InputStreamReader( httpResponse.getEntity( ).getContent( ) );
105
106 buffer = new BufferedReader( streamReader );
107
108 String line = buffer.readLine( );
109
110 while ( line != null )
111 {
112 sbResponse.append( line );
113 line = buffer.readLine( );
114 }
115
116 return sbResponse.toString( );
117 }
118 catch ( IllegalStateException e )
119 {
120 AppLogService.error( e.getMessage( ), e );
121 }
122 catch ( IOException e )
123 {
124 AppLogService.error( e.getMessage( ), e );
125 }
126 finally
127 {
128 if ( buffer != null )
129 {
130 try
131 {
132 buffer.close();
133 }
134 catch ( IOException e )
135 {
136 AppLogService.error( e.getMessage(), e );
137 }
138 }
139 }
140
141 return null;
142 }
143 }