squirtgun 0.0.0 → 0.1.0

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/Rakefile CHANGED
@@ -20,7 +20,7 @@ Jeweler::Tasks.new do |gem|
20
20
  gem.summary = %Q{placeholder}
21
21
  gem.description = %Q{placeholder for long description}
22
22
  gem.email = "squirtgun@kerrizor.com"
23
- gem.authors = ["Kerri Miller"]
23
+ gem.authors = ["Kerri Miller", "Chris Doyle"]
24
24
  # dependencies defined in Gemfile
25
25
  end
26
26
  Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0
1
+ 0.1.0
@@ -0,0 +1,46 @@
1
+ class Class
2
+ def cattr_reader(*syms)
3
+ syms.flatten.each do |sym|
4
+ next if sym.is_a?(Hash)
5
+ class_eval(<<-EOS, __FILE__, __LINE__)
6
+ unless defined? @@#{sym}
7
+ @@#{sym} = nil
8
+ end
9
+
10
+ def self.#{sym}
11
+ @@#{sym}
12
+ end
13
+
14
+ def #{sym}
15
+ @@#{sym}
16
+ end
17
+ EOS
18
+ end
19
+ end
20
+
21
+ def cattr_writer(*syms)
22
+ options = syms.last.is_a?(Hash) ? syms.pop : {}
23
+ syms.flatten.each do |sym|
24
+ class_eval(<<-EOS, __FILE__, __LINE__)
25
+ unless defined? @@#{sym}
26
+ @@#{sym} = nil
27
+ end
28
+
29
+ def self.#{sym}=(obj)
30
+ @@#{sym} = obj
31
+ end
32
+
33
+ #{"
34
+ def #{sym}=(obj)
35
+ @@#{sym} = obj
36
+ end
37
+ " unless options[:instance_writer] == false }
38
+ EOS
39
+ end
40
+ end
41
+
42
+ def cattr_accessor(*syms)
43
+ cattr_reader(*syms)
44
+ cattr_writer(*syms)
45
+ end
46
+ end
@@ -0,0 +1,43 @@
1
+ require 'cattr'
2
+ require 'rubygems'
3
+ require 'json'
4
+
5
+ class Squirtgun
6
+
7
+ class Config
8
+ cattr_accessor :listener, :listener_port, :secret_key, :project_id
9
+
10
+ def self.listener
11
+ @@listener || '174.143.25.227' # TODO: maybe there's a better way to do defaults?
12
+ end
13
+
14
+ def self.listener_port
15
+ @@listener_port || '43278'
16
+ end
17
+ end
18
+
19
+
20
+ # TODO: decide if this is a shitty name because its all Squirtgun::Squirtgun..
21
+ class Gun
22
+ require 'socket'
23
+ require 'openssl'
24
+
25
+ def report(options={})
26
+ return if options[:context].nil? or options[:value].nil?
27
+
28
+
29
+ # TODO: add message format testing? Guzzler currenlty expects [context]:[value]..
30
+
31
+ options[:project_id] ||= Squirtgun::Config.project_id
32
+
33
+ sock = UDPSocket.new
34
+ sock.send({:stat => options, :hmac => encode_packet(options[:context] + options[:value], Squirtgun::Config.secret_key)}.to_json, 0, Squirtgun::Config.listener, Squirtgun::Config.listener_port)
35
+ sock.close
36
+ end
37
+
38
+ private
39
+ def encode_packet(data, key)
40
+ OpenSSL::HMAC.hexdigest('sha1', key, data)
41
+ end
42
+ end
43
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{squirtgun}
8
- s.version = "0.0.0"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Kerri Miller"]
12
- s.date = %q{2011-07-29}
11
+ s.authors = [%q{Kerri Miller}, %q{Chris Doyle}]
12
+ s.date = %q{2011-08-15}
13
13
  s.description = %q{placeholder for long description}
14
14
  s.email = %q{squirtgun@kerrizor.com}
15
15
  s.extra_rdoc_files = [
@@ -24,15 +24,16 @@ Gem::Specification.new do |s|
24
24
  "README.rdoc",
25
25
  "Rakefile",
26
26
  "VERSION",
27
+ "lib/cattr.rb",
27
28
  "lib/squirtgun.rb",
28
29
  "squirtgun.gemspec",
29
30
  "test/helper.rb",
30
31
  "test/test_squirtgun.rb"
31
32
  ]
32
33
  s.homepage = %q{http://github.com/kerrizor/squirtgun}
33
- s.licenses = ["MIT"]
34
- s.require_paths = ["lib"]
35
- s.rubygems_version = %q{1.6.2}
34
+ s.licenses = [%q{MIT}]
35
+ s.require_paths = [%q{lib}]
36
+ s.rubygems_version = %q{1.8.6}
36
37
  s.summary = %q{placeholder}
37
38
 
38
39
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,25 +1,24 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squirtgun
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 0
10
- version: 0.0.0
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kerri Miller
14
+ - Chris Doyle
14
15
  autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2011-07-29 00:00:00 -07:00
19
- default_executable:
19
+ date: 2011-08-15 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- prerelease: false
23
22
  type: :development
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
@@ -30,10 +29,10 @@ dependencies:
30
29
  segments:
31
30
  - 0
32
31
  version: "0"
33
- name: shoulda
34
32
  version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
33
+ name: shoulda
36
34
  prerelease: false
35
+ - !ruby/object:Gem::Dependency
37
36
  type: :development
38
37
  requirement: &id002 !ruby/object:Gem::Requirement
39
38
  none: false
@@ -46,10 +45,10 @@ dependencies:
46
45
  - 0
47
46
  - 0
48
47
  version: 1.0.0
49
- name: bundler
50
48
  version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
49
+ name: bundler
52
50
  prerelease: false
51
+ - !ruby/object:Gem::Dependency
53
52
  type: :development
54
53
  requirement: &id003 !ruby/object:Gem::Requirement
55
54
  none: false
@@ -62,10 +61,10 @@ dependencies:
62
61
  - 6
63
62
  - 4
64
63
  version: 1.6.4
65
- name: jeweler
66
64
  version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
65
+ name: jeweler
68
66
  prerelease: false
67
+ - !ruby/object:Gem::Dependency
69
68
  type: :development
70
69
  requirement: &id004 !ruby/object:Gem::Requirement
71
70
  none: false
@@ -76,8 +75,9 @@ dependencies:
76
75
  segments:
77
76
  - 0
78
77
  version: "0"
79
- name: rcov
80
78
  version_requirements: *id004
79
+ name: rcov
80
+ prerelease: false
81
81
  description: placeholder for long description
82
82
  email: squirtgun@kerrizor.com
83
83
  executables: []
@@ -95,11 +95,11 @@ files:
95
95
  - README.rdoc
96
96
  - Rakefile
97
97
  - VERSION
98
+ - lib/cattr.rb
98
99
  - lib/squirtgun.rb
99
100
  - squirtgun.gemspec
100
101
  - test/helper.rb
101
102
  - test/test_squirtgun.rb
102
- has_rdoc: true
103
103
  homepage: http://github.com/kerrizor/squirtgun
104
104
  licenses:
105
105
  - MIT
@@ -129,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  requirements: []
130
130
 
131
131
  rubyforge_project:
132
- rubygems_version: 1.6.2
132
+ rubygems_version: 1.8.6
133
133
  signing_key:
134
134
  specification_version: 3
135
135
  summary: placeholder