func FetchAndParseEntry(hash, blockTime string, isFirstEntry bool) (*Entry, error) { e := new(Entry) raw, err := factom.GetRaw(hash) if err != nil { Log("Error - %v", err) return nil, err } entry := new(common.Entry) _, err = entry.UnmarshalBinaryData(raw) if err != nil { Log("Error unmarshalling data - %v, %x - %v", hash, err, raw) return nil, err } e.ChainID = entry.ChainID.String() e.Hash = hash str, err := entry.JSONString() if err != nil { Log("Error - %v", err) return nil, err } e.JSONString = str e.SpewString = entry.Spew() e.BinaryString = fmt.Sprintf("%x", raw) e.Timestamp = blockTime e.Content = ByteSliceToDecodedStringPointer(entry.Content) e.ExternalIDs = make([]DecodedString, len(entry.ExtIDs)) for i, v := range entry.ExtIDs { e.ExternalIDs[i] = ByteSliceToDecodedString(v) } if isFirstEntry == true { //TODO: parse the first entry somehow perhaps? } else { if IsAnchorChainID(e.ChainID) { ar, err := ParseAnchorChainData(e.Content.Decoded) if err != nil { Log("Error - %v", err) return nil, err } e.AnchorRecord = ar } } err = SaveEntry(e) if err != nil { Log("Error - %v", err) return nil, err } return e, nil }