speedup-adapters 0.0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6f1a0bb7c299f847fb608534834c44ee1766ef3f
4
+ data.tar.gz: 3a6390bc60e365f7a20353ebe7435688fc3d5944
5
+ SHA512:
6
+ metadata.gz: cca33d125eb454517f53ca41e3684eda05aa49d63e3335067806aafbecb037bfe56c7854a9f3f4dfef0d9a62dc3cc246b5059d5f50d147ccc779afc1ce76a844
7
+ data.tar.gz: 669569008b82f4b104eb71e1eaa852f352eb4aab08f84f6fe5d63a4b8271885952313f951419f98e3392fff44eb2532952629dbd2d8effbd1f1b56337904f6b3
@@ -0,0 +1,3 @@
1
+
2
+ require 'speedup/request_data'
3
+ require 'speedup/adapters/base'
@@ -0,0 +1,17 @@
1
+ module Speedup
2
+ module Adapters
3
+ class Base
4
+ def initialize(options = {})
5
+
6
+ end
7
+
8
+ def get(request_id)
9
+ raise "#{self.class}#get(request_id) is not yet implemented"
10
+ end
11
+
12
+ def write(request_id, data)
13
+ raise "#{self.class}#write(request_id, data) is not yet implemented"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,34 @@
1
+ require 'speedup/adapters/memory'
2
+
3
+ module Speedup
4
+ module Adapters
5
+ class Influxdb < Base
6
+ attr_accessor :requests
7
+
8
+ def initialize(options = {})
9
+ @memory = Speedup::Adapters::Memory.new
10
+ @client = InfluxDB::Client.new(options.delete(:database), options)
11
+ end
12
+
13
+ def get(request_id)
14
+ @memory.get(request_id)
15
+ end
16
+
17
+ def write(request_id, data)
18
+ return unless data.any?
19
+ data.contexts.each do |context|
20
+ [data[context]].flatten.each do |context_data|
21
+ context_data[:request_id] = request_id
22
+ context_data[:time] = context_data[:time].to_f if context_data.has_key?(:time)
23
+ @client.write_point(context.to_s, context_data)
24
+ end
25
+ end
26
+ @memory.write(request_id, data)
27
+ end
28
+
29
+ def reset
30
+ @memory.reset
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,25 @@
1
+ require 'speedup/adapters/base'
2
+
3
+ module Speedup
4
+ module Adapters
5
+ class Memory < Base
6
+ attr_accessor :requests
7
+
8
+ def initialize(options = {})
9
+ @requests = {}
10
+ end
11
+
12
+ def get(request_id)
13
+ @requests[request_id]
14
+ end
15
+
16
+ def write(request_id, data)
17
+ @requests[request_id] = data
18
+ end
19
+
20
+ def reset
21
+ @requests.clear
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,31 @@
1
+ require 'httparty'
2
+ require 'speedup/adapters/memory'
3
+
4
+ module Speedup
5
+ module Adapters
6
+
7
+ class Server
8
+ include HTTParty
9
+
10
+ def initialize(options = {})
11
+ @url = options[:url]
12
+ @api_key = options[:api_key]
13
+ @memory = Speedup::Adapters::Memory.new
14
+ end
15
+
16
+ def get(request_id)
17
+ @memory.get(request_id)
18
+ end
19
+
20
+ def write(request_id, data)
21
+ @memory.write(request_id, data)
22
+
23
+ opts = {
24
+ body: {request_id: request_id, contexts: data.contexts, data: data}.to_json,
25
+ headers: {"Content-Type" => "application/json", "X-SUR-API-Key" => @api_key},
26
+ }
27
+ self.class.post(@url + '/requests.json', opts )
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ module Speedup
2
+ class RequestData < Hash
3
+
4
+ def contexts
5
+ @contexts ||= []
6
+ end
7
+
8
+ def storage_for(context)
9
+ @contexts ||= []
10
+ @contexts |= [context]
11
+ self[context] ||= {} if context == :request
12
+ self[context] ||= []
13
+ end
14
+
15
+ def load(contexts, data)
16
+ @contexts = contexts.map(&:to_sym)
17
+ self.merge!(data.symbolize_keys)
18
+ end
19
+
20
+ end
21
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: speedup-adapters
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Ondřej Ezr
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: influxdb
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: SpeedUpRails is written in hope it will help develop faster rails applications.
56
+ email:
57
+ - ezrondre@fit.cvut.cz
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/speedup-adapters.rb
63
+ - lib/speedup/adapters/base.rb
64
+ - lib/speedup/adapters/influxdb.rb
65
+ - lib/speedup/adapters/memory.rb
66
+ - lib/speedup/adapters/server.rb
67
+ - lib/speedup/request_data.rb
68
+ homepage: https://github.com/ezrondre/speedup-rails
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubyforge_project:
88
+ rubygems_version: 2.4.6
89
+ signing_key:
90
+ specification_version: 4
91
+ summary: SpeedUpRails adapters are support gem for SpeedUpRails gem providing methods
92
+ to store request informations.
93
+ test_files: []
94
+ has_rdoc: