metriks 0.9.1 → 0.9.2

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