aboutsummaryrefslogtreecommitdiff
path: root/Sources/swiftGopherClient/gopherTypes.swift
blob: efec92e32670e5c1080ba2416617d4932d968f3d (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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
//
//  gopherTypes.swift
//
//
//  Created by Navan Chauhan on 12/12/23.
//

import Foundation

/*
 
 From Wikipedia
 
 Canonical types
 0    Text file
 1    Gopher submenu
 2    CCSO Nameserver
 3    Error code returned by a Gopher server to indicate failure
 4    BinHex-encoded file (primarily for Macintosh computers)
 5    DOS file
 6    uuencoded file
 7    Gopher full-text search
 8    Telnet
 9    Binary file
 +    Mirror or alternate server (for load balancing or in case of primary server downtime)
 g    GIF file
 I    Image file
 T    Telnet 3270
 gopher+ types
 :    Bitmap image
 ;    Movie file
 <    Sound file
 Non-canonical types
 d    Doc. Seen used alongside PDF's and .DOC's
 h    HTML file
 i    Informational message, widely used.[25]
 p    image file "(especially the png format)"
 r    document rtf file "rich text Format")
 s    Sound file (especially the WAV format)
 P    document pdf file "Portable Document Format")
 X    document xml file "eXtensive Markup Language" )
 */

public enum gopherItemType {
    case text
    case directory
    case nameserver
    case error
    case binhex
    case bindos
    case uuencoded
    case search
    case telnet
    case binary
    case mirror
    case gif
    case image
    case tn3270Session
    case bitmap
    case movie
    case sound
    case doc
    case html
    case info
}

func getGopherFileType(item: String) -> gopherItemType {
    switch item {
    case "0":
        return .text
    case "1":
        return .directory
    case "2":
        return .nameserver
    case "3":
        return .error
    case "4":
        return .binhex
    case "5":
        return .bindos
    case "6":
        return .uuencoded
    case "7":
        return .search
    case "8":
        return .telnet
    case "9":
        return .binary
    case "+":
        return .mirror
    case "g":
        return .gif
    case "I":
        return .image
    case "T":
        return .tn3270Session
    case ":":
        return .bitmap
    case ";":
        return .movie
    case "<":
        return .sound
    case "d":
        return .doc
    case "h":
        return .html
    case "i":
        return .info
    case "p":
        return .image
    case "r":
        return .doc
    case "s":
        return .doc
    case "P":
        return .doc
    case "X":
        return .doc
    default:
        return .info
    }
}