package com.formulasearchengine.mathosphere.basex;


import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.jetbrains.annotations.Nullable;

import java.io.IOException;
import java.io.InputStream;
import java.util.*;

public class TexQueryGenerator {
	private String LaTeXMLURL = "http://gw125.iu.xsede.org:8888";
	private Map ob = new LinkedHashMap();
	private List<NameValuePair> params;

	public List<NameValuePair> getParams () {
		if ( params == null ){
			params = new ArrayList<>();
			params.add( new BasicNameValuePair( "format", "xhtml" ) );
			params.add( new BasicNameValuePair( "whatsin", "math" ) );
			params.add( new BasicNameValuePair( "whatsout", "math" ) );
			params.add( new BasicNameValuePair( "cmml", "" ) );
			params.add( new BasicNameValuePair( "nodefaultresources", "" ) );
			params.add( new BasicNameValuePair( "preload", "LaTeX.pool" ) );
			params.add( new BasicNameValuePair( "preload", "article.cls" ) );
			params.add( new BasicNameValuePair( "preload", "amsmath.sty" ) );
			params.add( new BasicNameValuePair( "preload", "amsthm.sty" ) );
			params.add( new BasicNameValuePair( "preload", "amstext.sty" ) );
			params.add( new BasicNameValuePair( "preload", "amssymb.sty" ) );
			params.add( new BasicNameValuePair( "preload", "eucal.sty" ) );
			params.add( new BasicNameValuePair( "preload", "[dvipsnames]xcolor.sty" ) );
			params.add( new BasicNameValuePair( "preload", "url.sty" ) );
			params.add( new BasicNameValuePair( "preload", "hyperref.sty" ) );
			params.add( new BasicNameValuePair( "preload", "mws.sty" ) );
			params.add( new BasicNameValuePair( "preload", "texvc" ) );
		}
		return params;
	}

	public void setParams (List<NameValuePair> params) {
		this.params = params;
	}

	public String getLaTeXMLURL () {
		return LaTeXMLURL;
	}

	public Map getOb () {
		return ob;
	}

	public void setLaTeXMLURL (String laTeXMLURL) {
		LaTeXMLURL = laTeXMLURL;
	}

	public String request (String tex) throws IOException, IllegalStateException {
		HttpPost httppost = new HttpPost( LaTeXMLURL );
		CloseableHttpClient httpClient = HttpClients.createDefault();
		List<NameValuePair> p = getParams();
		p.add( new BasicNameValuePair( "tex", tex.trim() ) );
		HttpResponse response;

		httppost.setEntity( new UrlEncodedFormEntity( p, "UTF-8" ) );
		response = httpClient.execute( httppost );

		HttpEntity entity = response.getEntity();

		InputStream instream = entity.getContent();
		ob = new ObjectMapper().readValue( instream, Map.class );

		if ( ob.get( "status_code" ) == null || ob.get( "result" ) == null ) {
			throw new IOException( "Unable to process MathML conversion server response to Tex request.");
		}

		if ( Integer.parseInt(  ob.get( "status_code" ).toString() ) > 1 ) {
			throw new IOException( "Tex request to MathML conversion server produced failed response.",
					new IOException( ob.get( "result" ).toString()));
		}

		return ob.get( "result" ).toString();
	}
}

@@ -724,31 +724,32 @@
 p://
-gw125.iu.xsede.org:8888
+drmf-latexml.wmflabs.org
 %22;%0A%09

Update reference to LaTeXML Server