delighted 1.0.0 → 1.1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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.