@@ -62,7 +62,6 @@ public class PhysicalWebBroadcastService extends Service {
62
62
private NotificationManagerCompat mNotificationManager ;
63
63
private Handler mHandler = new Handler ();
64
64
private String mDisplayUrl ;
65
- private byte [] mShareUrl ;
66
65
private boolean mStartedByRestart ;
67
66
68
67
private final BroadcastReceiver mReceiver = new BroadcastReceiver () {
@@ -110,63 +109,34 @@ public int onStartCommand(Intent intent, int flags, int startId) {
110
109
IntentFilter filter = new IntentFilter (BluetoothAdapter .ACTION_STATE_CHANGED );
111
110
registerReceiver (mReceiver , filter );
112
111
113
- Log .d (TAG , mDisplayUrl );
114
- byte [] encodedUrl = AdvertiseDataUtils .encodeUri (mDisplayUrl );
115
- if (hasValidUrlLength (encodedUrl .length ) && checkAndHandleAsciiUrl (mDisplayUrl )) {
116
- // Set the url if we can
117
- Log .d (TAG , "valid length" );
118
- mShareUrl = encodedUrl ;
119
- broadcastUrl ();
120
- } else {
121
- Log .d (TAG , "needs shortening" );
122
- UrlShortenerClient .ShortenUrlCallback urlSetter =
123
- new UrlShortenerClient .ShortenUrlCallback () {
124
- @ Override
125
- public void onUrlShortened (String newUrl ) {
126
- Log .d (TAG , "shortening success" );
127
- mShareUrl = AdvertiseDataUtils .encodeUri (newUrl );
128
- broadcastUrl ();
129
- }
130
- @ Override
131
- public void onError (String oldUrl ) {
132
- Toast .makeText (getApplicationContext (), getString (R .string .shorten_error ),
133
- Toast .LENGTH_LONG ).show ();
134
- stopSelf ();
135
- }
136
- };
137
- UrlShortenerClient shortenerClient = UrlShortenerClient .getInstance (this );
112
+ handleUrl ();
138
113
139
- if (mDisplayUrl .contains ("goo.gl" )) {
140
- // find the site URL and reshorten it since
141
- // goo.gl will not reshorten other goo.gl links
142
- fetchAndShorten (shortenerClient , urlSetter );
143
- } else {
144
- shortenerClient .shortenUrl (mDisplayUrl , urlSetter , TAG );
145
- }
146
- }
147
114
return START_STICKY ;
148
115
}
149
116
150
- private void fetchAndShorten (UrlShortenerClient shortenerClient ,
151
- UrlShortenerClient .ShortenUrlCallback urlSetter ) {
152
- PwsClient pwsClient = new PwsClient ();
153
- pwsClient .resolve (Arrays .asList (mDisplayUrl ), new PwsResultCallback () {
117
+ private void handleUrl () {
118
+ PwsClient pwsClient = new PwsClient ();
119
+ pwsClient .resolve (Arrays .asList (mDisplayUrl ), new PwsResultCallback () {
154
120
@ Override
155
121
public void onPwsResult (PwsResult pwsResult ) {
156
- shortenerClient .shortenUrl (pwsResult .getSiteUrl (), urlSetter , TAG );
122
+ String fullUrl = pwsResult .getSiteUrl ();
123
+ byte [] encodedUrl = AdvertiseDataUtils .encodeUri (fullUrl );
124
+ if (checkNeedsShortening (encodedUrl , fullUrl )) {
125
+ shortenAndBroadcastUrl (fullUrl );
126
+ } else {
127
+ broadcastUrl (encodedUrl );
128
+ }
157
129
}
158
130
159
131
@ Override
160
132
public void onPwsResultAbsent (String url ) {
161
- Toast .makeText (getApplicationContext (), getString (R .string .shorten_error ),
162
- Toast .LENGTH_LONG ).show ();
133
+ toastError (R .string .invalid_url_error );
163
134
stopSelf ();
164
135
}
165
136
166
137
@ Override
167
138
public void onPwsResultError (Collection <String > urls , int httpResponseCode , Exception e ) {
168
- Toast .makeText (getApplicationContext (), getString (R .string .shorten_error ),
169
- Toast .LENGTH_LONG ).show ();
139
+ toastError (R .string .invalid_url_error );
170
140
stopSelf ();
171
141
}
172
142
@@ -176,6 +146,25 @@ public void onResponseReceived(long durationMillis) {
176
146
});
177
147
}
178
148
149
+ private void shortenAndBroadcastUrl (String fullUrl ) {
150
+ UrlShortenerClient .ShortenUrlCallback urlSetter =
151
+ new UrlShortenerClient .ShortenUrlCallback () {
152
+ @ Override
153
+ public void onUrlShortened (String newUrl ) {
154
+ broadcastUrl (AdvertiseDataUtils .encodeUri (newUrl ));
155
+ }
156
+ @ Override
157
+ public void onError (String oldUrl ) {
158
+ toastError (R .string .shorten_error );
159
+ stopSelf ();
160
+ }
161
+ };
162
+
163
+ UrlShortenerClient shortenerClient = UrlShortenerClient .getInstance (this );
164
+
165
+ shortenerClient .shortenUrl (fullUrl , urlSetter , TAG );
166
+ }
167
+
179
168
private void fetchBroadcastData (Intent intent ) {
180
169
mStartedByRestart = intent == null ;
181
170
if (intent == null ) {
@@ -189,6 +178,10 @@ private void fetchBroadcastData(Intent intent) {
189
178
.commit ();
190
179
}
191
180
181
+ private boolean checkNeedsShortening (byte [] encodedUrl , String fullUrl ) {
182
+ return !hasValidUrlLength (encodedUrl .length ) || !checkAndHandleAsciiUrl (fullUrl );
183
+ }
184
+
192
185
private static boolean hasValidUrlLength (int uriLength ) {
193
186
return 0 < uriLength && uriLength <= MAX_URI_LENGTH ;
194
187
}
@@ -200,7 +193,7 @@ private boolean checkAndHandleAsciiUrl(String url) {
200
193
String urlString = uri .toASCIIString ();
201
194
isCompliant = url .equals (urlString );
202
195
} catch (URISyntaxException e ) {
203
- Toast . makeText ( this , getString ( R .string .no_url_error ), Toast . LENGTH_LONG ). show ( );
196
+ toastError ( R .string .no_url_error );
204
197
}
205
198
return isCompliant ;
206
199
}
@@ -249,8 +242,8 @@ public void onStartFailure(int result) {
249
242
/////////////////////////////////
250
243
251
244
// Broadcast via bluetooth the stored URL
252
- private void broadcastUrl () {
253
- final AdvertiseData advertisementData = AdvertiseDataUtils .getAdvertisementData (mShareUrl );
245
+ private void broadcastUrl (byte [] url ) {
246
+ final AdvertiseData advertisementData = AdvertiseDataUtils .getAdvertisementData (url );
254
247
final AdvertiseSettings advertiseSettings = AdvertiseDataUtils .getAdvertiseSettings (false );
255
248
mBluetoothLeAdvertiser .stopAdvertising (mAdvertiseCallback );
256
249
mBluetoothLeAdvertiser .startAdvertising (advertiseSettings ,
@@ -272,4 +265,7 @@ public void onReceive(Context context, Intent intent) {
272
265
}
273
266
};
274
267
268
+ private void toastError (int messageId ) {
269
+ Toast .makeText (getApplicationContext (), getString (messageId ), Toast .LENGTH_LONG ).show ();
270
+ }
275
271
}
0 commit comments