delighted 1.0.0.beta2 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3328aa5e8d5da9e0aa18d14b249638e8fa18fbab
4
- data.tar.gz: ed423baff436f425bdbc72a531bd337ae890b84a
3
+ metadata.gz: fbd30413c6cbb1ddf012ba06c1e4360d14f4713e
4
+ data.tar.gz: c936317dfc07e80425b559384aeef161c98ea364
5
5
  SHA512:
6
- metadata.gz: f63f19f6995a497ff70d0cd0265cfaef551cc4617a2640ff88e2803095c0f71b35f1609fc8cb91759920335f61abff8d608ef0d78f3e18bb4f5bb13fb23272a5
7
- data.tar.gz: cc0421d791025dfcc08564b5efcc1bc46095790cc7eae3faee3812b9e11a2e34ba66eb85b9e8a0831787535b0f55847070e1f99fcfa63ba0bfcba758bf492517
6
+ metadata.gz: d2318fd1929ee0e18781c50a98758af693fffa390b39511aa7a6522cb50df751de823d418c541ecd06f09c1a648a1c3aae714aa155a91c028db4bf0289f264ad
7
+ data.tar.gz: 7980888bf830ed0777ff63d6bc56a7a304caa7a9c2028792ba1c2b2c9edbf06792f7540b99893975d7673f08e901d97058fb298758e58c5f298ba96544a4a89d
data/.travis.yml CHANGED
@@ -6,6 +6,5 @@ rvm:
6
6
  - 1.8.7
7
7
  - jruby-18mode
8
8
  - jruby-19mode
9
- - rbx-18mode
10
- - rbx-19mode
9
+ - rbx-2.1.1
11
10
  - ree
data/README.md CHANGED
@@ -1,15 +1,16 @@
1
1
  # Delighted API client for Ruby [![Build Status](https://travis-ci.org/delighted/delighted-ruby.png)](https://travis-ci.org/delighted/delighted-ruby)
2
2
 
