ask-ruby 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c0ee18737c0d5e8e62a41fe19be69aed8e995da0
4
+ data.tar.gz: 33796d2f34300304d34bb802cc151e5cea0fc7e1
5
+ SHA512:
6
+ metadata.gz: e86478a7e70241147eb8080de2aac466e806a143c72e0c3841eb32404b51dcb2daa2f6903ad9f8fd2e7138bbf5b4b2afbe1d734a76969a272645c12ea14350e6
7
+ data.tar.gz: e1d205d3071994cf93c3b3750f1256cca59f0df26eb8b25dc7539d75852848d53ca7a06053c1ff4c6afd3076997a8897e01cdab51018dfa6542ea17d355c68b5
@@ -0,0 +1,3 @@
1
+ .DS_Store
2
+ .bundle
3
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --profile
@@ -0,0 +1 @@
1
+ 2.0.0-p195
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ gem 'debugger'
7
+ end
8
+
9
+ group :test do
10
+ gem 'awesome_print'
11
+ gem 'fuubar'
12
+ gem 'rspec', '~>2.13.0'
13
+ gem 'webmock', '>= 1.8.0', '< 1.10'
14
+ end
@@ -0,0 +1,31 @@
1
+ # The ask. Ruby Client
2
+
3
+ ## Initialization
4
+
5
+ Intialize the library with your API key.
6
+
7
+ If using Rails, just create `config/initializers/ask.rb`. If using anything else, make sure to require the file.
8
+
9
+ ```
10
+ Ask.api_token = '12345678901234567890'
11
+ ```
12
+
13
+ ## NPS
14
+
15
+ ### Schedule a survey to go out now.
16
+
17
+ ```
18
+ Ask.schedule_nps('test@example.com')
19
+ ```
20
+
21
+ Name, delay and properties are optional.
22
+
23
+ ```
24
+ Ask.schedule_nps('test@example.com', 'Test User', '1 day', { cohort: 'facebook', location: '1600 Pennsylvania Ave, Washington DC 20001', tags: 'foo, bar, baz'})
25
+ ```
26
+
27
+ ### Schedule a survey to go out in a week
28
+
29
+ ```
30
+ Ask.schedule_nps('test@example.com, 'Test User', 'one week', { ... })
31
+ ```
@@ -0,0 +1,7 @@
1
+ # lib = File.expand_path('../lib', __FILE__)
2
+ # $LOAD_PATH.unshift(lib)
3
+
4
+ require 'rubygems'
5
+ require "bundler/setup"
6
+
7
+ Dir[File.join(File.dirname(__FILE__),'lib/tasks/*.rake')].each { |f| load f }
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "ask-ruby"
6
+ s.version = "0.0.2"
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Ian Hunter"]
9
+ s.email = ["ian@asksurveys.com"]
10
+ s.homepage = "https://github.com/askbetter/ask-ruby"
11
+ s.summary = %q{ask. Ruby Library}
12
+ s.description = %q{Ruby library for integrating ask.}
13
+
14
+ s.rubyforge_project = s.name
15
+
16
+ s.required_ruby_version = '>= 1.9.3'
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+
23
+ s.add_dependency 'activesupport'
24
+ s.add_dependency 'faraday'
25
+ s.add_dependency 'faraday_middleware'
26
+ end
@@ -0,0 +1,40 @@
1
+ require 'faraday'
2
+ require 'faraday_middleware'
3
+
4
+ module Ask
5
+ extend self
6
+
7
+ API_URL = "https://api.asksurveys.com/"
8
+
9
+ attr_accessor :api_token
10
+
11
+ # Sends a POST to the Asksurveys API to schedule a satisfaction survey to be sent
12
+ # after a set amount of time.
13
+ #
14
+ # @see http://asksurveys.com/docs
15
+ #
16
+ # @param [User] user The user to send a survey to.
17
+ # @param [FixNum] delay How long to wait before sending the survey.
18
+ # @param [Hash] properties Additional properties to send about
19
+ # this user, purchase, item, etc.
20
+ def schedule_nps(email, name=nil, delay=nil, properties = {})
21
+ unless defined?(Ask.api_token)
22
+ raise "Make sure to set the API key before using the library: Ask.key = '1234567890'"
23
+ end
24
+
25
+ connection = Faraday.new(url: API_URL) do |faraday|
26
+ faraday.basic_auth api_token, ''
27
+ faraday.request :url_encoded
28
+ faraday.response :json # Parses response bodies as json.
29
+ faraday.adapter Faraday.default_adapter
30
+ end
31
+
32
+ payload = {}
33
+ payload[:email] = email
34
+ payload[:name] = name if name
35
+ payload[:schedule_at] = delay if delay
36
+ payload[:properties] = properties
37
+
38
+ connection.post "/v1/nps.json", payload
39
+ end
40
+ end
@@ -0,0 +1,13 @@
1
+ require "spec_helper"
2
+
3
+ describe Ask, ".schedule_nps" do
4
+ describe "the response" do
5
+ it "is successful and contains all appropriate keys" do
6
+ response = Ask.schedule_nps('test@example.com', 'test', 'one week', { foo: "bar" })
7
+
8
+ response.status.should == 201
9
+ response.body['email'].should == 'someone@example.com'
10
+ response.body['properties'].should == { "foo" => "bar" }
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ require 'webmock/rspec'
2
+ require 'ask'
3
+
4
+ Ask.api_token = 'fake234823489234897234789'
5
+
6
+ stubs = Faraday::Adapter::Test::Stubs.new do |stub|
7
+ stub.get('/v1/nps.json') { [201, {}, ''] }
8
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ask-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Ian Hunter
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
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: faraday
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: faraday_middleware
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Ruby library for integrating ask.
56
+ email:
57
+ - ian@asksurveys.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - .gitignore
63
+ - .rspec
64
+ - .ruby-version
65
+ - Gemfile
66
+ - README.md
67
+ - Rakefile
68
+ - ask-ruby.gemspec
69
+ - lib/ask.rb
70
+ - spec/ask_spec.rb
71
+ - spec/spec_helper.rb
72
+ homepage: https://github.com/askbetter/ask-ruby
73
+ licenses: []
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: 1.9.3
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project: ask-ruby
91
+ rubygems_version: 2.0.2
92
+ signing_key:
93
+ specification_version: 4
94
+ summary: ask. Ruby Library
95
+ test_files:
96
+ - spec/ask_spec.rb
97
+ - spec/spec_helper.rb
98
+ has_rdoc: