/
main.go
68 lines (59 loc) · 1.36 KB
/
main.go
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
package main
import (
"flag"
"fmt"
"log"
"os"
"strings"
"github.com/groob/CommPhone/commportal"
)
var (
line bool
all bool
Version = "unreleased"
fVersion = flag.Bool("version", false, "display the version")
)
func init() {
flag.BoolVar(&line, "line", false, "Print direct line instead of Extension")
flag.BoolVar(&all, "all", false, "Print all extensions")
flag.Parse()
}
func printAll(s commportal.Subscribers) {
for _, phone := range s {
fmt.Printf("%v %v\n", phone.Name.Name, phone.IntercomDialingCode.Extension)
}
}
func printPhone(name string, s commportal.Subscribers) {
phones := s.Find(name)
for _, phone := range phones {
if line {
fmt.Printf("%v %v\n", phone.Name.Name, phone.DirectoryNumber.Line)
} else {
fmt.Printf("%v %v\n", phone.Name.Name, phone.IntercomDialingCode.Extension)
}
}
}
func main() {
// Print version
if *fVersion {
fmt.Printf("CommPortal Web Scraper - Version %s\n", Version)
return
}
username := os.Getenv("COMMPORTAL_USER")
password := os.Getenv("COMMPORTAL_PASS")
loginURL := os.Getenv("COMMPORTAL_URL")
portal, err := commportal.New(username, password, loginURL)
if err != nil {
log.Fatal(err)
}
phones, err := portal.Phones()
if err != nil {
log.Fatal(err)
}
// print all extensions
if all {
printAll(phones)
}
arg := flag.Args()
printPhone(strings.Join(arg, " "), phones)
}