wavefront-sdk 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 778b77017e311667e540cdfc613ac815f1486946a7765cd6d6a02a8859c8808e
4
- data.tar.gz: b56b31e97198d16f2b637170527aafc18366597ad58dce4186312681ce8cb4a1
3
+ metadata.gz: e68e0e9c6233a7fb449408c84111beaf522c023370188d155c234aa3387c411c
4
+ data.tar.gz: 0a3575ed176110827a011b6793b1d6f3cf8eb64e96dba1ce4b2f129ef1234219
5
5
  SHA512:
6
- metadata.gz: 8bd597ebef72aeb412b557d25585b247c8e09e18c6ed35b5d0296bffa640dcece36150f22449bbf47ee630fd104a8502b9d3c4d16e9f9e937c0c0c4a21349415
7
- data.tar.gz: 38bd84a2693d9a61d3d16b4576990c0cbd7696f2b6499086d7e4725239bc5d949aac008f02ccc8603a5af95139e42fc7222be84a3df889cbedb300033c3e41ef
6
+ metadata.gz: 47af2cca2a5ca29d545aefb936e3850234e117d53d6ee46580b931e505fda6fdb446004680102631b1b19d463889cf601d6578de27b0e7358094b498a24174ee
7
+ data.tar.gz: 736e992312831e5c1b2f37558c70cfec883950eab7f82777baa1c9a2ba3848b0adc0abc20972d27f70e34fbe77ce027b850b65bc6781c55e78cc50a6edbfa294
data/README.md CHANGED
@@ -2,9 +2,14 @@
2
2
  [![Build Status](https://travis-ci.org/snltd/wavefront-sdk.svg?branch=master)](https://travis-ci.org/snltd/wavefront-sdk) [![Code Climate](https://codeclimate.com/github/snltd/wavefront-sdk/badges/gpa.svg)](https://codeclimate.com/github/snltd/wavefront-sdk) [![Issue Count](https://codeclimate.com/github/snltd/wavefront-sdk/badges/issue_count.svg)](https://codeclimate.com/github/snltd/wavefront-sdk) [![Gem Version](https://badge.fury.io/rb/wavefront-sdk.svg)](https://badge.fury.io/rb/wavefront-sdk) ![](http://ruby-gem-downloads-badge.herokuapp.com/wavefront-sdk?type=total)
3
3
 
4
4
  This is a Ruby SDK for v2 of
5
- [Wavefront](https://www.wavefront.com/)'s public API. It supports
6
- Ruby >= 2.2. It aims to be more lightweight, consistent, simple, and
7
- convenient than an auto-generated SDK.
5
+ [Wavefront](https://www.wavefront.com/)'s public API. It aims to be
6
+ more lightweight, consistent, simple, and convenient than an
7
+ auto-generated SDK.
8
+
9
+ As well as complete API coverage, `wavefront-sdk` includes methods
10
+ which facilitate various common tasks, and provides non-API
11
+ features such as credential management, and writing points through a
12
+ proxy.
8
13
 
9
14
  ## Installation
10
15
 
@@ -18,6 +23,10 @@ or to build locally,
18
23
  $ gem build wavefront-sdk.gemspec
19
24
  ```
20
25
 
26
+ `wavefront-sdk` requires Ruby >= 2.2. All its dependencies are pure
27
+ Ruby, right the way down, so a compiler should never be required to
28
+ install it.
29
+
21
30
  ## Documentation
22
31
 
23
32
  The code is documented with [YARD](http://yardoc.org/) and
@@ -121,7 +130,7 @@ path with a delta symbol, or by using the `write_delta()` method
121
130
 
122
131
  The SDK also provides a helper class for extracting credentials from a
123
132
  configuration file. If you don't supply a file, defaults will be
124
- used.
133
+ used. You can even override things with environment variables.
125
134
 
126
135
  ```ruby
127
136
  require 'wavefront-sdk/credentials'
@@ -142,5 +151,4 @@ wf = Wavefront::Write.new(c.proxy)
142
151
  ## Contributing
143
152
 
144
153
  Fork it, fix it, send me a PR. Please supply tests, and try to keep
145
- [Rubocop](https://github.com/bbatsov/rubocop)
146
- happy.
154
+ [Rubocop](https://github.com/bbatsov/rubocop) happy.
@@ -1,6 +1,7 @@
1
1
  require 'date'
2
2
  require_relative 'exception'
3
3
  require_relative 'parse_time'
4
+ require_relative 'stdlib'
4
5
 
5
6
  module Wavefront
6
7
  #
@@ -75,29 +76,3 @@ module Wavefront
75
76
  end
76
77
  end
77
78
  end
78
-
79
- # Extensions to stdlib Hash
80
- #
81
- class Hash
82
- # Convert a tag hash into a string. The quoting is recommended in
83
- # the WF wire-format guide. No validation is performed here.
84
- #
85
- def to_wf_tag
86
- map { |k, v| "#{k}=\"#{v}\"" }.join(' ')
87
- end
88
- end
89
-
90
- # Extensions to stdlib Array
91
- #
92
- class Array
93
- # Join strings together to make a URI path in a way that is more
94
- # flexible than URI::Join. Removes multiple and trailing
95
- # separators. Does not have to produce fully qualified paths. Has
96
- # no concept of protocols, hostnames, or query strings.
97
- #
98
- # @return [String] a URI path
99
- #
100
- def uri_concat
101
- join('/').squeeze('/').sub(%r{\/$}, '').sub(%r{\/\?}, '?')
102
- end
103
- end
@@ -0,0 +1,5 @@
1
+ require 'pathname'
2
+
3
+ (Pathname.new(__FILE__).dirname + 'stdlib').realpath.children.each do |f|
4
+ require f if f.extname == '.rb'
5
+ end
@@ -0,0 +1,14 @@
1
+ # Extensions to stdlib Array
2
+ #
3
+ class Array
4
+ # Join strings together to make a URI path in a way that is more
5
+ # flexible than URI::Join. Removes multiple and trailing
6
+ # separators. Does not have to produce fully qualified paths. Has
7
+ # no concept of protocols, hostnames, or query strings.
8
+ #
9
+ # @return [String] a URI path
10
+ #
11
+ def uri_concat
12
+ join('/').squeeze('/').sub(%r{\/$}, '').sub(%r{\/\?}, '?')
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'string'
2
+
3
+ # Extensions to stdlib Hash
4
+ #
5
+ class Hash
6
+ # Convert a tag hash into a string. The quoting is recommended in
7
+ # the WF wire-format guide. No validation is performed here.
8
+ #
9
+ # rubocop:disable Style/FormatStringToken
10
+ def to_wf_tag
11
+ map { |k, v| format('%s="%s"', k, v.tagescape) }.join(' ')
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ # Extensions to stdlib String
2
+ #
3
+ class String
4
+ # Join strings together to make a URI path in a way that is more
5
+ # flexible than URI::Join. Removes multiple and trailing
6
+ # separators. Does not have to produce fully qualified paths. Has
7
+ # no concept of protocols, hostnames, or query strings.
8
+ #
9
+ # @return [String] a URI path
10
+ #
11
+ def tagescape
12
+ gsub(/"/, '\"')
13
+ end
14
+ end
@@ -175,7 +175,8 @@ module Wavefront
175
175
  # @return nil
176
176
  #
177
177
  def wf_point_tag?(k, v)
178
- return if k && v && (k.size + v.size < 254) && k =~ /^[\w\-\.:]+$/
178
+ return if k && v && (k.size + v.size < 254) && k =~ /^[\w\-\.:]+$/ &&
179
+ v !~ /\\$/
179
180
  raise Wavefront::Exception::InvalidTag
180
181
  end
181
182
 
@@ -1 +1 @@
1
- WF_SDK_VERSION = '1.5.0'.freeze
1
+ WF_SDK_VERSION = '1.6.0'.freeze
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../../spec_helper'
4
+ require_relative '../../../lib/wavefront-sdk/stdlib/array'
5
+ require 'spy/integration'
6
+
7
+ class ArrayTest < MiniTest::Test
8
+ def test_uri_concat
9
+ assert_equal %w[a b].uri_concat, 'a/b'
10
+ assert_equal ['', 'a', 'b'].uri_concat, '/a/b'
11
+ assert_equal %w[a /b].uri_concat, 'a/b'
12
+ assert_equal ['', 'a', 'b/'].uri_concat, '/a/b'
13
+ assert_equal %w[/a /b/ /c].uri_concat, '/a/b/c'
14
+ assert_equal ['/a', '/b c'].uri_concat, '/a/b c'
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../../spec_helper'
4
+ require_relative '../../../lib/wavefront-sdk/stdlib/hash'
5
+ require 'spy/integration'
6
+
7
+ # Test extensions to stdlib hash class
8
+ #
9
+ class HashTest < MiniTest::Test
10
+ def test_to_wf_tag
11
+ assert_equal({}.to_wf_tag, '')
12
+ assert_equal({ gt1: 'gv1', gt2: 'gv2' }.to_wf_tag,
13
+ 'gt1="gv1" gt2="gv2"')
14
+ assert_equal({ tag: 'value' }.to_wf_tag, 'tag="value"')
15
+ assert_equal({ tag: 'two words' }.to_wf_tag, 'tag="two words"')
16
+ assert_equal('tag="say \"hi\""', { tag: 'say "hi"' }.to_wf_tag)
17
+ assert_equal('tag1="say \"hi\"" tag2="some stuff!"',
18
+ { tag1: 'say "hi"', tag2: 'some stuff!' }.to_wf_tag)
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../../spec_helper'
4
+ require_relative '../../../lib/wavefront-sdk/stdlib/string'
5
+
6
+ class StringTest < MiniTest::Test
7
+ def test_tagescape
8
+ assert_equal('value', 'value'.tagescape)
9
+ assert_equal('two words', 'two words'.tagescape)
10
+ assert_equal('say \"hello\"', 'say "hello"'.tagescape)
11
+ assert_equal('\"\"\"\"', '""""'.tagescape)
12
+ end
13
+ end
@@ -91,6 +91,7 @@ class WavefrontValidatorsTest < MiniTest::Test
91
91
  { 'TAG-1': 'val 1', tag2: 'val 2' },
92
92
  { tag1: '(>_<)', tag2: '^_^' }]
93
93
  bad = ['key=value',
94
+ { tag: 'badval\\' },
94
95
  { 'tag 1': 'val1', 'tag 2': 'val2' },
95
96
  { 'TAG*1': 'val 1', tag_2: 'val 2' },
96
97
  { '(>_<)': 'val1', '^_^': 'val2' },
@@ -151,11 +151,6 @@ class WavefrontWriteTest < MiniTest::Test
151
151
  end
152
152
  end
153
153
 
154
- def test_to_wf_tag
155
- assert_equal({}.to_wf_tag, '')
156
- assert_equal(TAGS.to_wf_tag, 'gt1="gv1" gt2="gv2"')
157
- end
158
-
159
154
  def test_send_point
160
155
  mocket = Mocket.new
161
156
  Spy.on(TCPSocket, :new).and_return(mocket)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wavefront-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Fisher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-25 00:00:00.000000000 Z
11
+ date: 2018-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -218,6 +218,10 @@ files:
218
218
  - lib/wavefront-sdk/savedsearch.rb
219
219
  - lib/wavefront-sdk/search.rb
220
220
  - lib/wavefront-sdk/source.rb
221
+ - lib/wavefront-sdk/stdlib.rb
222
+ - lib/wavefront-sdk/stdlib/array.rb
223
+ - lib/wavefront-sdk/stdlib/hash.rb
224
+ - lib/wavefront-sdk/stdlib/string.rb
221
225
  - lib/wavefront-sdk/user.rb
222
226
  - lib/wavefront-sdk/validators.rb
223
227
  - lib/wavefront-sdk/version.rb
@@ -250,6 +254,9 @@ files:
250
254
  - spec/wavefront-sdk/savedsearch_spec.rb
251
255
  - spec/wavefront-sdk/search_spec.rb
252
256
  - spec/wavefront-sdk/source_spec.rb
257
+ - spec/wavefront-sdk/stdlib/array_spec.rb
258
+ - spec/wavefront-sdk/stdlib/hash_spec.rb
259
+ - spec/wavefront-sdk/stdlib/string_spec.rb
253
260
  - spec/wavefront-sdk/user_spec.rb
254
261
  - spec/wavefront-sdk/validators_spec.rb
255
262
  - spec/wavefront-sdk/webhook_spec.rb
@@ -306,6 +313,9 @@ test_files:
306
313
  - spec/wavefront-sdk/savedsearch_spec.rb
307
314
  - spec/wavefront-sdk/search_spec.rb
308
315
  - spec/wavefront-sdk/source_spec.rb
316
+ - spec/wavefront-sdk/stdlib/array_spec.rb
317
+ - spec/wavefront-sdk/stdlib/hash_spec.rb
318
+ - spec/wavefront-sdk/stdlib/string_spec.rb
309
319
  - spec/wavefront-sdk/user_spec.rb
310
320
  - spec/wavefront-sdk/validators_spec.rb
311
321
  - spec/wavefront-sdk/webhook_spec.rb