metriks 0.9.1 → 0.9.2

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.
data/lib/metriks.rb CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Metriks
3
- VERSION = '0.9.1'
3
+ VERSION = '0.9.2'
4
4
 
5
5
  def self.get(name)
6
6
  Metriks::Registry.default.get(name)
@@ -1,23 +1,7 @@
1
- require 'faraday'
2
- require 'faraday_middleware'
3
- require 'yajl'
4
- require 'yajl/json_gem'
1
+ require 'net/https'
5
2
 
6
3
  module Metriks::Reporter
7
4
  class LibratoMetrics
8
- def self.connection
9
- @connection ||= Faraday::Connection.new('https://metrics-api.librato.com') do |b|
10
- b.use FaradayMiddleware::EncodeJson
11
- b.adapter Faraday.default_adapter
12
- b.use Faraday::Response::RaiseError
13
- b.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/
14
- end.tap do |c|
15
- c.headers[:content_type] = 'application/json'
16
- c.headers[:user_agent] = "Metriks/#{Metriks::VERSION} Faraday/#{Faraday::VERSION}"
17
- end
18
- end
19
-
20
-
21
5
  def initialize(email, token, options = {})
22
6
  @email = email
23
7
  @token = token
@@ -90,19 +74,42 @@ module Metriks::Reporter
90
74
  end
91
75
  end
92
76
 
93
- submit(:gauges => gauges.flatten)
77
+ submit(form_data(gauges.flatten))
94
78
  end
95
79
 
96
- def connection
97
- @connection ||= self.class.connection.dup.tap do |c|
98
- c.basic_auth @email, @token
80
+ def submit(data)
81
+ url = URI.parse('https://metrics-api.librato.com/v1/metrics')
82
+ req = Net::HTTP::Post.new(url.path)
83
+ req.basic_auth(@email, @token)
84
+ req.set_form_data(data)
85
+
86
+ http = Net::HTTP.new(url.host, url.port)
87
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
88
+ http.use_ssl = true
89
+ store = OpenSSL::X509::Store.new
90
+ store.set_default_paths
91
+ http.cert_store = store
92
+
93
+ case res = http.start { |http| http.request(req) }
94
+ when Net::HTTPSuccess, Net::HTTPRedirection
95
+ # OK
96
+ else
97
+ res.error!
99
98
  end
100
99
  end
101
100
 
102
- def submit(body)
103
- connection.post '/v1/metrics' do |req|
104
- req.body = body
101
+ def form_data(gauges)
102
+ data = {}
103
+
104
+ gauges.each_with_index do |gauge, idx|
105
+ gauge.each do |key, value|
106
+ if value
107
+ data["gauges[#{idx}][#{key}]"] = value.to_s
108
+ end
109
+ end
105
110
  end
111
+
112
+ data
106
113
  end
107
114
 
108
115
  def prepare_metric(base_name, metric, keys, snapshot_keys = [])
data/metriks.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'metriks'
16
- s.version = '0.9.1'
16
+ s.version = '0.9.2'
17
17
  s.date = '2012-03-06'
18
18
 
19
19
  ## Make sure your summary is short. The description may be as long
@@ -42,9 +42,6 @@ Gem::Specification.new do |s|
42
42
  s.add_dependency('atomic', ["~> 1.0"])
43
43
  s.add_dependency('hitimes', [ "~> 1.1"])
44
44
  s.add_dependency('rbtree', [ "~> 0.3" ])
45
- s.add_dependency('faraday', ['~> 0.7.0'])
46
- s.add_dependency('faraday_middleware', ['~> 0.8.4'])
47
- s.add_dependency('yajl-ruby')
48
45
 
49
46
  ## List your development dependencies here. Development dependencies are
50
47
  ## those that are only needed during development
@@ -6,14 +6,6 @@ class LibratoMetricsReporterTest < Test::Unit::TestCase
6
6
  def setup
7
7
  @registry = Metriks::Registry.new
8
8
  @reporter = Metriks::Reporter::LibratoMetrics.new('user', 'password', :registry => @registry)
9
-
10
- @reporter.connection.builder.tap do |c|
11
- c.swap 1, Faraday::Adapter::Test do |stub|
12
- stub.post '/v1/metrics' do |env|
13
- [ 200, {}, '' ]
14
- end
15
- end
16
- end
17
9
  end
18
10
 
19
11
  def teardown
@@ -27,6 +19,8 @@ class LibratoMetricsReporterTest < Test::Unit::TestCase
27
19
  @registry.timer('timer.testing').update(1.5)
28
20
  @registry.utilization_timer('utilization_timer.testing').update(1.5)
29
21
 
22
+ @reporter.expects(:submit)
23
+
30
24
  @reporter.write
31
25
  end
32
26
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 9
8
- - 1
9
- version: 0.9.1
8
+ - 2
9
+ version: 0.9.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Eric Lindvall
@@ -56,50 +56,10 @@ dependencies:
56
56
  version: "0.3"
57
57
  type: :runtime
58
58
  version_requirements: *id003
59
- - !ruby/object:Gem::Dependency
60
- name: faraday
61
- prerelease: false
62
- requirement: &id004 !ruby/object:Gem::Requirement
63
- requirements:
64
- - - ~>
65
- - !ruby/object:Gem::Version
66
- segments:
67
- - 0
68
- - 7
69
- - 0
70
- version: 0.7.0
71
- type: :runtime
72
- version_requirements: *id004
73
- - !ruby/object:Gem::Dependency
74
- name: faraday_middleware
75
- prerelease: false
76
- requirement: &id005 !ruby/object:Gem::Requirement
77
- requirements:
78
- - - ~>
79
- - !ruby/object:Gem::Version
80
- segments:
81
- - 0
82
- - 8
83
- - 4
84
- version: 0.8.4
85
- type: :runtime
86
- version_requirements: *id005
87
- - !ruby/object:Gem::Dependency
88
- name: yajl-ruby
89
- prerelease: false
90
- requirement: &id006 !ruby/object:Gem::Requirement
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- segments:
95
- - 0
96
- version: "0"
97
- type: :runtime
98
- version_requirements: *id006
99
59
  - !ruby/object:Gem::Dependency
100
60
  name: tomdoc
101
61
  prerelease: false
102
- requirement: &id007 !ruby/object:Gem::Requirement
62
+ requirement: &id004 !ruby/object:Gem::Requirement
103
63
  requirements:
104
64
  - - ~>
105
65
  - !ruby/object:Gem::Version
@@ -108,11 +68,11 @@ dependencies:
108
68
  - 2
109
69
  version: "0.2"
110
70
  type: :development
111
- version_requirements: *id007
71
+ version_requirements: *id004
112
72
  - !ruby/object:Gem::Dependency
113
73
  name: mocha
114
74
  prerelease: false
115
- requirement: &id008 !ruby/object:Gem::Requirement
75
+ requirement: &id005 !ruby/object:Gem::Requirement
116
76
  requirements:
117
77
  - - ~>
118
78
  - !ruby/object:Gem::Version
@@ -121,7 +81,7 @@ dependencies:
121
81
  - 10
122
82
  version: "0.10"
123
83
  type: :development
124
- version_requirements: *id008
84
+ version_requirements: *id005
125
85
  description: An experimental metrics client.
126
86
  email: eric@sevenscale.com
127
87
  executables: []