numerousapp 1.2.6 → 1.2.7
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 +4 -4
- data/lib/numerousapp.rb +30 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d84cedd80341e019f0e486dd57c265ef46df5379
|
4
|
+
data.tar.gz: c362a7d857fdc212c4e3f6b23dee841ce6d170ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 867a746bce44f34bea1b7b451ed93d07c0bbe3d1aa1a11d076dba317f32d81b85bec44947b5c00b5e3b37cf078288668e04fbde5ad968e8a600f416a1277b00e
|
7
|
+
data.tar.gz: a5ef9a2db1b91f00290400fe6efe114705792ed7f0726c8be1e75a027f7fb584e3b747d44a2008f88b9d3a5a6949af9eba42fa23ca43a39faba5f00de299d295
|
data/lib/numerousapp.rb
CHANGED
@@ -121,7 +121,7 @@ class NumerousClientInternals
|
|
121
121
|
# @return [String] FQDN of the target NumerousApp server.
|
122
122
|
#
|
123
123
|
# @!attribute [r] debugLevel
|
124
|
-
# @return [Fixnum] Current debugging level;
|
124
|
+
# @return [Fixnum] Current debugging level; change via debug() method
|
125
125
|
#
|
126
126
|
def initialize(apiKey=nil, server:'api.numerousapp.com',
|
127
127
|
throttle:nil, throttleData:nil)
|
@@ -142,11 +142,12 @@ class NumerousClientInternals
|
|
142
142
|
@filterDuplicates = true # see discussion elsewhere
|
143
143
|
@need_restart = true # port will be opened in simpleAPI
|
144
144
|
|
145
|
-
#
|
146
|
-
#
|
145
|
+
# Throttling:
|
146
|
+
#
|
147
|
+
# arbitraryMaximum is just that: under no circumstances will we retry
|
147
148
|
# any particular request more than that. Tough noogies.
|
148
149
|
#
|
149
|
-
#
|
150
|
+
# throttlePolicy "tuple" is:
|
150
151
|
# [ 0 ] - Proc
|
151
152
|
# [ 1 ] - specific data for Proc
|
152
153
|
# [ 2 ] - "up" tuple for chained policy
|
@@ -157,7 +158,8 @@ class NumerousClientInternals
|
|
157
158
|
#
|
158
159
|
@arbitraryMaximumTries = 10
|
159
160
|
voluntary = { voluntary: 40, volmaxdelay: 5}
|
160
|
-
# you can keep the dflt throttle but just alter the voluntary
|
161
|
+
# you can keep the dflt throttle but just alter the voluntary
|
162
|
+
# parameters, this way:
|
161
163
|
if throttleData and not throttle
|
162
164
|
voluntary = voluntary.merge(throttleData)
|
163
165
|
end
|
@@ -166,7 +168,7 @@ class NumerousClientInternals
|
|
166
168
|
@throttlePolicy = [throttle, throttleData, @throttlePolicy]
|
167
169
|
end
|
168
170
|
|
169
|
-
@statistics = Hash.new { |h, k| h[k] = 0 } #
|
171
|
+
@statistics = Hash.new { |h, k| h[k] = 0 } # stats are "infotainment"
|
170
172
|
@debugLevel = 0
|
171
173
|
|
172
174
|
end
|
@@ -179,7 +181,7 @@ class NumerousClientInternals
|
|
179
181
|
#
|
180
182
|
# @return [String] Human-appropriate string representation.
|
181
183
|
def to_s()
|
182
|
-
oid = (2 * self.object_id).to_s(16) # XXX "2*"
|
184
|
+
oid = (2 * self.object_id).to_s(16) # XXX "2*" matches native to_s
|
183
185
|
return "<Numerous {#{@serverName}} @ 0x#{oid}>"
|
184
186
|
end
|
185
187
|
|
@@ -223,7 +225,7 @@ class NumerousClientInternals
|
|
223
225
|
|
224
226
|
protected
|
225
227
|
|
226
|
-
VersionString = '
|
228
|
+
VersionString = '20150904-1.2.7'
|
227
229
|
|
228
230
|
MethMap = {
|
229
231
|
GET: Net::HTTP::Get,
|
@@ -242,7 +244,7 @@ class NumerousClientInternals
|
|
242
244
|
rslt = {}
|
243
245
|
rslt[:httpMethod] = whichOp
|
244
246
|
|
245
|
-
# Build the substitutions from
|
247
|
+
# Build the substitutions from defaults (if any) and non-nil kwargs.
|
246
248
|
# Note: we are carefully making copies of the underlying dictionaries
|
247
249
|
# so you get your own private context returned to you
|
248
250
|
substitutions = (info[:defaults]||{}).clone
|
@@ -605,7 +607,6 @@ class NumerousClientInternals
|
|
605
607
|
#
|
606
608
|
# The policy this implements:
|
607
609
|
# * if "getting close" to the limit, arbitrarily delay ourselves.
|
608
|
-
# See ComputeVoluntaryDelay above for details on that policy
|
609
610
|
#
|
610
611
|
# * if we truly got spanked with "Too Many Requests"
|
611
612
|
# then delay the amount of time the server told us to delay.
|
@@ -1660,10 +1661,13 @@ class NumerousMetric < NumerousClientInternals
|
|
1660
1661
|
#
|
1661
1662
|
# @param [Fixnum|Float] newval Required. Value to be written.
|
1662
1663
|
#
|
1663
|
-
# @param [Boolean] onlyIf
|
1664
|
-
# Optional (keyword arg).
|
1665
|
-
#
|
1666
|
-
#
|
1664
|
+
# @param [Boolean|String] onlyIf
|
1665
|
+
# Optional (keyword arg). Default is false.
|
1666
|
+
# If this is true or the string 'IGNORE' then the server only creates
|
1667
|
+
# a metric event if the newval is different from the current value.
|
1668
|
+
# If onlyIf=true then this RaisesNumerousMetricConflictError if there
|
1669
|
+
# is no change in value. If onlyIf is 'IGNORE' then the "conflict" error
|
1670
|
+
# is silently ignored (probably the more common usage case).
|
1667
1671
|
#
|
1668
1672
|
# @param [Boolean] add
|
1669
1673
|
# Optional (keyword arg). Sends the "action: ADD" attribute which
|
@@ -1691,7 +1695,11 @@ class NumerousMetric < NumerousClientInternals
|
|
1691
1695
|
#
|
1692
1696
|
def write(newval, onlyIf:false, add:false, dictionary:false, updated:nil)
|
1693
1697
|
j = { 'value' => newval }
|
1694
|
-
if onlyIf
|
1698
|
+
if onlyIf != false
|
1699
|
+
if not [ true, 'IGNORE' ].include? onlyIf
|
1700
|
+
# onlyIf must be false, true, or "IGNORE"
|
1701
|
+
raise ArgumentError, 'onlyIf must be false, true, or "IGNORE"'
|
1702
|
+
end
|
1695
1703
|
j['onlyIfChanged'] = true
|
1696
1704
|
end
|
1697
1705
|
if add
|
@@ -1722,8 +1730,14 @@ class NumerousMetric < NumerousClientInternals
|
|
1722
1730
|
rescue NumerousError => e
|
1723
1731
|
# if onlyIf was specified and the error is "conflict"
|
1724
1732
|
# (meaning: no change), raise ConflictError specifically
|
1733
|
+
# or ignore it if you specified onlyIf="IGNORE"
|
1725
1734
|
if onlyIf and e.code == 409
|
1726
|
-
|
1735
|
+
if onlyIf != 'IGNORE'
|
1736
|
+
raise NumerousMetricConflictError.new("No Change", e.details)
|
1737
|
+
else
|
1738
|
+
# forge a pseudo-result because you asked for it
|
1739
|
+
v = { 'value'=>newval, 'unchanged'=>true }
|
1740
|
+
end
|
1727
1741
|
else
|
1728
1742
|
raise e # never mind, plain NumerousError is fine
|
1729
1743
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: numerousapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neil Webber
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Classes implementing the NumerousApp REST APIs for metrics. Requires
|
14
14
|
Ruby 2.x
|