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.releaser.service;
35
36 import java.util.Properties;
37
38 import org.apache.commons.lang3.StringUtils;
39
40 import twitter4j.Status;
41 import twitter4j.Twitter;
42 import twitter4j.TwitterException;
43 import twitter4j.TwitterFactory;
44 import twitter4j.auth.Authorization;
45 import twitter4j.auth.AuthorizationFactory;
46 import twitter4j.conf.Configuration;
47 import twitter4j.conf.PropertyConfiguration;
48 import fr.paris.lutece.plugins.releaser.util.CommandResult;
49 import fr.paris.lutece.plugins.releaser.util.ConstanteUtils;
50 import fr.paris.lutece.plugins.releaser.util.ReleaserUtils;
51 import fr.paris.lutece.portal.service.spring.SpringContextService;
52 import fr.paris.lutece.portal.service.util.AppPropertiesService;
53
54
55
56
57
58 public class TwitterService implements ITwitterService
59 {
60
61
62 private static final String TWITTER_KEY_OAUTH_CONSUMER_KEY = "oauth.consumerKey";
63
64
65 private static final String TWITTER_KEY_OAUTH_CONSUMER_SECRET = "oauth.consumerSecret";
66
67
68 private static final String TWITTER_KEY_OAUTH_ACCESS_TOKEN = "oauth.accessToken";
69
70
71 private static final String TWITTER_KEY_OAUTH_ACCESS_TOKEN_SECRET = "oauth.accessTokenSecret";
72
73
74 private static final String TWITTER_KEY_OAUTH_ACCESS_TOKEN_URL = "oauth.accessTokenURL";
75
76
77 private static final String TWITTER_KEY_OAUTH_REQUEST_TOKEN_URL = "oauth.requestTokenURL";
78
79
80 private static final String TWITTER_KEY_OAUTH_AUTHORIZATION_URL = "oauth.authorizationURL";
81
82
83 private static final String TWITTER_KEY_HTTP_PROXY_HOST = " http.proxyHost";
84
85
86 private static final String TWITTER_KEY_HTTP_PROXY_PORT = " http.proxyPort";
87
88
89 private static Twitter _twitter = null;
90
91
92 private static ITwitterService _instance = null;
93
94
95
96
97
98
99 public static ITwitterService getService( )
100 {
101 if ( _instance == null )
102 {
103 _instance = SpringContextService.getBean( ConstanteUtils.BEAN_TWITTER_SERVICE );
104 _instance.init( );
105 }
106
107 return _instance;
108 }
109
110
111
112
113 public TwitterService( )
114 {
115
116 }
117
118
119
120
121
122
123
124
125
126 public void sendTweet( String strTweet, CommandResult commandResult )
127 {
128
129 try
130 {
131 if ( !StringUtils.isEmpty( strTweet ) )
132 {
133 Status status = _twitter.updateStatus( strTweet );
134 commandResult.getLog( ).append( "Le Tweet " + status.getText( ) + " a été envoyé depuis " + status.getUser( ).getScreenName( ) + "\n" );
135 }
136
137 }
138 catch( TwitterException e )
139 {
140
141 ReleaserUtils.addInfoError( commandResult, "Une erreur est surnvenue lors de l'envoi du tweet:" + strTweet, e );
142 }
143
144 }
145
146
147
148
149 public void init( )
150 {
151 Properties props = new Properties( );
152 props.put( TWITTER_KEY_OAUTH_CONSUMER_KEY, AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_TWITTER_OAUTH_CONSUMER_KEY ) );
153 props.put( TWITTER_KEY_OAUTH_CONSUMER_SECRET, AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_TWITTER_OAUTH_CONSUMER_SECRET ) );
154 props.put( TWITTER_KEY_OAUTH_ACCESS_TOKEN, AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_TWITTER_OAUTH_ACCESS_TOKEN ) );
155 props.put( TWITTER_KEY_OAUTH_ACCESS_TOKEN_SECRET, AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_TWITTER_OAUTH_ACCESS_TOKEN_SECRET ) );
156 props.put( TWITTER_KEY_OAUTH_REQUEST_TOKEN_URL, AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_TWITTER_OAUTH_REQUEST_TOKEN_URL ) );
157 props.put( TWITTER_KEY_OAUTH_AUTHORIZATION_URL, AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_TWITTER_OAUTH_AUTHORIZATION_URL ) );
158 props.put( TWITTER_KEY_OAUTH_ACCESS_TOKEN_URL, AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_TWITTER_OAUTH_ACCESSTOKEN_URL ) );
159 props.put( TWITTER_KEY_HTTP_PROXY_HOST, AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_PROXY_HOST ) );
160 props.put( TWITTER_KEY_HTTP_PROXY_PORT, AppPropertiesService.getProperty( ConstanteUtils.PROPERTY_PROXY_PORT ) );
161
162 Configuration conf = new PropertyConfiguration( props );
163 Authorization auth = AuthorizationFactory.getInstance( conf );
164
165 _twitter = new TwitterFactory( conf ).getInstance( auth );
166
167 }
168
169 }