3
-
4
3
  Official Ruby client for the [Delighted](https://delightedapp.com) API.
5
4
 
6
- For installation and usage instructions, please [sign in to your Delighted account](https://delightedapp.com/signin) and follow the API documentation under Settings.
5
+ For basic installation and usage instructions, please [sign in to your Delighted account](https://delightedapp.com/signin) and follow the API documentation under Settings.
6
+
7
+ For more detailed examples, please see [USAGE.md](https://github.com/delighted/delighted-ruby/blob/master/USAGE.md).
7
8
 
8
9
  ## Supported Rubies
9
10
 
10
11
  - Ruby MRI (1.8.7+)
11
12
  - JRuby (1.8 + 1.9 modes)
12
- - RBX (1.8 + 1.9 modes)
13
+ - RBX (2.1.1)
13
14
  - REE (1.8.7-2012.02)
14
15
 
15
16
  ## Contributing
data/USAGE.md ADDED
@@ -0,0 +1,99 @@
1
+ ## Installation
2
+
3
+ Add `gem 'delighted'` to your application's Gemfile, and then run `bundle` to install.
4
+
5
+ ## Configuration
6
+
7
+ To get started, you need to configure the client with your secret API key. If you're using Rails, you should add the following to new initializer file in `config/initializers/delighted.rb`.
8
+
9
+ ```ruby
10
+ require 'delighted'
11
+ Delighted.api_key = 'YOUR_API_KEY'
12
+ ```
13
+
14
+ For further options, read the [advanced configuration section](#advanced-configuration).
15
+
16
+ **Note:** Your API key is secret, and you should treat it like a password. You can find your API key in your Delighted account, under *Settings* > *API*.
17
+
18
+ ## Usage
19
+
20
+ ### Adding/updating people and scheduling surveys
21
+
22
+ ```ruby
23
+ # Add a new person, and schedule a survey immediately
24
+ person1 = Delighted::Person.create(:email => "foo+testing1@delightedapp.com")
25
+
26
+ # Add a new person, and schedule a survey after 1 minute (60 seconds)
27
+ person2 = Delighted::Person.create(:email => "foo+testing2@delightedapp.com", :delay => 60)
28
+
29
+ # Add a new person, but do not schedule a survey
30
+ person3 = Delighted::Person.create(:email => "foo+testing3@delightedapp.com", :send => false)
31
+
32
+ # Add a new person with full set of attributes, including a custom question product name,
33
+ # and schedule a survey 30 seconds
34
+ person4 = Delighted::Person.create(:email => "foo+testing4@delightedapp.com", :name => "Joe Bloggs",
35
+ :properties => { :customer_id => 123, :country => "USA", :question_product_name => "Apple Genius Bar" },
36
+ :delay => 30)
37
+
38
+ # Update an existing person (identified by email), adding a name, without scheduling a survey
39
+ updated_person1 = Delighted::Person.create(:email => "foo+testing1@delightedapp.com",
40
+ :name => "James Scott", :send => false)
41
+ ```
42
+
43
+ ### Adding survey responses
44
+
45
+ ```ruby
46
+ # Add a survey response, score only
47
+ survey_response1 = Delighted::SurveyResponse.create(:person => person1.id, :score => 10)
48
+
49
+ # Add *another* survey response (for the same person), score and comment
50
+ survey_response2 = Delighted::SurveyResponse.create(:person => person1.id, :score => 5,
51
+ :comment => "Really nice.")
52
+ ```
53
+
54
+ ### Listing survey responses
55
+
56
+ ```ruby
57
+ # List all survey responses, 20 per page
58
+ survey_responses_page_1 = Delighted::SurveyResponse.all
59
+ survey_responses_page_2 = Delighted::SurveyResponse.all(:page => 2)
60
+
61
+ # List all survey responses, 100 per page, page 5, with a time range
62
+ filtered_survey_responses = Delighted::SurveyResponse.all(:page => 5, :per_page => 100,
63
+ :since => Time.utc(2013, 10, 01), :until => Time.utc(2013, 11, 01))
64
+ ```
65
+
66
+ ### Retrieving metrics
67
+
68
+ ```ruby
69
+ # Get current metrics, 30-day simple moving average, from most recent response
70
+ metrics = Delighted::Metrics.retrieve
71
+
72
+ # Get metrics, for given range
73
+ metrics = Delighted::Metrics.retrieve(:since => Time.utc(2013, 10, 01),
74
+ :until => Time.utc(2013, 11, 01))
75
+ ```
76
+
77
+ ## <a name="advanced-configuration"></a> Advanced configuration
78
+
79
+ The following options are configurable for the client:
80
+
81
+ ```ruby
82
+ Delighted.api_key
83
+ Delighted.api_base_url # default: 'https://api.delightedapp.com/v1'
84
+ Delighted.http_adapter # default: Delighted::HTTPAdapter.new
85
+ ```
86
+
87
+ By default, a shared instance of `Delighted::Client` is created lazily in `Delighted.shared_client`. If you want to create your own client, perhaps for testing or if you have multiple API keys, you can:
88
+
89
+ ```ruby
90
+ # Create an custom client instance, and pass as last argument to resource actions
91
+ client = Delighted::Client.new(:api_key => 'API_KEY',
92
+ :api_base_url => 'https://api.delightedapp.com/v1', :http_adapter => Delighted::HTTPAdapter.new)
93
+ metrics_from_custom_client = Delighted::Metrics.retrieve({}, client)
94
+
95
+ # Or, you can set Delighted.shared_client yourself
96
+ Delighed.shared_client = Delighted::Client.new(:api_key => 'API_KEY',
97
+ :api_base_url => 'https://api.delightedapp.com/v1', :http_adapter => Delighted::HTTPAdapter.new)
98
+ metrics_from_custom_shared_client = Delighted::Metrics.retrieve
99
+ ```
data/lib/delighted.rb CHANGED
@@ -5,6 +5,7 @@ require 'multi_json'
5
5
  require 'set'
6
6
  require 'thread'
7
7
 
8
+ require 'delighted/version'
8
9
  require 'delighted/utils'
9
10
  require 'delighted/json'
10
11
 
@@ -50,7 +50,8 @@ module Delighted
50
50
 
51
51
  def default_headers
52
52
  @default_headers ||= {
53
- 'Authorization' => "Basic #{["#{@api_key}:"].pack('m0')}"
53
+ 'Authorization' => "Basic #{["#{@api_key}:"].pack('m0')}",
54
+ 'User-Agent' => "Delighted RubyGem #{Delighted::VERSION}"
54
55
  }.freeze
55
56
  end
56
57
  end
@@ -1,3 +1,3 @@
1
1
  module Delighted
2
- VERSION = "1.0.0.beta2"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -10,7 +10,7 @@ end
10
10
  class Delighted::MetricsTest < Delighted::TestCase
11
11
  def test_retrieving_metrics
12
12
  uri = URI.parse("https://api.delightedapp.com/v1/metrics")
13
- headers = { 'Authorization' => "Basic #{["123abc:"].pack('m0')}", "Accept" => "application/json" }
13
+ headers = { 'Authorization' => "Basic #{["123abc:"].pack('m0')}", "Accept" => "application/json", 'User-Agent' => "Delighted RubyGem #{Delighted::VERSION}" }
14
14
  response = Delighted::HTTPResponse.new(200, {}, Delighted::JSON.dump({ :nps => 10 }))
15
15
  mock_http_adapter.expects(:request).with(:get, uri, headers).once.returns(response)
16
16
 
@@ -25,7 +25,7 @@ end
25
25
  class Delighted::PeopleTest < Delighted::TestCase
26
26
  def test_creating_or_updating_a_person
27
27
  uri = URI.parse("https://api.delightedapp.com/v1/people")
28
- headers = { 'Authorization' => "Basic #{["123abc:"].pack('m0')}", "Accept" => "application/json", 'Content-Type' => 'application/json' }
28
+ headers = { 'Authorization' => "Basic #{["123abc:"].pack('m0')}", "Accept" => "application/json", 'Content-Type' => 'application/json', 'User-Agent' => "Delighted RubyGem #{Delighted::VERSION}" }
29
29
  data = Delighted::JSON.dump({ :email => 'foo@bar.com' })
30
30
  response = Delighted::HTTPResponse.new(200, {}, Delighted::JSON.dump({ :id => '123', :email => 'foo@bar.com' }))
31
31
  mock_http_adapter.expects(:request).with(:post, uri, headers, data).once.returns(response)
@@ -41,7 +41,7 @@ end
41
41
  class Delighted::SurveyResponseTest < Delighted::TestCase
42
42
  def test_creating_a_survey_response
43
43
  uri = URI.parse("https://api.delightedapp.com/v1/survey_responses")
44
- headers = { 'Authorization' => "Basic #{["123abc:"].pack('m0')}", "Accept" => "application/json", 'Content-Type' => 'application/json' }
44
+ headers = { 'Authorization' => "Basic #{["123abc:"].pack('m0')}", "Accept" => "application/json", 'Content-Type' => 'application/json', 'User-Agent' => "Delighted RubyGem #{Delighted::VERSION}" }
45
45
  data = Delighted::JSON.dump({ :person => '123', :score => 10 })
46
46
  response = Delighted::HTTPResponse.new(200, {}, Delighted::JSON.dump({ :id => '456', :person => '123', :score => 10 }))
47
47
  mock_http_adapter.expects(:request).with(:post, uri, headers, data).once.returns(response)
@@ -56,7 +56,7 @@ class Delighted::SurveyResponseTest < Delighted::TestCase
56
56
 
57
57
  def test_listing_all_survey_responses
58
58
  uri = URI.parse("https://api.delightedapp.com/v1/survey_responses")
59
- headers = { 'Authorization' => "Basic #{["123abc:"].pack('m0')}", "Accept" => "application/json" }
59
+ headers = { 'Authorization' => "Basic #{["123abc:"].pack('m0')}", "Accept" => "application/json", 'User-Agent' => "Delighted RubyGem #{Delighted::VERSION}" }
60
60
  response = Delighted::HTTPResponse.new(200, {}, Delighted::JSON.dump([{ :id => '123', :comment => 'One' }, { :id => '456', :comment => 'Two' }]))
61
61
  mock_http_adapter.expects(:request).with(:get, uri, headers).once.returns(response)
62
62
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delighted
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Dodwell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-12 00:00:00.000000000 Z
11
+ date: 2013-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -79,6 +79,7 @@ files:
79
79
  - LICENSE
80
80
  - README.md
81
81
  - Rakefile
82
+ - USAGE.md
82
83
  - delighted.gemspec
83
84
  - lib/delighted.rb
84
85
  - lib/delighted/client.rb
@@ -113,12 +114,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
114
  version: '0'
114
115
  required_rubygems_version: !ruby/object:Gem::Requirement
115
116
  requirements:
116
- - - '>'
117
+ - - '>='
117
118
  - !ruby/object:Gem::Version
118
- version: 1.3.1
119
+ version: '0'
119
120
  requirements: []
120
121
  rubyforge_project:
121
- rubygems_version: 2.0.3
122
+ rubygems_version: 2.1.11
122
123
  signing_key:
123
124
  specification_version: 4
124
125
  summary: Delighted is the easiest and most beautiful way to measure customer happiness.