60
60
import java .net .URL ;
61
61
import java .util .ArrayList ;
62
62
import java .util .Arrays ;
63
+ import java .util .Collections ;
63
64
import java .util .HashSet ;
64
65
import java .util .Locale ;
65
66
import java .util .Map ;
69
70
import okhttp3 .Headers ;
70
71
import okhttp3 .OkHttpClient ;
71
72
import okhttp3 .Request ;
73
+ import okhttp3 .Request .Builder ;
72
74
import okhttp3 .Response ;
73
75
import okhttp3 .ResponseBody ;
74
76
@@ -104,7 +106,7 @@ public class GutenbergKitEditorFragment extends EditorFragmentAbstract implement
104
106
105
107
private boolean mEditorDidMount ;
106
108
107
- @ Nullable private static Map <String , Object > mSettings ;
109
+ @ NonNull private static Map <String , Object > mSettings = Collections . emptyMap () ;
108
110
private static boolean mIsPrivate = false ;
109
111
private static boolean mIsPrivateAtomic = false ;
110
112
@ NonNull OkHttpClient mHttpClient = new OkHttpClient ();
@@ -113,7 +115,7 @@ public static GutenbergKitEditorFragment newInstance(Context context,
113
115
boolean isNewPost ,
114
116
GutenbergWebViewAuthorizationData webViewAuthorizationData ,
115
117
boolean jetpackFeaturesEnabled ,
116
- @ Nullable Map <String , Object > settings ,
118
+ @ NonNull Map <String , Object > settings ,
117
119
boolean isPrivate ,
118
120
boolean isPrivateAtomic ) {
119
121
GutenbergKitEditorFragment fragment = new GutenbergKitEditorFragment ();
@@ -600,7 +602,7 @@ public boolean canIntercept(@NonNull WebResourceRequest request) {
600
602
}
601
603
602
604
boolean isSiteHostedMediaFile (@ NonNull String urlString ) {
603
- String siteURL = (String ) ( mSettings != null ? mSettings .get ("siteURL" ) : " " );
605
+ String siteURL = (String ) mSettings .get ("siteURL" );
604
606
Set <String > mediaExtensions = new HashSet <>(Arrays .asList (
605
607
"jpg" , "jpeg" , "png" , "gif" , "bmp" , "webp" ,
606
608
"mp4" , "mov" , "avi" , "mkv" ,
@@ -642,15 +644,19 @@ public WebResourceResponse handleRequest(@NonNull WebResourceRequest request) {
642
644
proxyUrl = getPrivateResourceProxyUrl (url );
643
645
}
644
646
647
+ String authHeader = (String ) mSettings .get ("authHeader" );
648
+ if (authHeader == null ) {
649
+ return null ;
650
+ }
651
+
645
652
try {
646
- Request okHttpRequest = new Request . Builder ()
653
+ Request okHttpRequest = new Builder ()
647
654
.url (proxyUrl )
648
655
.headers (Headers .of (request .getRequestHeaders ()))
649
- .addHeader ("Authorization" , mSettings . get ( " authHeader" ). toString () )
656
+ .addHeader ("Authorization" , authHeader )
650
657
.build ();
651
658
652
659
Response response = mHttpClient .newCall (okHttpRequest ).execute ();
653
-
654
660
ResponseBody body = response .body ();
655
661
if (body == null ) {
656
662
return null ;
@@ -674,6 +680,11 @@ public WebResourceResponse handleRequest(@NonNull WebResourceRequest request) {
674
680
}
675
681
676
682
private static @ NonNull String getPrivateResourceProxyUrl (@ NonNull Uri url ) {
683
+ String path = url .getPath ();
684
+ if (path != null && path .startsWith ("/" )) {
685
+ path = path .substring (1 ); // Remove leading '/'
686
+ }
687
+
677
688
Uri newUri = new Uri .Builder ()
678
689
.scheme ("https" )
679
690
.authority ("public-api.wordpress.com" )
@@ -683,7 +694,7 @@ public WebResourceResponse handleRequest(@NonNull WebResourceRequest request) {
683
694
.appendPath (url .getAuthority ())
684
695
.appendPath ("atomic-auth-proxy" )
685
696
.appendPath ("file" )
686
- .appendEncodedPath (url . getPath (). substring ( 1 )) // Remove leading '/'
697
+ .appendEncodedPath (path )
687
698
.build ();
688
699
689
700
return newUri .toString ();
0 commit comments