2929package org .scijava .search .web ;
3030
3131import com .google .gson .JsonArray ;
32- import com .google .gson .JsonElement ;
3332import com .google .gson .JsonObject ;
3433import com .google .gson .JsonStreamParser ;
3534
3635import java .io .BufferedReader ;
36+ import java .io .DataOutputStream ;
3737import java .io .IOException ;
3838import java .io .InputStream ;
3939import java .io .InputStreamReader ;
4040import java .io .UnsupportedEncodingException ;
41+ import java .net .HttpURLConnection ;
4142import java .net .MalformedURLException ;
4243import java .net .URL ;
4344import java .net .URLEncoder ;
6263@ Plugin (type = Searcher .class , enabled = false )
6364public class ImageScSearcher implements Searcher {
6465
65- private static String URL_PREFIX = "https://forum.image.sc/search/query .json?term =" ;
66+ private static String URL_PREFIX = "https://forum.image.sc/search.json?q =" ;
6667 private static String POST_URL_PREFIX = "https://forum.image.sc/t" ;
6768 private static String FORUM_AVATAR_PREFIX = "https://forum.image.sc" ;
6869 private static String TERM_SUFFIX = " tags:imagej" ;
@@ -82,7 +83,15 @@ public List<SearchResult> search(String text, boolean fuzzy) {
8283
8384 try {
8485 final URL url = new URL (URL_PREFIX + URLEncoder .encode (text + TERM_SUFFIX , "utf-8" ));
85- InputStream is = url .openStream ();
86+
87+ // Pass the API key as a header parameter.
88+ HttpURLConnection con = (HttpURLConnection ) url .openConnection ();
89+ con .setRequestMethod ("GET" );
90+ con .setRequestProperty ("Api-Username" , "imagesc-bot" );
91+ con .setRequestProperty ("Api-Key" , "b1a28dbb29c385e06026482661c8de55dd01972ff993bea6547783e52e8a017d" );
92+
93+ // Connect and read the result.
94+ InputStream is = con .getInputStream ();
8695 try (InputStreamReader sr = new InputStreamReader (is , "UTF-8" );
8796 BufferedReader reader = new BufferedReader (sr ))
8897 {
@@ -138,4 +147,21 @@ private String formatDate(final String datestr) {
138147 return new PrettyTime ().format (Date .from (instant ));
139148 }
140149
150+ // Credit: https://www.baeldung.com/java-http-request
151+ public static String getParamsString (final Map <String , String > params )
152+ throws UnsupportedEncodingException
153+ {
154+ StringBuilder result = new StringBuilder ();
155+
156+ for (Map .Entry <String , String > entry : params .entrySet ()) {
157+ result .append (URLEncoder .encode (entry .getKey (), "UTF-8" ));
158+ result .append ("=" );
159+ result .append (URLEncoder .encode (entry .getValue (), "UTF-8" ));
160+ result .append ("&" );
161+ }
162+
163+ String resultString = result .toString ();
164+ return resultString .length () > 0 ? //
165+ resultString .substring (0 , resultString .length () - 1 ) : resultString ;
166+ }
141167}
0 commit comments