zenps-ruby 0.0.0 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -7
- data/lib/zenps-ruby.rb +10 -8
- data/lib/zenps/client.rb +5 -4
- data/lib/zenps/payload.rb +8 -8
- data/lib/zenps/survey.rb +3 -3
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 931e2368e823cda7839fa93c039c78c1c8100abe3946b43ef5823e87b8145e32
|
4
|
+
data.tar.gz: c316c9c3acaabda72b797ecd47bc5017f6491e64055ff1b51f720606c64c5c28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32cab1857eecb8c81e3fce35cf1d9ff2fe07e394441987f8df03a2be7032c3137d7e8a8fad7f6f0b21197ecbfd95fcc40e6bea12c84151d3647a7fcb90d99d9c
|
7
|
+
data.tar.gz: ecfbe289ddf70293b10bb8a1d50647da99e0d24f91ead8bffd783bf80ed656804b8d53a623bd2b38eff446094f2cb8339cdcfc227404a878d60f02557944e885
|
data/README.md
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
[![Gem Version](https://badge.fury.io/rb/zenps-ruby.svg)](https://badge.fury.io/rb/zenps-ruby)
|
1
2
|
[![Codeship Status for aphilippartd/zenps-ruby](https://app.codeship.com/projects/beb50360-2413-0137-0f16-0e0a32caa97a/status?branch=master)](https://app.codeship.com/projects/330078)
|
2
3
|
[![Maintainability](https://api.codeclimate.com/v1/badges/065b707a3ccd884c40d6/maintainability)](https://codeclimate.com/github/aphilippartd/zenps-ruby/maintainability)
|
3
4
|
[![Test Coverage](https://api.codeclimate.com/v1/badges/065b707a3ccd884c40d6/test_coverage)](https://codeclimate.com/github/aphilippartd/zenps-ruby/test_coverage)
|
@@ -37,13 +38,13 @@ Zenps.configure_with('path/to/your/configuration/file.yml')
|
|
37
38
|
This wrapper allows you to send NPS surveys to your user in batch...
|
38
39
|
|
39
40
|
```ruby
|
40
|
-
Zenps::Survey.call([user_1, user_2])
|
41
|
+
Zenps::Survey.call([user_1, user_2], event: 'sign_up')
|
41
42
|
```
|
42
43
|
|
43
44
|
...or on a per-user basis
|
44
45
|
|
45
46
|
```ruby
|
46
|
-
Zenps::Survey.call(user)
|
47
|
+
Zenps::Survey.call(user, event: 'sign_up')
|
47
48
|
```
|
48
49
|
|
49
50
|
A user subject can either be:
|
@@ -59,20 +60,22 @@ A user subject can either be:
|
|
59
60
|
This allows for the gem to be used eg. in a rails application with User models that respond to the email method (and/or locale) as follows
|
60
61
|
|
61
62
|
```ruby
|
62
|
-
Zenps::Survey.call(User.limit(10))
|
63
|
+
Zenps::Survey.call(User.limit(10), event: 'sign_up')
|
63
64
|
```
|
64
65
|
|
65
66
|
but also in a more simple way as follows
|
66
67
|
|
67
68
|
```ruby
|
68
|
-
Zenps::Survey.call('john.doe@acme.com')
|
69
|
+
Zenps::Survey.call('john.doe@acme.com', event: 'sign_up')
|
69
70
|
```
|
70
71
|
|
71
72
|
The following options are available on the Survey call method:
|
72
73
|
|
73
|
-
|
74
|
-
|
75
|
-
|
74
|
+
| Options | Type | Mandatory | Description |
|
75
|
+
| --------|:---------------:| :--------:|------------------------------------------------:|
|
76
|
+
| locale | String | false | Overwrites the user's AND default locale |
|
77
|
+
| event | String | true | Typically the event triggering the NPS survey |
|
78
|
+
| tags | Array\[String\] | false | Tags giving you granularity in your analytics |
|
76
79
|
|
77
80
|
Example:
|
78
81
|
|
data/lib/zenps-ruby.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
|
2
1
|
require 'yaml'
|
3
2
|
require 'logger'
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
require_relative 'zenps/client.rb'
|
4
|
+
require_relative 'zenps/payload.rb'
|
5
|
+
require_relative 'zenps/survey.rb'
|
6
|
+
# Zenps ruby wrapper
|
7
7
|
module Zenps
|
8
8
|
# Configuration defaults
|
9
9
|
@config = {
|
@@ -16,13 +16,13 @@ module Zenps
|
|
16
16
|
|
17
17
|
# Configure through hash
|
18
18
|
def self.configure(options = {})
|
19
|
-
options.each {|k,v| @config[k.to_sym] = v if @valid_config_keys.include? k.to_sym}
|
19
|
+
options.each { |k, v| @config[k.to_sym] = v if @valid_config_keys.include? k.to_sym }
|
20
20
|
end
|
21
21
|
|
22
22
|
# Configure through yaml file
|
23
23
|
def self.configure_with(path_to_yaml_file)
|
24
24
|
begin
|
25
|
-
config = YAML
|
25
|
+
config = YAML.safe_load(IO.read(path_to_yaml_file))
|
26
26
|
rescue Errno::ENOENT
|
27
27
|
raise ConfigurationPathError
|
28
28
|
end
|
@@ -33,14 +33,16 @@ module Zenps
|
|
33
33
|
@config
|
34
34
|
end
|
35
35
|
|
36
|
+
# Missing ZENPS key error
|
36
37
|
class KeyMissingError < StandardError
|
37
|
-
def initialize(msg=
|
38
|
+
def initialize(msg = 'Zenps configuration key missing')
|
38
39
|
super
|
39
40
|
end
|
40
41
|
end
|
41
42
|
|
43
|
+
# Wrong configuration path error
|
42
44
|
class ConfigurationPathError < StandardError
|
43
|
-
def initialize(msg="YAML configuration file couldn't be found.")
|
45
|
+
def initialize(msg = "YAML configuration file couldn't be found.")
|
44
46
|
super
|
45
47
|
end
|
46
48
|
end
|
data/lib/zenps/client.rb
CHANGED
@@ -3,13 +3,13 @@ require 'uri'
|
|
3
3
|
require 'json'
|
4
4
|
|
5
5
|
module Zenps
|
6
|
+
# Api client for Zenps
|
6
7
|
class Client
|
7
|
-
|
8
8
|
def initialize
|
9
9
|
check_configuration
|
10
10
|
end
|
11
11
|
|
12
|
-
def call(options={})
|
12
|
+
def call(options = {})
|
13
13
|
@options = options
|
14
14
|
perform_request
|
15
15
|
expose_response
|
@@ -26,7 +26,7 @@ module Zenps
|
|
26
26
|
def perform_request
|
27
27
|
request = Net::HTTP::Post.new(uri, header)
|
28
28
|
request.body = body
|
29
|
-
@response = Net::HTTP.start(uri.host, uri.port, :
|
29
|
+
@response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request request }
|
30
30
|
end
|
31
31
|
|
32
32
|
def expose_response
|
@@ -40,7 +40,7 @@ module Zenps
|
|
40
40
|
def body
|
41
41
|
{
|
42
42
|
to: {
|
43
|
-
email: email
|
43
|
+
email: email
|
44
44
|
},
|
45
45
|
locale: locale,
|
46
46
|
event: event,
|
@@ -74,6 +74,7 @@ module Zenps
|
|
74
74
|
def tags
|
75
75
|
(options['tags'] || options[:tags] || []).join(', ')
|
76
76
|
rescue NoMethodError
|
77
|
+
nil
|
77
78
|
end
|
78
79
|
|
79
80
|
def end_point
|
data/lib/zenps/payload.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
module Zenps
|
2
|
+
# Class for structuring subjects into array of hashes from:
|
3
|
+
# - (array of) string(s)
|
4
|
+
# - (array of) hash(es)
|
5
|
+
# - (array of) object(s)
|
2
6
|
class Payload
|
3
|
-
# Returns array of hashes from:
|
4
|
-
# - (array of) string(s)
|
5
|
-
# - (array of) hash(es)
|
6
|
-
# - (array of) object(s)
|
7
7
|
def get(subjects)
|
8
8
|
@subjects = subjects
|
9
|
-
|
9
|
+
payload
|
10
10
|
end
|
11
11
|
|
12
12
|
private
|
@@ -15,11 +15,11 @@ module Zenps
|
|
15
15
|
|
16
16
|
def payload
|
17
17
|
@subjects = [subjects] unless array_but_not_hash?
|
18
|
-
|
18
|
+
build_payload
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
22
|
-
|
21
|
+
def build_payload
|
22
|
+
subjects.map do |subject|
|
23
23
|
{
|
24
24
|
email: get_email(subject),
|
25
25
|
locale: get_locale(subject)
|
data/lib/zenps/survey.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Zenps
|
2
|
+
# Takes list of subjects and sends NPS survey to all subjects
|
2
3
|
class Survey
|
3
|
-
|
4
|
-
def self.call(subjects, options={})
|
4
|
+
def self.call(subjects, options = {})
|
5
5
|
new.call(subjects, options)
|
6
6
|
end
|
7
7
|
|
8
|
-
def call(subjects, options={})
|
8
|
+
def call(subjects, options = {})
|
9
9
|
@subjects = subjects
|
10
10
|
@options = options
|
11
11
|
perform_requests
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zenps-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexis Philippart de Foy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
description: Ruby wrapper for Zenps
|
112
126
|
email: alexis.philippartdefoy@gmail.com
|
113
127
|
executables: []
|