func endpointParse()

in tools/endpoint.go [60:125]


func endpointParse(srcpath string) (string, error) {

	_, err := os.Stat(srcpath)
	if err != nil {
		return "", errors.New("Source file error")
	}
	data, err := ioutil.ReadFile(srcpath)
	if err != nil {
		return "", err
	}
	endponit := &Endpoints{}
	err = json.Unmarshal(data, endponit)
	if err != nil || len(endponit.DocumentID) == 0 {
		return "", err
	}
	realEndpoints := &RealEndpoints{}
	for key := range endponit.GlobalEndpoints {
		if endponit.DocumentID[key] == "" {
			endponit.DocumentID[key] = "sdk"
		}
	}

	for key := range endponit.RegionalEndpointPattern {
		if endponit.DocumentID[key] == "" {
			endponit.DocumentID[key] = "sdk"
		}
	}

	for key := range endponit.RegionalEndpoints {
		if endponit.DocumentID[key] == "" {
			endponit.DocumentID[key] = "sdk"
		}
	}
	for key, value := range endponit.DocumentID {
		realEndpoint := Product{
			Code:                    key,
			LocationServiceCode:     key,
			DocumentID:              value,
			GlobalEndpoint:          endponit.GlobalEndpoints[key],
			RegionalEndpointPattern: endponit.RegionalEndpointPattern[key],
		}
		if realEndpoint.DocumentID == "sdk" {
			realEndpoint.DocumentID = ""
		}
		for key1, value1 := range endponit.LocationCodeMapping {
			if value1 == key {
				realEndpoint.Code = key1
			}
		}
		for key2, value2 := range endponit.RegionalEndpoints[key] {
			regionalEndpoint := RegionalEndpoint{
				Region:   key2,
				Endpoint: value2,
			}

			realEndpoint.RegionalEndpoints = append(realEndpoint.RegionalEndpoints, regionalEndpoint)
		}
		realEndpoints.Products = append(realEndpoints.Products, realEndpoint)
	}
	byte, err := json.MarshalIndent(realEndpoints, "", "\t")
	if err != nil {
		return "", err
	}
	return string(byte), err

}