scoutmetrics 0.0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a42ad2a0f6b525d3949ea17bd03293dcb77c6210
4
+ data.tar.gz: a1d774b69f5805ca072fac499aae783a2ecb8b9d
5
+ SHA512:
6
+ metadata.gz: aa5cc6dc3350ffcfa32d240e91bc301f218882c1eee33c954264f5151084e13a3aaa68e6f6080db4fabf5c9aeaa266014e3d33489f0f7a414ca5619e47b76a23
7
+ data.tar.gz: ba3314bd668fb12b4b19a1391c8eb0a307cf282af2f1555cd7fb5879b8c42c6c4b423ea780b4ed964d52ae8393610f500364120089e4ca756996a5bdeb60f560
@@ -0,0 +1,24 @@
1
+ module ScoutMetrics
2
+
3
+ module Configuration
4
+
5
+ VALID_OPTIONS_KEYS = [
6
+ :access_token
7
+ ].freeze
8
+
9
+ attr_accessor *VALID_OPTIONS_KEYS
10
+
11
+ # Create a hash of options and their values
12
+ def options
13
+ VALID_OPTIONS_KEYS.inject({}) do |option, key|
14
+ option.merge!(key => send(key))
15
+ end
16
+ end
17
+
18
+ def configure
19
+ yield self
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1,35 @@
1
+ module ScoutMetrics
2
+
3
+ class Engagement
4
+
5
+ # Adds an "Engagement" to Scout Metrics
6
+ # For example "Liked us on Facebook"
7
+ #
8
+ # @param engagement_params [Hash] Name of the engagement
9
+ # @engagement_params name [String] Describes the engagement
10
+ # @return [Json] Returns a msg for the transaction and the status of the request
11
+ # @return msg explanation of outcome
12
+ def self.create_category(name)
13
+ ScoutMetrics::Request.new(:post, '/engagements', { engagement: { name: name } })
14
+ end
15
+
16
+ # Add/Update an "EngagementInstance" on Scout Metrics
17
+ # This tells Scout Metrics that a user performed an "Engagement" on a given date
18
+ # For example: Someone "Liked us on Facebook" on Dec 12th
19
+ # (We do not track who performed the action)
20
+ #
21
+ # @param name [String] Describes the engagement
22
+ # @param date_recorded [Date] Day the engagement happened, defaults to now
23
+ #
24
+ # @return [Json] Returns a msg for the transaction and the status of the request
25
+ # @return msg explanation of outcome
26
+ def self.create(name, date_recorded=nil)
27
+ date_recorded ||= Time.new
28
+ params = { engagement: { name: name },
29
+ engagement_instance: { date_recorded: date_recorded } }
30
+ ScoutMetrics::Request.new(:post, '/engagements/add_instance', params)
31
+ end
32
+
33
+ end
34
+
35
+ end
@@ -0,0 +1,21 @@
1
+ require 'http'
2
+
3
+ module ScoutMetrics
4
+
5
+ class Request
6
+
7
+ DOMAIN = 'https://scoutmetrics.herokuapp.com/api/v1'
8
+
9
+ def initialize(method, route, params)
10
+ params[:token] = ScoutMetrics.access_token
11
+ route = "#{DOMAIN}#{route}"
12
+ puts "METHOD: #{method}"
13
+ puts "ROUTE: #{route}"
14
+ puts 'PARAMS'
15
+ puts params
16
+ response = HTTP.send(method, route, json: params)
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -0,0 +1,58 @@
1
+ module ScoutMetrics
2
+
3
+ class User
4
+
5
+ # Adds an "AppUser" to Scout Metrics
6
+ #
7
+ # @param id [Integer] Uniquely identifies user
8
+ # @param signup_date [DateTime] Date the user signed up, defaults to now
9
+ #
10
+ # @return [Json] Returns a msg for the transaction and the status of the request
11
+ # @return msg explanation of outcome
12
+ def self.create(id, signup_date=nil)
13
+ signup_date ||= Time.new
14
+ post_update(id, { signup_date: signup_date })
15
+ end
16
+
17
+ # Update an "AppUser" on Scout Metrics
18
+ #
19
+ # @param id [Integer] Uniquely identifies user
20
+ # @param return_date [DateTime] Latest time returning to your site, defaults to now
21
+ #
22
+ # @return [Json] Returns a msg for the transaction and the status of the request
23
+ # @return msg explanation of outcome
24
+ def self.update(id, return_date=nil)
25
+ return_date ||= Time.new
26
+ post_update(id, { return_date: return_date })
27
+ end
28
+
29
+ # Activate an "AppUser" on Scout Metrics
30
+ # (Should we also reset their signup_date & return_date?)
31
+ #
32
+ # @param id [Integer] Uniquely identifies user
33
+ #
34
+ # @return [Json] Returns a msg for the transaction and the status of the request
35
+ # @return msg explanation of outcome
36
+ def self.activate(id)
37
+ post_update(id, { active: true })
38
+ end
39
+
40
+ # Deactivate an "AppUser" on Scout Metrics
41
+ #
42
+ # @param id [Integer] Uniquely identifies user
43
+ #
44
+ # @return [Json] Returns a msg for the transaction and the status of the request
45
+ # @return msg explanation of outcome
46
+ def self.deactivate(id)
47
+ post_update(id, { active: false })
48
+ end
49
+
50
+ private
51
+
52
+ def self.post_update(id, params)
53
+ ScoutMetrics::Request.new(:put, "/app_users/#{id}", { app_user: params })
54
+ end
55
+
56
+ end
57
+
58
+ end
@@ -0,0 +1,26 @@
1
+ require 'scoutmetrics/configuration'
2
+ require 'scoutmetrics/engagement'
3
+ require 'scoutmetrics/request'
4
+ require 'scoutmetrics/user'
5
+
6
+ module ScoutMetrics
7
+ extend Configuration
8
+
9
+ end
10
+ # Configure in your initializer as such
11
+ #
12
+ # ScoutMetrics.configure do |config|
13
+ # config.access_token = SCOUT_PROJECT_TOKEN
14
+ # end
15
+ #
16
+ # Add a new User
17
+ # ScoutMetrics::User.create({ app_id: user.id, signup_date: DateTime.current })
18
+ #
19
+ # Update an existing User
20
+ # ScoutMetrics::User.update({ app_id: user.id, return_date: DateTime.current })
21
+ #
22
+ # Add an engagement
23
+ # ScoutMetrics::Engagement.create({ name: 'Liked us on Facebook' })
24
+ #
25
+ # Report an engagement
26
+ # ScoutMetrics::Engagement.report({ name: 'Liked us on Facebook' }, DateTime.current)
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: scoutmetrics
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Dosty Everts
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: http
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.6.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.6.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: http_parser.rb
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.6.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.6.0
41
+ description: Ruby wrapper for the Scout Metrics API
42
+ email: dosty@mustwin.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/scoutmetrics.rb
48
+ - lib/scoutmetrics/configuration.rb
49
+ - lib/scoutmetrics/engagement.rb
50
+ - lib/scoutmetrics/request.rb
51
+ - lib/scoutmetrics/user.rb
52
+ homepage: https://github.com/MustWin/scoutmetrics-ruby-gem
53
+ licenses:
54
+ - MIT
55
+ metadata: {}
56
+ post_install_message:
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ requirements: []
71
+ rubyforge_project:
72
+ rubygems_version: 2.2.2
73
+ signing_key:
74
+ specification_version: 4
75
+ summary: Ruby wrapper for the Scout Metrics API
76
+ test_files: []