# Copyright for the Uniform Repository Service (c) 1995 - 2021, 2025
# by Gerald Banon. All rights reserved.
# Version 2.1
# created in 2021-04-30 by GJFB to resolve IBI and DOI
# example:
# http://gjfb:1905/resolve2?ibienter=LK47B6W/E6H5HH&ibi=&languagebutton=pt-BR
# http://www.urlib.net/resolve2?ibienter=LK47B6W/E6H5HH&ibi=&languagebutton=pt-BR

# ----------------------------------------------------------------------
# Resolve2

proc Resolve2 {} {
if [catch {
	
	global currentProcedureName	;# used in LoopOverEntries
	global currentProcedureFileName	;# used in CreateOutput and LoopOverEntries
	global env
	global cgi
	global currentRep
	global language
	global homePath	;# used in CreateOutput and FindLanguage
	global URLibServiceRepository	;# used in MultipleSubmit (called in MultipleExecute2 called in CreateOutput)
	global queueLengthFlag	;# used in MultipleSubmit (called in MultipleExecute2 called in CreateOutput)
	global mirrorHomePageRepository	;# used in LoopOverEntries to access submission.js

	set col ../../../../..
	set URLibServiceRepository dpi.inpe.br/banon/1998/08.02.08.56
	source ../$col/$URLibServiceRepository/doc/utilities1.tcl
	source ../$col/$URLibServiceRepository/doc/cgi/mirrorfind-.tcl	;# ReturnHTTPHost

	set homePath $env(DOCUMENT_ROOT)
	
	set currentProcedureName MirrorResolve
	set currentProcedureFileName $homePath/col/$URLibServiceRepository/doc/cgi/MirrorResolve.tcl

# localSite
#	set localSite $env(SERVER_NAME):$env(SERVER_PORT)
	set localSite [ReturnHTTPHost]

# used with GET
# doesn't hidden password1 and codedpassword1
	if [info exists env(QUERY_STRING)] {
		set queryString $env(QUERY_STRING)
		foreach {name value} [split $queryString &=] {
			set cgi([DecodeURL $name]) [DecodeURL $value]
		}
	}
	
	CreateCGIArray	;# used with POST

if 0 {
 puts {Content-Type: text/html}
 puts {}
 puts $env(QUERY_STRING)
 puts <BR>
 puts <BR>
 puts [array get cgi]
}

	if [string equal {} $cgi(ibienter)] {set ibi $cgi(ibi)}
	if [string equal {} $cgi(ibi)] {set ibi $cgi(ibienter)}
	if ![info exists ibi] {set ibi $cgi(ibienter)}
	
	if [regexp -nocase {.+:.+} $ibi] {
# ark:13030/c7cv4br18
		puts "Location: http://$localSite/$ibi?ibiurl.backgroundlanguage=$cgi(languagebutton)"
	} else {
		set splitID [file split $ibi]
		if {[llength $splitID] == 2} {
# ibi or doi
# LK47B6W/E6H5HH
# 10.1087/20110107
			if [regexp {^10\.} $ibi] {	;# added by GJFB in 2025-09-07 to detect DOI
# doi 			 
# 10.1087/20110107
				puts "Location: http://doi.org/$ibi"
			} else {
# ibi
# LK47B6W/E6H5HH
				puts "Location: http://$localSite/ibi/$ibi?ibiurl.backgroundlanguage=$cgi(languagebutton)"
			}
		} elseif {[llength $splitID] == 4} {
# ibi
# iconet.com.br/banon/2001/02.10.22.55
			puts "Location: http://$localSite/ibi/$ibi?ibiurl.backgroundlanguage=$cgi(languagebutton)"
		} else {
# Syntax Error
			puts {Content-Type: text/html}
			puts {
				<HTML>
					<HEAD>
						<TITLE>Syntax Error</TITLE>
						<link rel="stylesheet" type="text/css" href="http://gjfb:1905/col/dpi.inpe.br/banon/1999/05.03.22.11/doc/mirrorStandard.css">
					</HEAD>
					<BODY class="errorBody">
						<P ALIGN=CENTER>
							<I>Syntax Error</I>
						</P>
			}
			puts "
						<P>
							<FONT FACE=\"Courier New\">&lt;$ibi&gt;</FONT> has not the right syntax.
						</P>
			"
			puts {
						<p>
							<!-- To resolve an IBI the syntax is <FONT FACE="Courier New">&lt;prefix/sufix&gt;</FONT> or <FONT FACE="Courier New">&lt;upn:4CR88AP:prefix/sufix&gt;</FONT>. -->
							To resolve an IBI the syntax is <FONT FACE="Courier New">&lt;prefix/sufix&gt;</FONT> or <FONT FACE="Courier New">&lt;ibi:prefix/sufix&gt;</FONT>.
						</p>
						<p>
							To resolve a DOI the syntax is <FONT FACE="Courier New">&lt;prefix/sufix&gt;</FONT> or <FONT FACE="Courier New">&lt;doi:prefix/sufix&gt;</FONT> or <FONT FACE="Courier New">&lt;urn:doi:prefix/sufix&gt;</FONT>.
						</p>
						<TABLE ALIGN=CENTER><TR><TD WIDTH=100><BR><HR></TD></TR></TABLE>
					<BODY>
				<HTML>
			}
		}
	}
	puts ""
	
} m] {
	if ![string equal {} $m] {
		puts {Content-Type: text/html}
		puts {}
		puts "<PRE>Resolve: $m</PRE>"
		if 0 {global errorInfo; puts <PRE>$errorInfo</PRE>}
	}
}
}

# Resolve2 - end
# ----------------------------------------------------------------------
