...

Source file src/github.com/go-openapi/spec/spec.go

Documentation: github.com/go-openapi/spec

     1  // Copyright 2015 go-swagger maintainers
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //    http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package spec
    16  
    17  import (
    18  	"encoding/json"
    19  )
    20  
    21  //go:generate curl -L --progress -o ./schemas/v2/schema.json http://swagger.io/v2/schema.json
    22  //go:generate curl -L --progress  -o ./schemas/jsonschema-draft-04.json http://json-schema.org/draft-04/schema
    23  //go:generate go-bindata -pkg=spec -prefix=./schemas -ignore=.*\.md ./schemas/...
    24  //go:generate perl -pi -e s,Json,JSON,g bindata.go
    25  
    26  const (
    27  	// SwaggerSchemaURL the url for the swagger 2.0 schema to validate specs
    28  	SwaggerSchemaURL = "http://swagger.io/v2/schema.json#"
    29  	// JSONSchemaURL the url for the json schema
    30  	JSONSchemaURL = "http://json-schema.org/draft-04/schema#"
    31  )
    32  
    33  // MustLoadJSONSchemaDraft04 panics when Swagger20Schema returns an error
    34  func MustLoadJSONSchemaDraft04() *Schema {
    35  	d, e := JSONSchemaDraft04()
    36  	if e != nil {
    37  		panic(e)
    38  	}
    39  	return d
    40  }
    41  
    42  // JSONSchemaDraft04 loads the json schema document for json shema draft04
    43  func JSONSchemaDraft04() (*Schema, error) {
    44  	b, err := jsonschemaDraft04JSONBytes()
    45  	if err != nil {
    46  		return nil, err
    47  	}
    48  
    49  	schema := new(Schema)
    50  	if err := json.Unmarshal(b, schema); err != nil {
    51  		return nil, err
    52  	}
    53  	return schema, nil
    54  }
    55  
    56  // MustLoadSwagger20Schema panics when Swagger20Schema returns an error
    57  func MustLoadSwagger20Schema() *Schema {
    58  	d, e := Swagger20Schema()
    59  	if e != nil {
    60  		panic(e)
    61  	}
    62  	return d
    63  }
    64  
    65  // Swagger20Schema loads the swagger 2.0 schema from the embedded assets
    66  func Swagger20Schema() (*Schema, error) {
    67  
    68  	b, err := v2SchemaJSONBytes()
    69  	if err != nil {
    70  		return nil, err
    71  	}
    72  
    73  	schema := new(Schema)
    74  	if err := json.Unmarshal(b, schema); err != nil {
    75  		return nil, err
    76  	}
    77  	return schema, nil
    78  }
    79  

View as plain text