wavefront-sdk 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
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