// Harvest fetches PRONOM reports listed in the DROID file func Harvest() []error { d, err := newDroid(config.Droid()) if err != nil { return []error{err} } apply := func(puid string) error { url, _, _ := config.HarvestOptions() return save(puid, url, config.Reports()) } return applyAll(5, d.IDs(), apply) }
func getHttp(url string) ([]byte, error) { req, err := http.NewRequest("GET", url, nil) if err != nil { return nil, err } _, timeout, transport := config.HarvestOptions() req.Header.Add("User-Agent", "siegfried/r2d2bot (+https://github.com/richardlehane/siegfried)") timer := time.AfterFunc(timeout, func() { transport.CancelRequest(req) }) defer timer.Stop() client := http.Client{ Transport: transport, } resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() return ioutil.ReadAll(resp.Body) }
nopriority = build.Bool("nopriority", false, "ignore priority rules when recording results") nocontainer = build.Bool("nocontainer", false, "skip container signatures") notext = build.Bool("notext", false, "skip text matcher") noext = build.Bool("noext", false, "skip extension matcher") noreports = build.Bool("noreports", false, "build directly from DROID file rather than PRONOM reports") doubleup = build.Bool("doubleup", false, "include byte signatures for formats that also have container signatures") rng = build.Int("range", config.Range(), "define a maximum range for segmentation") distance = build.Int("distance", config.Distance(), "define a maximum distance for segmentation") choices = build.Int("choices", config.Choices(), "define a maximum number of choices for segmentation") // HARVEST harvest = flag.NewFlagSet("harvest", flag.ExitOnError) harvestHome = harvest.String("home", config.Home(), "override the default home directory") harvestDroid = harvest.String("droid", config.Droid(), "set name/path for DROID signature file") harvestReports = harvest.String("reports", config.Reports(), "set path for PRONOM reports directory") _, htimeout, _ = config.HarvestOptions() timeout = flag.Duration("timeout", htimeout, "set duration before timing-out harvesting requests e.g. 120s") // INSPECT (roy inspect | roy inspect fmt/121 | roy inspect usr/local/mysig.gob | roy inspect 10) inspect = flag.NewFlagSet("inspect", flag.ExitOnError) inspectHome = inspect.String("home", config.Home(), "override the default home directory") inspectReports = inspect.String("reports", config.Reports(), "set path for PRONOM reports directory") inspectCType = inspect.Int("ct", 0, "provide container type to inspect container hits") inspectCName = inspect.String("cn", "", "provide container name to inspect container hits") ) func savereps() error { file, err := os.Open(config.Reports()) if err != nil { err = os.Mkdir(config.Reports(), os.ModePerm) if err != nil {