Phil and Mike, Thanks for your pointers -- both look like they will work. Also in continuing to poke around the web, I also found this function that works:

function qrtHTTP_FileExists pURL
breakpoint
  local tSocket, tPath, tHeaders, tCommand
  set the itemDelimiter to "/"
  -- extract host IP address and file path from the URL
  put item 3 of pURL into tHost
  if tHost contains ":" then
    put tHost into tSocket
  else
    put tHost & ":80" into tSocket
  end if
  put "/" & item 4 to -1 of pURL into tPath
  -- build the command
  put "HEAD" && tPath && "HTTP/1.1" into tCommand
  -- build the http headers
  put "Connection: Close" & CRLF & \
      "Host:" && tHost & CRLF & \
      "User-Agent: Revolution (" & the version & ")" into tHeaders
  -- open the socket, write he request and read the response
  open socket tSocket
  write tCommand & CRLF & tHeaders & CRLF & CRLF to socket tSocket
  read from socket tSocket until CRLF
  put word 2 of it into tResultCode
  close socket tSocket
  -- return our interpretation of the result code
  return (tResultCode = 200)
end qrtHTTP_FileExists

It's working for me.... but now I can't re-find it so I can't credit whoever wrote it!

Copying here for posterity!

Tim Selander
Tokyo, Japan


On 2017.01.22, 19:09, Mike Bonner via use-livecode wrote:
If you have php on your second server, and don't have lc, you can do a
check with php similar to what you're talking about.  This is untested but..

If you have the following php file (perhaps named checkforfile.php) on the
alternate server, and send it a get request containing the path to the file
youre looking for, it will return true or false if it exists.  This is
obviously an extremely bare example.  You'd want to make sure the get
contains "myfile" and handle that too, as well as any other issues.   In
addition, you would probably want to limit the requests to only allowed
areas and file types in the php script.
<?php
echo file_exists($_GET["myfile"]);
?>

From the lc side of things you could do something like this..

<?lc
    get url "
http://your.alternateserver.com/checkforfile.php?myfile=theFile.mp3";
    if it is true then
       put "<audio src=http://my.programserver.com/theFile.mp3>"
   else
       put "program not found."
   end if
?>

Of course if you DO have lc on the program server you can do the same type
of check and "put" true or false just like you did with php.  (Also can be
done with javascript, asp, etc)
On Sun, Jan 22, 2017 at 2:16 AM, Phil Davis via use-livecode <
use-livecode@lists.runrev.com> wrote:

Hi Tim,

Here is a very simplistic way of checking for a file on your server. It
assumes your mp3 files are in a 'programs' folder that resides in the
'document root' folder. This script as it is here would be in a .lc file on
your server. You pass it a filename in the url and it tells you if the file
is in the programs folder or not.

So the url would look something like this:

    http://my.programserver.com/check.lc?1234.mp3


The text of the 'check.lc' file:

    <?lc
       set the errorMode to "inline"
       put $_SERVER["QUERY_STRING"] into tFilename
       put $_SERVER["DOCUMENT_ROOT"] & "/programs/" & tFilename into tPath
       if there is a file tPath then
           put "Found file" && q(tFilename)
       else
           put "Did not find file" && q(tFilename)
       end if
    ?>


    <?lc
    function q pString
         return quote & pString & quote
    end q
    ?>

This is most likely not exactly what you need, but maybe it'll give you a
starting point.

Thanks -
Phil Davis



On 1/21/17 11:36 PM, Tim Selander via use-livecode wrote:

Hi,

On-rev.com hosting, using LC server to present a list of our AM/FM radio
programs for people to listening to on-demand.

Out of a month's 20 programs, 3 or 4 might not get uploaded due to
copyright issues, etc. Also, mp3's are not on the on-rev.com server, but
another hosting service we use as well.

Filenaming is standardized, so I know the list of programs. I want to hit
the server, if the mp3 files exists, present it as an <audio src=, if the
mp3 file does not exists, present a "Sorry, program not available" message.

If I wanted to check on the existence of a small text file, it would be
fast enough for me to just get it, put it into a variable and see if the
variable has anything in it. But mp3's are too big, so too slow.

Locally, I would simply write "if there is a file 'filename'..."  --
what's the equivalent command for checking on existence of a file on a
server?

Thanks in advance.

Tim Selander
Tokyo, Japan







_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode


--
Phil Davis


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to