Help us shape the future of Go! Take the 2026 Go Developer Survey

fetch

package
v1.45.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 21, 2026 License: BSD-2-Clause Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RedisKey = "PUBLICATION_KEY"
)

Variables

View Source
var Status string = "published"

Functions

func EuroPMC2Pub

func EuroPMC2Pub(pmc *EuroPMC, id string) (*models.Publication, error)

func FetchAndBuildAnnotations

func FetchAndBuildAnnotations(
	params *FetchAndBuildAnnotationsParams,
) ([]*models.GOAnnotation, error)

func FetchDOI

func FetchDOI(ctx context.Context, doi string) (*models.Publication, error)

func FetchPublication

func FetchPublication(
	ctx context.Context,
	repo repository.Repository,
	endpoint, id string,
) (*models.Publication, error)

func FetchPublicationFromCache

func FetchPublicationFromCache(
	repo repository.Repository,
	id string,
) (bool, *models.Publication, error)

func FetchPublicationFromEuroPMC

func FetchPublicationFromEuroPMC(
	ctx context.Context,
	endpoint, id string,
) (*models.Publication, error)

func GetResp

func GetResp(url string) (*http.Response, error)

func StorePublicationInCache

func StorePublicationInCache(
	id string,
	repo repository.Repository,
	pub *models.Publication,
) error

Types

type Author

type Author struct {
	FirstName string `json:"first_name,omitempty"`
	LastName  string `json:"last_name"`
	FullName  string `json:"full_name"`
	Initials  string `json:"initials"`
}

type EuroPMC

type EuroPMC struct {
	HitCount       int64  `json:"hitCount"`
	NextCursorMark string `json:"nextCursorMark"`
	Request        struct {
		CursorMark string `json:"cursorMark"`
		PageSize   int64  `json:"pageSize"`
		Query      string `json:"query"`
		ResultType string `json:"resultType"`
		Sort       string `json:"sort"`
		Synonym    bool   `json:"synonym"`
	} `json:"request"`
	ResultList struct {
		Result []struct {
			AbstractText string `json:"abstractText"`
			Affiliation  string `json:"affiliation"`
			AuthMan      string `json:"authMan"`
			AuthorList   struct {
				Author []struct {
					Affiliation string `json:"affiliation"`
					FirstName   string `json:"firstName"`
					FullName    string `json:"fullName"`
					Initials    string `json:"initials"`
					LastName    string `json:"lastName"`
				} `json:"author"`
			} `json:"authorList"`
			AuthorString              string `json:"authorString"`
			CitedByCount              int64  `json:"citedByCount"`
			DateOfCreation            string `json:"dateOfCreation"`
			DateOfRevision            string `json:"dateOfRevision"`
			Doi                       string `json:"doi"`
			ElectronicPublicationDate string `json:"electronicPublicationDate"`
			EpmcAuthMan               string `json:"epmcAuthMan"`
			FirstPublicationDate      string `json:"firstPublicationDate"`
			FullTextURLList           struct {
				FullTextURL []struct {
					Availability     string `json:"availability"`
					AvailabilityCode string `json:"availabilityCode"`
					DocumentStyle    string `json:"documentStyle"`
					Site             string `json:"site"`
					URL              string `json:"url"`
				} `json:"fullTextUrl"`
			} `json:"fullTextUrlList"`
			HasBook               string `json:"hasBook"`
			HasDBCrossReferences  string `json:"hasDbCrossReferences"`
			HasLabsLinks          string `json:"hasLabsLinks"`
			HasPDF                string `json:"hasPDF"`
			HasReferences         string `json:"hasReferences"`
			HasTMAccessionNumbers string `json:"hasTMAccessionNumbers"`
			HasTextMinedTerms     string `json:"hasTextMinedTerms"`
			ID                    string `json:"id"`
			InEPMC                string `json:"inEPMC"`
			InPMC                 string `json:"inPMC"`
			IsOpenAccess          string `json:"isOpenAccess"`
			JournalInfo           struct {
				DateOfPublication string `json:"dateOfPublication"`
				Journal           struct {
					Essn                string `json:"essn"`
					Isoabbreviation     string `json:"isoabbreviation"`
					Issn                string `json:"issn"`
					MedlineAbbreviation string `json:"medlineAbbreviation"`
					Nlmid               string `json:"nlmid"`
					Title               string `json:"title"`
				} `json:"journal"`
				JournalIssueID       int64  `json:"journalIssueId"`
				MonthOfPublication   int64  `json:"monthOfPublication"`
				PrintPublicationDate string `json:"printPublicationDate"`
				YearOfPublication    int64  `json:"yearOfPublication"`
				Issue                string `json:"issue"`
				Volume               string `json:"volume"`
			} `json:"journalInfo"`
			KeywordList struct {
				Keyword []string `json:"keyword"`
			} `json:"keywordList"`
			Language    string `json:"language"`
			NihAuthMan  string `json:"nihAuthMan"`
			PageInfo    string `json:"pageInfo"`
			Pmid        string `json:"pmid"`
			PubModel    string `json:"pubModel"`
			PubTypeList struct {
				PubType []string `json:"pubType"`
			} `json:"pubTypeList"`
			PubYear string `json:"pubYear"`
			Source  string `json:"source"`
			Title   string `json:"title"`
		} `json:"result"`
	} `json:"resultList"`
	Version string `json:"version"`
}

type FetchAndBuildAnnotationsParams

type FetchAndBuildAnnotationsParams struct {
	Ctx       context.Context
	Gene      string
	UniprotID string
	Redis     repository.Repository
	Logger    *logrus.Entry
}
type Links struct {
	Self string `json:"self"`
}

type PubData

type PubData struct {
	Type       string       `json:"type"`
	ID         string       `json:"id"`
	Attributes *Publication `json:"attributes"`
}

type PubJSONAPI

type PubJSONAPI struct {
	Data  *PubData `json:"data"`
	Links *Links   `json:"links"`
}

type Publication

type Publication struct {
	Abstract      string    `json:"abstract"`
	Doi           string    `json:"doi,omitempty"`
	FullTextURL   string    `json:"full_text_url,omitempty"`
	PubmedURL     string    `json:"pubmed_url"`
	Journal       string    `json:"journal"`
	Issn          string    `json:"issn,omitempty"`
	Page          string    `json:"page,omitempty"`
	Pubmed        string    `json:"pubmed"`
	Title         string    `json:"title"`
	Source        string    `json:"source"`
	Status        string    `json:"status"`
	PubType       string    `json:"pub_type"`
	Issue         string    `json:"issue"`
	Volume        string    `json:"volume"`
	PublishedDate string    `json:"publication_date"`
	Authors       []*Author `json:"authors"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL