aboutsummaryrefslogtreecommitdiff
path: root/index.sh
blob: 16eb31c6cd2894a3410a5bc8410a053e811dac5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/bash

if [ "$REQUEST_URI" = '/favicon.ico' ]; then
  exit 0
fi

RESPONSE_CONTENT_TYPE="text/html"
STATUS=200

HEADER_TITLE='source ./programadores/Jefferson Júlio/site/home.sh'
HEADER_TITLE_MOBILE='cd ./programadores/ && \\ ;> source Jefferson Júlio/\\ ;> site/home.sh'

urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }

html () {
  cat <<HTML
<html lang="pt-br">
  <head>
    <meta charset="utf-8" />
    <title>jefferson.sh</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />

    <style>
    $(cat ./styles.css)
    </style>
  </head>

  <body>
    $(source ./nav.sh)
    $(source ./header.sh)

    <main>
      $BODY
    </main>

    $(source ./footer.sh)
  </body>
</html>
HTML
}

router () {
  REQUEST_URI=$(urldecode "$REQUEST_URI")

  case "$REQUEST_URI" in
    /)
      BODY=$(source ./pages/home.sh)
    ;;
    /contato)
      HEADER_TITLE="source ./pages/contato.sh"
      HEADER_TITLE_MOBILE="$HEADER_TITLE"
      BODY=$(source ./pages/contato.sh)
      ;;
    /artigo/*.txt)
      ARTICLE_FILE=./pages/articles/${REQUEST_URI/\/artigo\//}
      HEADER_TITLE="cat $ARTICLE_FILE"
      HEADER_TITLE_MOBILE="$HEADER_TITLE"
      BODY=$(source ./pages/article.sh)
      ;;
    /json)
      RESPONSE_CONTENT_TYPE="application/json"
      STATUS=200
      BODY=$(cat <<JSON
{
  "teste": "JSON"
}
JSON
)
      ;;
    *)
      STATUS=404
      HEADER_TITLE="cat .$REQUEST_URI"
      HEADER_TITLE_MOBILE="$HEADER_TITLE"
      BODY="<p class='err-404'>cat: .$REQUEST_URI: Arquivo ou diretório inexistente</p>"
      ;;
  esac
}

router

case "$RESPONSE_CONTENT_TYPE" in
  "text/html")
    RESPONSE_BODY=$(html)
    ;;
  *)
    RESPONSE_BODY=$BODY
esac


cat <<INDEX
Content-Type: $RESPONSE_CONTENT_TYPE
Status: $STATUS

$RESPONSE_BODY
INDEX