#include "config.h"

/* MIME-types associated with certain Gopher item types */
const char *mime_type(char type)
{
       switch (type) {
               case GOPHER_ITEM_PLAIN_TEXT:    return "text/plain";
               case GOPHER_ITEM_IMAGE:         return "image/jpeg";
               case GOPHER_ITEM_PNG:           return "image/png";
               case GOPHER_ITEM_BINARY:
               case GOPHER_ITEM_DOS:
               case GOPHER_ITEM_UUE:
               case GOPHER_ITEM_BINHEX:        return "application/octet-stream";
               case GOPHER_ITEM_GIF:           return "image/gif";
               case GOPHER_ITEM_WAV:           return "audio/x-wav";
               case GOPHER_ITEM_HTML:          return "text/html";
               case GOPHER_ITEM_PDF:           return "application/pdf";
               case GOPHER_ITEM_MOVIE:         return "application/octet-stream";
               case GOPHER_ITEM_CSS:           return "text/css";
               case GOPHER_ITEM_XML:           return "text/xml";
       }

       return "text/plain";
}

/* Try to guess MIME type from extension, otherwise fall back to application/octet-stream */
const char *mime_type_from_ext(char *ext)
{
       if (strcmp(ext, ".webm") == 0)
               return "video/webm";
       else if (strcmp(ext, ".mp4") == 0)
               return "video/mp4";
       else if (strcmp(ext, ".pdf") == 0)
               return "application/pdf";
       else if (strcmp(ext, ".xml") == 0)
               return "text/xml";
       else if (strcmp(ext, ".ogg") == 0)
               return "audio/ogg";

       return "application/octet-stream";
}

/* Return the HTTP request path to the item type tag icon */
#ifdef GOPHER_ICONS
const char *gopher_item_icon(char type)
{
       switch (type) {
               case GOPHER_ITEM_PLAIN_TEXT:    return GOPHER_ICON_ROOT"/icn0.gif";
               case GOPHER_ITEM_DIRECTORY:     return GOPHER_ICON_ROOT"/icn1.gif";
               case GOPHER_ITEM_CSO:           return GOPHER_ICON_ROOT"/icn2.gif";
               case GOPHER_ITEM_ERROR:         return GOPHER_ICON_ROOT"/icn3.gif";
               case GOPHER_ITEM_BINHEX:        return GOPHER_ICON_ROOT"/icn4.gif";
               case GOPHER_ITEM_DOS:           return GOPHER_ICON_ROOT"/icn5.gif";
               case GOPHER_ITEM_UUE:           return GOPHER_ICON_ROOT"/icn6.gif";
               case GOPHER_ITEM_SEARCH:        return GOPHER_ICON_ROOT"/icn7.gif";
               case GOPHER_ITEM_TELNET:        return GOPHER_ICON_ROOT"/icn8.gif";
               case GOPHER_ITEM_BINARY:        return GOPHER_ICON_ROOT"/icn9.gif";
               case GOPHER_ITEM_TN3270:        return GOPHER_ICON_ROOT"/icnT.gif";
               case GOPHER_ITEM_GIF:           return GOPHER_ICON_ROOT"/icng.gif";
               case GOPHER_ITEM_IMAGE:         return GOPHER_ICON_ROOT"/icnI.gif";
               case GOPHER_ITEM_WAV:           return GOPHER_ICON_ROOT"/icns.gif";
               case GOPHER_ITEM_PNG:           return GOPHER_ICON_ROOT"/icnp.gif";
               case GOPHER_ITEM_HTML:          return GOPHER_ICON_ROOT"/icnh.gif";
               case GOPHER_ITEM_PDF:           return GOPHER_ICON_ROOT"/icnd.gif";
               case GOPHER_ITEM_MOVIE:         return GOPHER_ICON_ROOT"/icn;.gif";
               case GOPHER_ITEM_SOUND:         return GOPHER_ICON_ROOT"/icn<.gif";
               case GOPHER_ITEM_PICTURE:       return GOPHER_ICON_ROOT"/icn:.gif";
               case GOPHER_ITEM_XML:           return GOPHER_ICON_ROOT"/icnx.gif";
       }

       return GOPHER_ICON_ROOT"/icn.gif";
}
#endif

/* Return an alt text for each icon type */
const char *gopher_item_icon_alt(char type)
{
       switch (type) {
               case GOPHER_ITEM_PLAIN_TEXT:    return "txt";
               case GOPHER_ITEM_DIRECTORY:     return "/";
               case GOPHER_ITEM_CSO:
               case GOPHER_ITEM_SEARCH:        return "?";
               case GOPHER_ITEM_ERROR:         return "!";
               case GOPHER_ITEM_BINHEX:        return "hqx";
               case GOPHER_ITEM_DOS:           return "dos";
               case GOPHER_ITEM_UUE:           return "uue";
               case GOPHER_ITEM_BINARY:        return "bin";
               case GOPHER_ITEM_TN3270:        return "tn3270://";
               case GOPHER_ITEM_TELNET:        return "telnet://";
               case GOPHER_ITEM_GIF:           return "gif";
               case GOPHER_ITEM_IMAGE:         return "img";
               case GOPHER_ITEM_WAV:           return "snd";
               case GOPHER_ITEM_PNG:           return "png";
               case GOPHER_ITEM_HTML:          return "htm";
               case GOPHER_ITEM_PDF:           return "pdf";
               case GOPHER_ITEM_MOVIE:         return "mov";
               case GOPHER_ITEM_PICTURE:       return "pic";
               case GOPHER_ITEM_SOUND:         return "snd";
               case GOPHER_ITEM_CSS:           return "css";
               case GOPHER_ITEM_XML:           return "xml";
       }

       return " ";
}

#ifdef INLINE_PICS
/* Gopher item types to show as inline pics */
int inline_pic(char type)
{
       switch (type) {
               case GOPHER_ITEM_IMAGE:
               case GOPHER_ITEM_PNG:
               case GOPHER_ITEM_PICTURE:
                       return 1;
       }

       return 0;
}
#endif

/* Custom content for the top navbar */
void custom_navbar_top(char type, char *selector)
{
       (void) type;
       (void) selector;
}

/* Custom content for the bottom navbar */
void custom_navbar_bottom(char type, char *selector)
{
       (void) type;
       (void) selector;
}