esapi.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Licensed to Elasticsearch B.V. under one or more contributor
  2. // license agreements. See the NOTICE file distributed with
  3. // this work for additional information regarding copyright
  4. // ownership. Elasticsearch B.V. licenses this file to you under
  5. // the Apache License, Version 2.0 (the "License"); you may
  6. // not use this file except in compliance with the License.
  7. // You may obtain a copy of the License at
  8. //
  9. // http://www.apache.org/licenses/LICENSE-2.0
  10. //
  11. // Unless required by applicable law or agreed to in writing,
  12. // software distributed under the License is distributed on an
  13. // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  14. // KIND, either express or implied. See the License for the
  15. // specific language governing permissions and limitations
  16. // under the License.
  17. package esapi
  18. import (
  19. "net/http"
  20. "strconv"
  21. "time"
  22. "github.com/elastic/go-elasticsearch/v7/internal/version"
  23. )
  24. // Version returns the package version as a string.
  25. //
  26. const Version = version.Client
  27. // Transport defines the interface for an API client.
  28. //
  29. type Transport interface {
  30. Perform(*http.Request) (*http.Response, error)
  31. }
  32. // BoolPtr returns a pointer to v.
  33. //
  34. // It is used as a convenience function for converting a bool value
  35. // into a pointer when passing the value to a function or struct field
  36. // which expects a pointer.
  37. //
  38. func BoolPtr(v bool) *bool { return &v }
  39. // IntPtr returns a pointer to v.
  40. //
  41. // It is used as a convenience function for converting an int value
  42. // into a pointer when passing the value to a function or struct field
  43. // which expects a pointer.
  44. //
  45. func IntPtr(v int) *int { return &v }
  46. // formatDuration converts duration to a string in the format
  47. // accepted by Elasticsearch.
  48. //
  49. func formatDuration(d time.Duration) string {
  50. if d < time.Millisecond {
  51. return strconv.FormatInt(int64(d), 10) + "nanos"
  52. }
  53. return strconv.FormatInt(int64(d)/int64(time.Millisecond), 10) + "ms"
  54. }