zenbox 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,8 @@
1
- module Contextify
2
- # Sends out the notice to Contextify
1
+ module Zenbox
2
+ # Sends out the notice to Zenbox
3
3
  class Sender
4
4
 
5
- CUSTOMERS_URI = '/customers'.freeze
5
+ CUSTOMERS_URI = '/customers.json'.freeze
6
6
  HTTP_ERRORS = [Timeout::Error,
7
7
  Errno::EINVAL,
8
8
  Errno::ECONNRESET,
@@ -29,10 +29,10 @@ module Contextify
29
29
  end
30
30
  end
31
31
 
32
- # Sends the customer data off to Contextify for processing.
32
+ # Sends the customer data off to Zenbox for processing.
33
33
  #
34
34
  # @param [String] data The JSON notice to be sent off
35
- def send_to_contextify(data)
35
+ def send_to_zenbox(data)
36
36
  http = setup_http_connection
37
37
 
38
38
  # Set up POST request with formdata and headers
@@ -43,7 +43,7 @@ module Contextify
43
43
  response = begin
44
44
  http.request(request)
45
45
  rescue *HTTP_ERRORS => e
46
- log :error, "Timeout while contacting the Contextify server."
46
+ log :error, "Timeout while contacting the Zenbox server."
47
47
  nil
48
48
  end
49
49
 
@@ -57,7 +57,7 @@ module Contextify
57
57
  end
58
58
 
59
59
  rescue => e
60
- log :error, "[Contextify::Sender#send_to_contextify] Cannot send notification. Error: #{e.class} - #{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}"
60
+ log :error, "[Zenbox::Sender#send_to_zenbox] Cannot send notification. Error: #{e.class} - #{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}"
61
61
  nil
62
62
  end
63
63
 
@@ -84,11 +84,11 @@ module Contextify
84
84
 
85
85
  def log(level, message, response = nil)
86
86
  logger.send level, LOG_PREFIX + message if logger
87
- Contextify.report_response_body(response.body) if response && response.respond_to?(:body)
87
+ Zenbox.report_response_body(response.body) if response && response.respond_to?(:body)
88
88
  end
89
89
 
90
90
  def logger
91
- Contextify.logger
91
+ Zenbox.logger
92
92
  end
93
93
 
94
94
  def setup_http_connection
@@ -107,7 +107,7 @@ module Contextify
107
107
  # else
108
108
  # http.ca_file = Sender.local_cert_path # ca-bundle.crt built from source, see resources/README.md
109
109
  # end
110
- http.ca_file = Contextify.configuration.ca_bundle_path
110
+ http.ca_file = Zenbox.configuration.ca_bundle_path
111
111
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
112
112
  else
113
113
  http.use_ssl = false
@@ -115,7 +115,7 @@ module Contextify
115
115
 
116
116
  http
117
117
  rescue => e
118
- log :error, "[Contextify::Sender#setup_http_connection] Failure initializing the HTTP connection.\nError: #{e.class} - #{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}"
118
+ log :error, "[Zenbox::Sender#setup_http_connection] Failure initializing the HTTP connection.\nError: #{e.class} - #{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}"
119
119
  raise e
120
120
  end
121
121
 
@@ -1,4 +1,4 @@
1
- namespace :contextify do
1
+ namespace :zenbox do
2
2
 
3
3
  task :log_stdout do
4
4
  require 'logger'
@@ -0,0 +1,50 @@
1
+ require 'zenbox'
2
+ require File.join(File.dirname(__FILE__), 'shared_tasks')
3
+
4
+ namespace :zenbox do
5
+ desc "Verify your zenbox api_key by sending test data to the zenbox service"
6
+ task :test => :environment do
7
+ if defined?(RAILS_DEFAULT_LOGGER)
8
+ # Rails 2
9
+ RAILS_DEFAULT_LOGGER.level = Logger::DEBUG
10
+ else
11
+ # Rails 3
12
+ Rails.logger = Logger.new(STDOUT)
13
+ Rails.logger.level = Logger::DEBUG
14
+ Zenbox.configure(true) do |config|
15
+ config.logger = Rails.logger
16
+ end
17
+ end
18
+
19
+ unless Zenbox.configuration.api_key
20
+ puts "Zenbox needs an API key configured! Check the README to see how to add it."
21
+ exit
22
+ end
23
+
24
+ puts "\nPosting dummy data for 'test@example.com'...\n\n"
25
+
26
+ if Zenbox.post "test@example.com", {:test_data => 123}
27
+ puts "\nZenbox is set up and ready to use!"
28
+ else
29
+ puts "\nPlease check your Zenbox configuration or network settings."
30
+ end
31
+ puts
32
+ end
33
+
34
+ desc "Syncs all user data after the model has been marked. Can be run many times without any side-effects"
35
+ task :sync => :environment do
36
+ if Zenbox.model.nil?
37
+ puts "You must set a model to zenbox. Did you remember to user `zenbox_user :fields...` in your User model? "
38
+ return
39
+ end
40
+
41
+ model = Zenbox.model.constantize
42
+
43
+ puts "Syncing #{model.all.count} models with Zenbox..."
44
+
45
+ model.all.each do |model|
46
+ model.zenbox_sync!
47
+ end
48
+ end
49
+ end
50
+
@@ -0,0 +1,39 @@
1
+ module Zenbox
2
+ module UserHelper
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+
7
+ # TODO: Catch errors because of missing methods and prompt the
8
+ # user, "Tried to sync a non-existant method with
9
+ # zenbox. Please make sure to implement #{method_name} on your
10
+ # model"
11
+ def zenbox_sync!
12
+ Zenbox.post(self.email, zenbox_data)
13
+ end
14
+
15
+ def zenbox_data(*fields)
16
+ fields = fields.empty? ? self.class.class_variable_get('@@zenbox_fields') : fields
17
+
18
+ fields.inject({}) { |run, field| run[field] = self.send(field.to_sym); run }
19
+ end
20
+
21
+ module ClassMethods
22
+ def self.extended(base)
23
+ base.class_variable_set("@@zenbox_fields", [])
24
+
25
+ Zenbox.model = base.to_s
26
+ end
27
+
28
+ def zenbox_fields=(*args)
29
+ self.class_variable_set("@@zenbox_fields", args)
30
+ end
31
+
32
+ def zenbox_user(*fields)
33
+ self.send(:zenbox_fields=, *fields)
34
+
35
+ after_commit :zenbox_sync!
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,3 @@
1
+ module Zenbox
2
+ VERSION = "0.0.4"
3
+ end
data/rails/init.rb CHANGED
@@ -1 +1 @@
1
- require 'contextify/rails'
1
+ require 'zenbox/rails'
data/resources/README.md CHANGED
@@ -1,9 +1,9 @@
1
- Contextify Resources
1
+ Zenbox Resources
2
2
  ====================
3
3
 
4
- Contextify has an SSL mode available.
4
+ Zenbox has an SSL mode available.
5
5
  SSL Certificate Authority (CA) certificates are not kept current by default on many environments.
6
- When CA certs are stale, Contextify cannot verify Contextify's production SSL cert and POSTs fail.
6
+ When CA certs are stale, Zenbox cannot verify Zenbox's production SSL cert and POSTs fail.
7
7
  To avoid this, we package local CA certs. The production of these certs is detailed here.
8
8
 
9
9
 
@@ -1,20 +1,20 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
- require "contextify/version"
3
+ require "zenbox/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = %q{zenbox}
7
- s.version = Contextify::VERSION.dup
8
- s.summary = %q{Send your user information to our hosted service and contextify your inbox.}
7
+ s.version = Zenbox::VERSION.dup
8
+ s.summary = %q{Send your user information to our hosted service and zenbox your inbox.}
9
9
 
10
10
  s.require_paths = ["lib"]
11
11
  s.files = Dir["{generators/**/*,lib/**/*,rails/**/*,resources/*,script/*}"] +
12
- %w(contextify.gemspec Gemfile INSTALL MIT-LICENSE Rakefile README.md install.rb)
12
+ %w(zenbox.gemspec Gemfile INSTALL MIT-LICENSE Rakefile README.md install.rb)
13
13
  s.test_files = Dir.glob("{test,spec,features}/**/*")
14
14
 
15
15
  s.add_runtime_dependency("json")
16
16
 
17
- s.authors = ["Contextify"]
17
+ s.authors = ["Zenbox"]
18
18
  s.email = %q{support@cloudfuji.com}
19
19
  s.homepage = "http://cloudfuji.com"
20
20
 
metadata CHANGED
@@ -1,57 +1,57 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: zenbox
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
4
5
  prerelease:
5
- version: 0.0.3
6
6
  platform: ruby
7
- authors:
8
- - Contextify
7
+ authors:
8
+ - Zenbox
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-06-20 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-06-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: json
17
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
18
17
  none: false
19
- requirements:
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *id001
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
26
30
  description:
27
31
  email: support@cloudfuji.com
28
32
  executables: []
29
-
30
33
  extensions: []
31
-
32
34
  extra_rdoc_files: []
33
-
34
- files:
35
- - generators/contextify/contextify_generator.rb
36
- - generators/contextify/lib/insert_commands.rb
37
- - generators/contextify/lib/rake_commands.rb
38
- - generators/contextify/templates/contextify_tasks.rake
39
- - generators/contextify/templates/initializer.rb
40
- - lib/contextify/configuration.rb
41
- - lib/contextify/rails.rb
42
- - lib/contextify/railtie.rb
43
- - lib/contextify/sender.rb
44
- - lib/contextify/shared_tasks.rb
45
- - lib/contextify/tasks.rb
46
- - lib/contextify/user_helper.rb
47
- - lib/contextify/version.rb
48
- - lib/contextify.rb
49
- - lib/rails/generators/contextify/contextify_generator.rb
35
+ files:
36
+ - generators/zenbox/lib/insert_commands.rb
37
+ - generators/zenbox/lib/rake_commands.rb
38
+ - generators/zenbox/templates/initializer.rb
39
+ - generators/zenbox/templates/zenbox_tasks.rake
40
+ - generators/zenbox/zenbox_generator.rb
41
+ - lib/rails/generators/zenbox/zenbox_generator.rb
42
+ - lib/zenbox/configuration.rb
43
+ - lib/zenbox/rails.rb
44
+ - lib/zenbox/railtie.rb
45
+ - lib/zenbox/sender.rb
46
+ - lib/zenbox/shared_tasks.rb
47
+ - lib/zenbox/tasks.rb
48
+ - lib/zenbox/user_helper.rb
49
+ - lib/zenbox/version.rb
50
50
  - lib/zenbox.rb
51
51
  - rails/init.rb
52
52
  - resources/ca-bundle.crt
53
53
  - resources/README.md
54
- - contextify.gemspec
54
+ - zenbox.gemspec
55
55
  - Gemfile
56
56
  - INSTALL
57
57
  - MIT-LICENSE
@@ -60,36 +60,32 @@ files:
60
60
  - install.rb
61
61
  homepage: http://cloudfuji.com
62
62
  licenses: []
63
-
64
63
  post_install_message:
65
64
  rdoc_options: []
66
-
67
- require_paths:
65
+ require_paths:
68
66
  - lib
69
- required_ruby_version: !ruby/object:Gem::Requirement
67
+ required_ruby_version: !ruby/object:Gem::Requirement
70
68
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 4427809426802100543
75
- segments:
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ segments:
76
74
  - 0
77
- version: "0"
78
- required_rubygems_version: !ruby/object:Gem::Requirement
75
+ hash: 4519474910494744129
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
77
  none: false
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- hash: 4427809426802100543
84
- segments:
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ segments:
85
83
  - 0
86
- version: "0"
84
+ hash: 4519474910494744129
87
85
  requirements: []
88
-
89
86
  rubyforge_project:
90
- rubygems_version: 1.8.17
87
+ rubygems_version: 1.8.24
91
88
  signing_key:
92
89
  specification_version: 3
93
- summary: Send your user information to our hosted service and contextify your inbox.
90
+ summary: Send your user information to our hosted service and zenbox your inbox.
94
91
  test_files: []
95
-
data/lib/contextify.rb DELETED
@@ -1,74 +0,0 @@
1
- require 'net/http'
2
- require 'net/https'
3
- require 'rubygems'
4
- require 'contextify/version'
5
- require 'contextify/configuration'
6
- require 'contextify/sender'
7
- require 'contextify/user_helper'
8
-
9
- require 'contextify/railtie' if defined?(Rails::Railtie)
10
-
11
- module Contextify
12
- API_VERSION = "1.0"
13
- LOG_PREFIX = "** [Contextify] "
14
-
15
- class << self
16
- # The sender object is responsible for delivering formatted data to the Contextify server.
17
- # Must respond to #send_to_contextify. See Contextify::Sender.
18
- attr_accessor :sender
19
-
20
- # Names the Contextify model we should be watching. Set
21
- # automatically when using contextify_user
22
- attr_accessor :model
23
-
24
- # A Contextify configuration object. Must act like a hash and return sensible
25
- # values for all Contextify configuration options. See Contextify::Configuration.
26
- attr_writer :configuration
27
-
28
- # Prints out the response body from Contextify for debugging help
29
- def report_response_body(response)
30
- write_verbose_log("Response from Contextify: \n#{response}")
31
- end
32
-
33
- # Writes out the given message to the #logger
34
- def write_verbose_log(message)
35
- logger.info LOG_PREFIX + message if logger
36
- end
37
-
38
- # Look for the Rails logger currently defined
39
- def logger
40
- self.configuration.logger
41
- end
42
-
43
- # Call this method to modify defaults in your initializers.
44
- #
45
- # @example
46
- # Contextify.configure do |config|
47
- # config.api_key = '1234567890abcdef'
48
- # config.secure = false
49
- # end
50
- def configure(silent = false)
51
- yield(configuration)
52
- self.sender = Sender.new(configuration)
53
- end
54
-
55
- # The configuration object.
56
- # @see Contextify.configure
57
- def configuration
58
- @configuration ||= Configuration.new
59
- end
60
-
61
- # Sends data to contextify
62
- #
63
- # @param [String] email The email address you want to send data about.
64
- # @param [Hash] opts Data that will be sent to Contextify.
65
- def post(email, data)
66
- post_data = {
67
- :api_key => configuration.api_key,
68
- :email => email,
69
- :data => data.to_json
70
- }
71
- sender.send_to_contextify(post_data)
72
- end
73
- end
74
- end
@@ -1,50 +0,0 @@
1
- require 'contextify'
2
- require File.join(File.dirname(__FILE__), 'shared_tasks')
3
-
4
- namespace :contextify do
5
- desc "Verify your contextify api_key by sending test data to the contextify service"
6
- task :test => :environment do
7
- if defined?(RAILS_DEFAULT_LOGGER)
8
- # Rails 2
9
- RAILS_DEFAULT_LOGGER.level = Logger::DEBUG
10
- else
11
- # Rails 3
12
- Rails.logger = Logger.new(STDOUT)
13
- Rails.logger.level = Logger::DEBUG
14
- Contextify.configure(true) do |config|
15
- config.logger = Rails.logger
16
- end
17
- end
18
-
19
- unless Contextify.configuration.api_key
20
- puts "Contextify needs an API key configured! Check the README to see how to add it."
21
- exit
22
- end
23
-
24
- puts "\nPosting dummy data for 'test@example.com'...\n\n"
25
-
26
- if Contextify.post "test@example.com", {:test_data => 123}
27
- puts "\nContextify is set up and ready to use!"
28
- else
29
- puts "\nPlease check your Contextify configuration or network settings."
30
- end
31
- puts
32
- end
33
-
34
- desc "Syncs all user data after the model has been marked. Can be run many times without any side-effects"
35
- task :sync => :environment do
36
- if Contextify.model.nil?
37
- puts "You must set a model to contextify. Did you remember to user `contextify_user :fields...` in your User model? "
38
- return
39
- end
40
-
41
- model = Contextify.model.constantize
42
-
43
- puts "Syncing #{model.all.count} models with Contextify..."
44
-
45
- model.all.each do |model|
46
- model.contextify_sync!
47
- end
48
- end
49
- end
50
-