Move all directory related functionality into paths utils
As per suggestion by @willscott in: https://github.com/OpenObservatory/gooni/pull/9#discussion_r176760264
This commit is contained in:
@@ -36,11 +36,6 @@ var legacyGeoipFiles = map[string]string{
|
||||
"GeoIP.dat": "http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz",
|
||||
}
|
||||
|
||||
// GeoIPDir returns the geoip data dir for the given OONI Home
|
||||
func GeoIPDir(home string) string {
|
||||
return filepath.Join(home, "geoip")
|
||||
}
|
||||
|
||||
// Download the file to a temporary location
|
||||
func downloadToTemp(url string) (string, error) {
|
||||
out, err := ioutil.TempFile(os.TempDir(), "maxmind")
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
)
|
||||
|
||||
// RequiredDirs returns the required ooni home directories
|
||||
func RequiredDirs(home string) []string {
|
||||
requiredDirs := []string{}
|
||||
requiredSubdirs := []string{"db", "msmts", "geoip"}
|
||||
for _, d := range requiredSubdirs {
|
||||
requiredDirs = append(requiredDirs, filepath.Join(home, d))
|
||||
}
|
||||
return requiredDirs
|
||||
}
|
||||
|
||||
// GeoIPDir returns the geoip data dir for the given OONI Home
|
||||
func GeoIPDir(home string) string {
|
||||
return filepath.Join(home, "geoip")
|
||||
}
|
||||
|
||||
// DBDir returns the database dir for the given name
|
||||
func DBDir(home string, name string) string {
|
||||
return filepath.Join(home, "db", fmt.Sprintf("%s.sqlite3", name))
|
||||
}
|
||||
|
||||
// MakeResultsDir creates and returns a directory for the result
|
||||
func MakeResultsDir(home string, name string, ts time.Time) (string, error) {
|
||||
p := filepath.Join(home, "msmts",
|
||||
fmt.Sprintf("%s-%s", name, ts.Format(time.RFC3339Nano)))
|
||||
|
||||
// If the path already exists, this is a problem. It should not clash, because
|
||||
// we are using nanosecond precision for the starttime.
|
||||
if _, e := os.Stat(p); e == nil {
|
||||
return "", errors.New("results path already exists")
|
||||
}
|
||||
err := os.MkdirAll(p, 0700)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return p, nil
|
||||
}
|
||||
Reference in New Issue
Block a user