delighted 1.0.0 → 1.1.0.rc1

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: fbd30413c6cbb1ddf012ba06c1e4360d14f4713e
4
- data.tar.gz: c936317dfc07e80425b559384aeef161c98ea364
3
+ metadata.gz: 6a734458d846278f7d93ca179a4e6adda072a68b
4
+ data.tar.gz: bbd3579c8ee5de44970a7d95e68fcd9f6e529ee4
5
5
  SHA512:
6
- metadata.gz: d2318fd1929ee0e18781c50a98758af693fffa390b39511aa7a6522cb50df751de823d418c541ecd06f09c1a648a1c3aae714aa155a91c028db4bf0289f264ad
7
- data.tar.gz: 7980888bf830ed0777ff63d6bc56a7a304caa7a9c2028792ba1c2b2c9edbf06792f7540b99893975d7673f08e901d97058fb298758e58c5f298ba96544a4a89d
6
+ metadata.gz: 03576120d48a582bfaf41a3bbbdfa188a619a5985fc03b9fcb86209d43ea5cc36badd39167b3f501a6fb042b76bc241215535be683cd81b895238862fab6eb65
7
+ data.tar.gz: 161a69baca6102cb630acd1bc45524a47cf35ac41b800ee6a608455d2e3e9cba5f2b3792a29d05edbec081486ca4ffb19d0b7046ef247fb85931fd836da9f4ea
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ ## 1.1.0.rc1 (2014-01-12)
2
+
3
+ Features:
4
+
5
+ - Add support for cancelling pending survey requests
6
+
7
+ ## 1.0.0 (2013-12-13)
data/USAGE.md CHANGED
@@ -30,7 +30,7 @@ person2 = Delighted::Person.create(:email => "foo+testing2@delightedapp.com", :d
30
30
  person3 = Delighted::Person.create(:email => "foo+testing3@delightedapp.com", :send => false)
31
31
 
32
32
  # Add a new person with full set of attributes, including a custom question product name,
33
- # and schedule a survey 30 seconds
33
+ # and schedule a survey with a 30 second delay
34
34
  person4 = Delighted::Person.create(:email => "foo+testing4@delightedapp.com", :name => "Joe Bloggs",
35
35
  :properties => { :customer_id => 123, :country => "USA", :question_product_name => "Apple Genius Bar" },
36
36
  :delay => 30)
@@ -40,6 +40,13 @@ updated_person1 = Delighted::Person.create(:email => "foo+testing1@delightedapp.
40
40
  :name => "James Scott", :send => false)
41
41
  ```
42
42
 
43
+ ### Deleting pending survey requests
44
+
45
+ ```ruby
46
+ # Delete all pending (scheduled but unsent) survey requests for a person, by email.
47
+ Delighted::SurveyRequest.delete_pending(:email => "foo+testing1@delightedapp.com")
48
+ ```
49
+
43
50
  ### Adding survey responses
44
51
 
45
52
  ```ruby
@@ -93,7 +100,7 @@ client = Delighted::Client.new(:api_key => 'API_KEY',
93
100
  metrics_from_custom_client = Delighted::Metrics.retrieve({}, client)
94
101
 
95
102
  # Or, you can set Delighted.shared_client yourself
96
- Delighed.shared_client = Delighted::Client.new(:api_key => 'API_KEY',
103
+ Delighted.shared_client = Delighted::Client.new(:api_key => 'API_KEY',
97
104
  :api_base_url => 'https://api.delightedapp.com/v1', :http_adapter => Delighted::HTTPAdapter.new)
98
105
  metrics_from_custom_shared_client = Delighted::Metrics.retrieve
99
106
  ```
data/lib/delighted.rb CHANGED
@@ -17,7 +17,8 @@ require 'delighted/operations/retrieve'
17
17
 
18
18
  require 'delighted/resources/metrics'
19
19
  require 'delighted/resources/person'
20
- require 'delighted/resources/survey_responses'
20
+ require 'delighted/resources/survey_request'
21
+ require 'delighted/resources/survey_response'
21
22
 
22
23
  require 'delighted/errors'
23
24
  require 'delighted/http_response'
@@ -29,6 +29,16 @@ module Delighted
29
29
  handle_json_response(response)
30
30
  end
31
31
 
32
+ def delete_json(path, params = {})
33
+ headers = default_headers.dup.merge('Accept' => 'application/json', 'Content-Type' => 'application/json')
34
+
35
+ uri = URI.parse(File.join(@api_base_url, path))
36
+ data = JSON.dump(params) unless params.empty?
37
+
38
+ response = @http_adapter.request(:delete, uri, headers, data)
39
+ handle_json_response(response)
40
+ end
41
+
32
42
  private
33
43
 
34
44
  def handle_json_response(response)
@@ -3,6 +3,7 @@ module Delighted
3
3
  REQUEST_CLASSES = {
4
4
  :get => Net::HTTP::Get,
5
5
  :post => Net::HTTP::Post,
6
+ :delete => Net::HTTP::Delete
6
7
  }
7
8
 
8
9
  def request(method, uri, headers = {}, data = nil)
@@ -0,0 +1,13 @@
1
+ module Delighted
2
+ class SurveyRequest < Resource
3
+ self.path = "/people/{PERSON_EMAIL}/survey_requests"
4
+
5
+ def self.delete_pending(attributes = {}, client = Delighted.shared_client)
6
+ raise ArgumentError, "You must pass :person_email" unless attributes[:person_email]
7
+ interpolated_path = path.sub("{PERSON_EMAIL}", CGI.escape(attributes[:person_email]))
8
+ interpolated_path << "/pending"
9
+ json = client.delete_json(interpolated_path)
10
+ json
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module Delighted
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0.rc1"
3
3
  end
@@ -36,6 +36,17 @@ class Delighted::PeopleTest < Delighted::TestCase
36
36
  assert_equal 'foo@bar.com', person.email
37
37
  assert_equal '123', person.id
38
38
  end
39
+
40
+ def test_deleting_pending_survey_requests_for_a_person
41
+ uri = URI.parse("https://api.delightedapp.com/v1/people/foo%40bar.com/survey_requests/pending")
42
+ headers = { 'Authorization' => "Basic #{["123abc:"].pack('m0')}", "Accept" => "application/json", 'Content-Type' => 'application/json', 'User-Agent' => "Delighted RubyGem #{Delighted::VERSION}" }
43
+ response = Delighted::HTTPResponse.new(200, {}, Delighted::JSON.dump({ :ok => true }))
44
+ mock_http_adapter.expects(:request).with(:delete, uri, headers, nil).once.returns(response)
45
+
46
+ result = Delighted::SurveyRequest.delete_pending(:person_email => "foo@bar.com")
47
+ assert_kind_of Hash, result
48
+ assert_equal({ :ok => true }, result)
49
+ end
39
50
  end
40
51
 
41
52
  class Delighted::SurveyResponseTest < Delighted::TestCase
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
4
+ version: 1.1.0.rc1
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-12-14 00:00:00.000000000 Z
11
+ date: 2014-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -75,6 +75,7 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - .gitignore
77
77
  - .travis.yml
78
+ - CHANGELOG.md
78
79
  - Gemfile
79
80
  - LICENSE
80
81
  - README.md
@@ -94,7 +95,8 @@ files:
94
95
  - lib/delighted/resource.rb
95
96
  - lib/delighted/resources/metrics.rb
96
97
  - lib/delighted/resources/person.rb
97
- - lib/delighted/resources/survey_responses.rb
98
+ - lib/delighted/resources/survey_request.rb
99
+ - lib/delighted/resources/survey_response.rb
98
100
  - lib/delighted/utils.rb
99
101
  - lib/delighted/version.rb
100
102
  - test/delighted_test.rb
@@ -114,12 +116,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
116
  version: '0'
115
117
  required_rubygems_version: !ruby/object:Gem::Requirement
116
118
  requirements:
117
- - - '>='
119
+ - - '>'
118
120
  - !ruby/object:Gem::Version
119
- version: '0'
121
+ version: 1.3.1
120
122
  requirements: []
121
123
  rubyforge_project:
122
- rubygems_version: 2.1.11
124
+ rubygems_version: 2.2.2
123
125
  signing_key:
124
126
  specification_version: 4
125
127
  summary: Delighted is the easiest and most beautiful way to measure customer happiness.