@@ -9,12 +9,11 @@ import (
99 "fmt"
1010 "io"
1111 "slices"
12- "strconv"
13- "strings"
1412
1513 "github.com/speakeasy-api/openapi/arazzo/core"
1614 "github.com/speakeasy-api/openapi/extensions"
1715 "github.com/speakeasy-api/openapi/internal/interfaces"
16+ "github.com/speakeasy-api/openapi/internal/utils"
1817 "github.com/speakeasy-api/openapi/marshaller"
1918 "github.com/speakeasy-api/openapi/validation"
2019 "github.com/speakeasy-api/openapi/yml"
@@ -70,8 +69,6 @@ func Unmarshal(ctx context.Context, doc io.Reader, opts ...Option[unmarshalOptio
7069 opt (& o )
7170 }
7271
73- ctx = validation .ContextWithValidationContext (ctx )
74-
7572 c , err := core .Unmarshal (ctx , doc )
7673 if err != nil {
7774 return nil , nil , err
@@ -84,7 +81,6 @@ func Unmarshal(ctx context.Context, doc io.Reader, opts ...Option[unmarshalOptio
8481
8582 var validationErrs []error
8683 if ! o .skipValidation {
87- validationErrs = validation .GetValidationErrors (ctx )
8884 validationErrs = append (validationErrs , arazzo .Validate (ctx )... )
8985 slices .SortFunc (validationErrs , func (a , b error ) int {
9086 var aValidationErr * validation.Error
@@ -145,15 +141,16 @@ func (a *Arazzo) Marshal(ctx context.Context, w io.Writer) error {
145141func (a * Arazzo ) Validate (ctx context.Context , opts ... validation.Option ) []error {
146142 opts = append (opts , validation .WithContextObject (a ))
147143
148- errs := []error {}
144+ core := a .GetCore ()
145+ errs := core .GetValidationErrors ()
149146
150- arazzoMajor , arazzoMinor , arazzoPatch , err := parseVersion (a .Arazzo )
147+ arazzoMajor , arazzoMinor , arazzoPatch , err := utils . ParseVersion (a .Arazzo )
151148 if err != nil {
152- errs = append (errs , validation .NewValueError (fmt .Sprintf ("invalid Arazzo version in document %s: %s" , a .Arazzo , err .Error ()), a . GetCore (), a . GetCore () .Arazzo ))
149+ errs = append (errs , validation .NewValueError (fmt .Sprintf ("invalid Arazzo version in document %s: %s" , a .Arazzo , err .Error ()), core , core .Arazzo ))
153150 }
154151
155152 if arazzoMajor != VersionMajor || arazzoMinor != VersionMinor || arazzoPatch > VersionPatch {
156- errs = append (errs , validation .NewValueError (fmt .Sprintf ("only Arazzo version %s and below is supported" , Version ), a . GetCore (), a . GetCore () .Arazzo ))
153+ errs = append (errs , validation .NewValueError (fmt .Sprintf ("only Arazzo version %s and below is supported" , Version ), core , core .Arazzo ))
157154 }
158155
159156 errs = append (errs , a .Info .Validate (ctx , opts ... )... )
@@ -164,7 +161,7 @@ func (a *Arazzo) Validate(ctx context.Context, opts ...validation.Option) []erro
164161 errs = append (errs , sourceDescription .Validate (ctx , opts ... )... )
165162
166163 if _ , ok := sourceDescriptionNames [sourceDescription .Name ]; ok {
167- errs = append (errs , validation .NewSliceError (fmt .Sprintf ("sourceDescription name %s is not unique" , sourceDescription .Name ), a . GetCore (), a . GetCore () .SourceDescriptions , i ))
164+ errs = append (errs , validation .NewSliceError (fmt .Sprintf ("sourceDescription name %s is not unique" , sourceDescription .Name ), core , core .SourceDescriptions , i ))
168165 }
169166
170167 sourceDescriptionNames [sourceDescription .Name ] = true
@@ -176,7 +173,7 @@ func (a *Arazzo) Validate(ctx context.Context, opts ...validation.Option) []erro
176173 errs = append (errs , workflow .Validate (ctx , opts ... )... )
177174
178175 if _ , ok := workflowIds [workflow .WorkflowID ]; ok {
179- errs = append (errs , validation .NewSliceError (fmt .Sprintf ("workflowId %s is not unique" , workflow .WorkflowID ), a . GetCore (), a . GetCore () .Workflows , i ))
176+ errs = append (errs , validation .NewSliceError (fmt .Sprintf ("workflowId %s is not unique" , workflow .WorkflowID ), core , core .Workflows , i ))
180177 }
181178
182179 workflowIds [workflow .WorkflowID ] = true
@@ -186,31 +183,7 @@ func (a *Arazzo) Validate(ctx context.Context, opts ...validation.Option) []erro
186183 errs = append (errs , a .Components .Validate (ctx , opts ... )... )
187184 }
188185
189- a .Valid = len (errs ) == 0 && a . GetCore () .GetValid ()
186+ a .Valid = len (errs ) == 0 && core .GetValid ()
190187
191188 return errs
192189}
193-
194- func parseVersion (version string ) (int , int , int , error ) {
195- parts := strings .Split (version , "." )
196- if len (parts ) != 3 {
197- return 0 , 0 , 0 , fmt .Errorf ("invalid version %s" , version )
198- }
199-
200- major , err := strconv .Atoi (parts [0 ])
201- if err != nil {
202- return 0 , 0 , 0 , fmt .Errorf ("invalid major version %s: %w" , parts [0 ], err )
203- }
204-
205- minor , err := strconv .Atoi (parts [1 ])
206- if err != nil {
207- return 0 , 0 , 0 , fmt .Errorf ("invalid minor version %s: %w" , parts [1 ], err )
208- }
209-
210- patch , err := strconv .Atoi (parts [2 ])
211- if err != nil {
212- return 0 , 0 , 0 , fmt .Errorf ("invalid patch version %s: %w" , parts [2 ], err )
213- }
214-
215- return major , minor , patch , nil
216- }
0 commit comments