diff --git a/cmd/root.go b/cmd/root.go index 0041760..0a81ae3 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -13,7 +13,7 @@ import ( // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ Use: "commonmeta", - Version: "v0.6.22", + Version: "v0.6.23", Short: "Convert scholarly metadata from one format to another", Long: `Convert scholarly metadata between formats. Currently supported input formats are Crossref and DataCite DOIs, currently diff --git a/crossrefxml/writer.go b/crossrefxml/writer.go index 1145ee1..82e8402 100644 --- a/crossrefxml/writer.go +++ b/crossrefxml/writer.go @@ -504,7 +504,6 @@ func WriteAll(list []commonmeta.Data, account Account) ([]byte, []gojsonschema.R fmt.Println("DOI is not a valid DOI:", data.ID) continue } else if ifCrossref != "Crossref" { - fmt.Println("DOI is not a Crossref DOI:", data.ID) continue } crossref, err := Convert(data) @@ -555,7 +554,7 @@ func Upsert(record commonmeta.APIResponse, account Account, legacyKey string, da if !ok { return record, errors.New("DOI is not a valid DOI") } else if isCrossref != "Crossref" { - return record, errors.New("DOI is not a Crossref DOI") + return record, nil } record.DOI = data.ID @@ -648,7 +647,6 @@ func UpsertAll(list []commonmeta.Data, account Account, legacyKey string) ([]com fmt.Println("DOI is not a valid DOI:", data.ID) continue } else if isCrossref != "Crossref" { - fmt.Println("DOI is not a Crossref DOI:", data.ID) continue } diff --git a/datacite/writer.go b/datacite/writer.go index 80731d1..671a961 100644 --- a/datacite/writer.go +++ b/datacite/writer.go @@ -344,13 +344,13 @@ func WriteAll(list []commonmeta.Data) ([]byte, []gojsonschema.ResultError) { return output, nil } -// Upsert updates or creates Crossrefxml metadata. +// Upsert updates or creates datacite metadata. func Upsert(record commonmeta.APIResponse, account Account, data commonmeta.Data) (commonmeta.APIResponse, error) { isDatacite, ok := doiutils.GetDOIRA(data.ID) if !ok { return record, errors.New("DOI is not a valid DOI: " + data.ID) } else if isDatacite != "DataCite" { - return record, errors.New("DOI is not a DataCite DOI: " + data.ID) + return record, nil } datacite, jsErr := Write(data) @@ -409,7 +409,6 @@ func UpsertAll(list []commonmeta.Data, account Account) ([]commonmeta.APIRespons fmt.Println("DOI is not a valid DOI:", data.ID) continue } else if isDatacite != "DataCite" { - fmt.Println("DOI is not a DataCite DOI:", data.ID) continue } record := commonmeta.APIResponse{ diff --git a/doiutils/doiutils.go b/doiutils/doiutils.go index 52065ea..1b4c09d 100644 --- a/doiutils/doiutils.go +++ b/doiutils/doiutils.go @@ -144,13 +144,11 @@ func IsRogueScholarDOI(doi string, ra string) bool { "10.59348", "10.59349", "10.59350", - - "10.83132", } var rogueScholarDatacitePrefixes = []string{ "10.34732", "10.57689", - "10.83132", + // "10.83132", } prefix, ok := ValidatePrefix(doi) if !ok { diff --git a/inveniordm/writer.go b/inveniordm/writer.go index c79d953..3a995f2 100644 --- a/inveniordm/writer.go +++ b/inveniordm/writer.go @@ -422,6 +422,11 @@ func WriteAll(list []commonmeta.Data) ([]byte, []gojsonschema.ResultError) { // Upsert updates or creates a record in InvenioRDM. func Upsert(record commonmeta.APIResponse, client *InvenioRDMClient, apiKey string, legacyKey string, data commonmeta.Data) (commonmeta.APIResponse, error) { + if !doiutils.IsRogueScholarDOI(data.ID, "") { + record.Status = "failed_not_rogue_scholar_doi" + return record, nil + } + inveniordm, err := Convert(data) if err != nil { return record, err @@ -529,6 +534,8 @@ func UpsertAll(list []commonmeta.Data, host string, apiKey string, legacyKey str doi, ok := doiutils.ValidateDOI(data.ID) if !ok && doi == "" { record.Status = "failed_missing_doi" + } else if !doiutils.IsRogueScholarDOI(data.ID, "") { + record.Status = "failed_not_rogue_scholar_doi" } else { record, _ = Upsert(record, client, apiKey, legacyKey, data) }