github.com/gagliardetto/solana-go@v1.11.0/rpc/transaction_version.go (about)

     1  package rpc
     2  
     3  import "strconv"
     4  
     5  type TransactionVersion int
     6  
     7  const (
     8  	LegacyTransactionVersion TransactionVersion = -1
     9  	legacyVersion                               = `"legacy"`
    10  )
    11  
    12  func (a *TransactionVersion) UnmarshalJSON(b []byte) error {
    13  	// Ignore null, like in the main JSON package.
    14  	s := string(b)
    15  	if s == "null" || s == `""` || s == legacyVersion {
    16  		*a = LegacyTransactionVersion
    17  		return nil
    18  	}
    19  
    20  	v, err := strconv.Atoi(s)
    21  	if err != nil {
    22  		return err
    23  	}
    24  	*a = TransactionVersion(v)
    25  	return nil
    26  }
    27  
    28  func (a TransactionVersion) MarshalJSON() ([]byte, error) {
    29  	if a == LegacyTransactionVersion {
    30  		return []byte(legacyVersion), nil
    31  	} else {
    32  		return []byte(strconv.Itoa(int(a))), nil
    33  	}
    34  }