1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2*ba677afaSXin Li 3*ba677afaSXin Lipackage spdx_json 4*ba677afaSXin Li 5*ba677afaSXin Liimport ( 6*ba677afaSXin Li "bytes" 7*ba677afaSXin Li "encoding/json" 8*ba677afaSXin Li "io" 9*ba677afaSXin Li 10*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/v2_2" 11*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/v2_3" 12*ba677afaSXin Li) 13*ba677afaSXin Li 14*ba677afaSXin Li// Load2_2 takes in an io.Reader and returns an SPDX document. 15*ba677afaSXin Lifunc Load2_2(content io.Reader) (*v2_2.Document, error) { 16*ba677afaSXin Li // convert io.Reader to a slice of bytes and call the parser 17*ba677afaSXin Li buf := new(bytes.Buffer) 18*ba677afaSXin Li _, err := buf.ReadFrom(content) 19*ba677afaSXin Li if err != nil { 20*ba677afaSXin Li return nil, err 21*ba677afaSXin Li } 22*ba677afaSXin Li 23*ba677afaSXin Li var doc v2_2.Document 24*ba677afaSXin Li err = json.Unmarshal(buf.Bytes(), &doc) 25*ba677afaSXin Li if err != nil { 26*ba677afaSXin Li return nil, err 27*ba677afaSXin Li } 28*ba677afaSXin Li 29*ba677afaSXin Li return &doc, nil 30*ba677afaSXin Li} 31*ba677afaSXin Li 32*ba677afaSXin Li// Load2_3 takes in an io.Reader and returns an SPDX document. 33*ba677afaSXin Lifunc Load2_3(content io.Reader) (*v2_3.Document, error) { 34*ba677afaSXin Li // convert io.Reader to a slice of bytes and call the parser 35*ba677afaSXin Li buf := new(bytes.Buffer) 36*ba677afaSXin Li _, err := buf.ReadFrom(content) 37*ba677afaSXin Li if err != nil { 38*ba677afaSXin Li return nil, err 39*ba677afaSXin Li } 40*ba677afaSXin Li 41*ba677afaSXin Li var doc v2_3.Document 42*ba677afaSXin Li err = json.Unmarshal(buf.Bytes(), &doc) 43*ba677afaSXin Li if err != nil { 44*ba677afaSXin Li return nil, err 45*ba677afaSXin Li } 46*ba677afaSXin Li 47*ba677afaSXin Li return &doc, nil 48*ba677afaSXin Li} 49