mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 21:30:16 +00:00 
			
		
		
		
	Steps: ./hack/pin-dependency.sh google.golang.org/api v0.15.1 ./hack/update-vendor.sh ./hack/verify-vendor.sh ./hack/pin-dependency.sh github.com/googleapis/gax-go/v2 v2.0.5 ./hack/update-vendor.sh ./hack/verify-vendor.sh ./hack/lint-dependencies.sh
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2016 Google LLC.
 | |
| // Use of this source code is governed by a BSD-style
 | |
| // license that can be found in the LICENSE file.
 | |
| 
 | |
| package gensupport
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"errors"
 | |
| 	"fmt"
 | |
| 	"math"
 | |
| )
 | |
| 
 | |
| // JSONFloat64 is a float64 that supports proper unmarshaling of special float
 | |
| // values in JSON, according to
 | |
| // https://developers.google.com/protocol-buffers/docs/proto3#json. Although
 | |
| // that is a proto-to-JSON spec, it applies to all Google APIs.
 | |
| //
 | |
| // The jsonpb package
 | |
| // (https://github.com/golang/protobuf/blob/master/jsonpb/jsonpb.go) has
 | |
| // similar functionality, but only for direct translation from proto messages
 | |
| // to JSON.
 | |
| type JSONFloat64 float64
 | |
| 
 | |
| func (f *JSONFloat64) UnmarshalJSON(data []byte) error {
 | |
| 	var ff float64
 | |
| 	if err := json.Unmarshal(data, &ff); err == nil {
 | |
| 		*f = JSONFloat64(ff)
 | |
| 		return nil
 | |
| 	}
 | |
| 	var s string
 | |
| 	if err := json.Unmarshal(data, &s); err == nil {
 | |
| 		switch s {
 | |
| 		case "NaN":
 | |
| 			ff = math.NaN()
 | |
| 		case "Infinity":
 | |
| 			ff = math.Inf(1)
 | |
| 		case "-Infinity":
 | |
| 			ff = math.Inf(-1)
 | |
| 		default:
 | |
| 			return fmt.Errorf("google.golang.org/api/internal: bad float string %q", s)
 | |
| 		}
 | |
| 		*f = JSONFloat64(ff)
 | |
| 		return nil
 | |
| 	}
 | |
| 	return errors.New("google.golang.org/api/internal: data not float or string")
 | |
| }
 |