usabilla_api 1.1.2 → 2.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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/README.md +42 -15
  4. data/lib/usabilla_api/clients/apps/app.rb +18 -0
  5. data/lib/usabilla_api/clients/apps/feedback.rb +18 -0
  6. data/lib/usabilla_api/clients/email/button.rb +18 -0
  7. data/lib/usabilla_api/clients/email/feedback.rb +18 -0
  8. data/lib/usabilla_api/clients/websites/button.rb +18 -0
  9. data/lib/usabilla_api/clients/websites/campaign.rb +18 -0
  10. data/lib/usabilla_api/clients/websites/campaign_results.rb +18 -0
  11. data/lib/usabilla_api/clients/websites/campaign_stats.rb +18 -0
  12. data/lib/usabilla_api/clients/websites/feedback.rb +18 -0
  13. data/lib/usabilla_api/config.rb +15 -5
  14. data/lib/usabilla_api/convenience.rb +32 -4
  15. data/lib/usabilla_api/models/apps/app/item.rb +19 -0
  16. data/lib/usabilla_api/models/apps/feedback/data.rb +20 -0
  17. data/lib/usabilla_api/models/apps/feedback/geo_location.rb +20 -0
  18. data/lib/usabilla_api/models/apps/feedback/item.rb +51 -0
  19. data/lib/usabilla_api/models/email/button/groups.rb +18 -0
  20. data/lib/usabilla_api/models/email/button/item.rb +26 -0
  21. data/lib/usabilla_api/models/email/feedback/item.rb +29 -0
  22. data/lib/usabilla_api/models/websites/button/item.rb +16 -0
  23. data/lib/usabilla_api/models/websites/campaign/item.rb +22 -0
  24. data/lib/usabilla_api/models/websites/campaign/results/item.rb +27 -0
  25. data/lib/usabilla_api/models/websites/campaign/stats/item.rb +21 -0
  26. data/lib/usabilla_api/models/websites/feedback/item.rb +30 -0
  27. data/lib/usabilla_api/usabilla_api.rb +14 -30
  28. data/lib/usabilla_api/version.rb +1 -1
  29. metadata +23 -9
  30. data/lib/usabilla_api/clients/button.rb +0 -23
  31. data/lib/usabilla_api/clients/campaign.rb +0 -23
  32. data/lib/usabilla_api/models/button/item.rb +0 -15
  33. data/lib/usabilla_api/models/campaign/item.rb +0 -24
  34. data/lib/usabilla_api/models/campaign/statistics.rb +0 -17
  35. data/lib/usabilla_api/models/campaign_results/item.rb +0 -22
  36. data/lib/usabilla_api/models/feedback/item.rb +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b66214b5c6c7b4487f79a3cc60e5e7d5f586aa5
4
- data.tar.gz: 3877f1cc54cc0ff5d6c26b89f83eaae54adbdc84
3
+ metadata.gz: bde5c38e7ba0c323dc9c9fa86dc028cc323b4b91
4
+ data.tar.gz: 5ceeebaaf4ecc546668e0c6f0fdee23e54689751
5
5
  SHA512:
6
- metadata.gz: 54d8d0c1dfbb4536f785c47fc44b117bde9290202ab0b4a5c70343b70c38f916afe3cdc739e44fb7f601993ce4a4e215adfbdf1cd25a1fc066d558311d45cd6b
7
- data.tar.gz: b03657d1f988807d8d1dfc22f98d09253dc57db71bed5e1c67bae03b220f80188f9358de64df3ac217b2c6a8e73d81d5620bc5a0544270b1a82125d07261c68a
6
+ metadata.gz: 14fee46edeeab42102c890c83a21f9d61c9ebe4abd467a71543e320d5ecb58123698b1572d93cc366749668e4aa5a51bd65e46597a010303edd80df41517953a
7
+ data.tar.gz: 4239637014011666c17737ab136e75fbb133d143f03205372822c94a2d8dd0ef8eba507193c4f2e7fdf68108ff3acb55f16ce9c94518358862f350084b62c947
@@ -3,6 +3,9 @@ Version History
3
3
  * All version update notes will be included here.
4
4
  ----
5
5
 
6
+ * **2.0.0** Update to new Usabilla API Version(1.1.0). This includes a full refactor and integration change to the way requests will be made. Please consult the Readme
7
+ for more detailed information.
8
+ * **1.1.2** Add Days Ago filter for 'days_ago' parameter to assist with generating a 'since' timestamp.
6
9
  * **1.1.1** Clean up JSON.parse.
7
10
  * **1.1.0** Removed json response flag as it is unnecessary for Rails/Sinatra integration. Simply adding .to_json on a proper json respond_to will yield the same results.
8
11
  * **1.0.1** Adjust Query String for proper routing.
data/README.md CHANGED
@@ -27,28 +27,53 @@ Full Usabilla API documentation: [Usabilla API](https://usabilla.com/api)
27
27
  Simply add one of the following;
28
28
  (params = url query paramaters)
29
29
 
30
- To get the **buttons** api response
30
+ ####Apps API Requests
31
+ **App**
31
32
  ```
32
- UsabillaApi.button.retrieve(params)
33
+ UsabillaApi.apps_app.retrieve(params)
33
34
  ```
34
- To get the **buttons feedback** items api response
35
+ **Feedback**
35
36
  ```
36
- UsabillaApi.button.feedback(params)
37
+ UsabillaApi.apps_feedback.retrieve(params)
37
38
  ```
38
- To get the **campaign** api response
39
+
40
+ ####Email API Requests
41
+ **Buttons**
42
+ ```
43
+ UsabillaApi.email_button.retrieve(params)
44
+ ```
45
+ **Feedback**
46
+ ```
47
+ UsabillaApi.email_feedback.retrieve(params)
48
+ ```
49
+
50
+ #### Websites API Requests
51
+ **Buttons**
52
+ ```
53
+ UsabillaApi.websites_button.retrieve(params)
39
54
  ```
40
- UsabillaApi.campaign.retrieve(params)
55
+ **Feedback**
41
56
  ```
42
- To get the **campaign results** api response
57
+ UsabillaApi.websites_feedback.retrieve(params)
43
58
  ```
44
- UsabillaApi.campaign.results(params)
59
+ **Campaign**
60
+ ```
61
+ UsabillaApi.websites_campaign.retrieve(params)
62
+ ```
63
+ **Campaign Results**
64
+ ```
65
+ UsabillaApi.websites_campaign_results.retrieve(params)
66
+ ```
67
+ **Campaign Statistics**
68
+ ```
69
+ UsabillaApi.websites_campaign_stats.retrieve(params)
45
70
  ```
46
71
 
47
72
  ######Example
48
73
  ```
49
74
  # Controller /button_controller.rb
50
75
  def show
51
- @buttons = UsabillaApi.button(params)
76
+ @buttons = UsabillaApi.websites_button.retrieve(params)
52
77
  end
53
78
  ```
54
79
  ```
@@ -65,15 +90,18 @@ end
65
90
 
66
91
  Usabilla excepts the following query string parameters as values;
67
92
 
68
- Returns the requested subset.
93
+ Returns the requested subset limit.
69
94
  ```
70
95
  ?limit=
71
96
  ```
72
- Returns the requested subset.
97
+ Returns the requested subset since Unix Timestamps In Milliseconds.
73
98
  ```
74
99
  ?since=
75
100
  ```
76
- Note: Only accepts Unix Timestamps
101
+ Returns the requested subset of the days since this amount. (Overrides 'since' param)
102
+ ```
103
+ ?days_ago=
104
+ ```
77
105
 
78
106
  #Contributing
79
107
  Feel free to fork or branch and create pull requests with any changes or cool additions!
@@ -82,7 +110,6 @@ Be sure to test any changes and include them in the pull request in order for it
82
110
  Thanks!
83
111
 
84
112
 
85
- ######TODO
86
- * Refactoring
113
+ ######Updates
87
114
 
88
- *isn't this always the case though?* ~_^
115
+ Please refer to the [Changelog](https://github.com/JMolinaro/usabilla_api/blob/master/CHANGELOG.md) for update information.
@@ -0,0 +1,18 @@
1
+ module UsabillaApi
2
+ module Clients
3
+ module Apps
4
+ class App
5
+ class << self
6
+
7
+ def retrieve(params)
8
+ request = UsabillaApi.api_client.new(params).request(UsabillaApi.configuration.uri_apps_app)
9
+ response = UsabillaApi.response.new(request)
10
+ response.items = response.items.map {|item| UsabillaApi::Models::Apps::App::Item.new(item)} unless response.items.nil?
11
+ response
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module UsabillaApi
2
+ module Clients
3
+ module Apps
4
+ class Feedback
5
+ class << self
6
+
7
+ def retrieve(params)
8
+ request = UsabillaApi.api_client.new(params).request(UsabillaApi.configuration.uri_apps_feedback, true)
9
+ response = UsabillaApi.response.new(request)
10
+ response.items = response.items.map {|item| UsabillaApi::Models::Apps::Feedback::Item.new(item)} unless response.items.nil?
11
+ response
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module UsabillaApi
2
+ module Clients
3
+ module Email
4
+ class Button
5
+ class << self
6
+
7
+ def retrieve(params)
8
+ request = UsabillaApi.api_client.new(params).request(UsabillaApi.configuration.uri_email_button)
9
+ response = UsabillaApi.response.new(request)
10
+ response.items = response.items.map {|item| UsabillaApi::Models::Email::Button::Item.new(item)} unless response.items.nil?
11
+ response
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module UsabillaApi
2
+ module Clients
3
+ module Email
4
+ class Feedback
5
+ class << self
6
+
7
+ def retrieve(params)
8
+ request = UsabillaApi.api_client.new(params).request(UsabillaApi.configuration.uri_email_feedback, true)
9
+ response = UsabillaApi.response.new(request)
10
+ response.items = response.items.map {|item| UsabillaApi::Models::Email::Feedback::Item.new(item)} unless response.items.nil?
11
+ response
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module UsabillaApi
2
+ module Clients
3
+ module Websites
4
+ class Button
5
+ class << self
6
+
7
+ def retrieve(params)
8
+ request = UsabillaApi.api_client.new(params).request(UsabillaApi.configuration.uri_websites_button)
9
+ response = UsabillaApi.response.new(request)
10
+ response.items = response.items.map {|item| UsabillaApi::Models::Websites::Button::Item.new(item) } unless response.items.nil?
11
+ response
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module UsabillaApi
2
+ module Clients
3
+ module Websites
4
+ class Campaign
5
+ class << self
6
+
7
+ def retrieve(params)
8
+ request = UsabillaApi.api_client.new(params).request(UsabillaApi.configuration.uri_websites_campaign)
9
+ response = UsabillaApi.response.new(request)
10
+ response.items = response.items.map {|item| UsabillaApi::Models::Websites::Campaign::Item.new(item)} unless response.items.nil?
11
+ response
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module UsabillaApi
2
+ module Clients
3
+ module Websites
4
+ class CampaignResults
5
+ class << self
6
+
7
+ def retrieve(params)
8
+ request = UsabillaApi.api_client.new(params).request(UsabillaApi.configuration.uri_websites_campaign_results, true)
9
+ response = UsabillaApi.response.new(request)
10
+ response.items = response.items.map {|item| UsabillaApi::Models::Websites::Campaign::Results::Item.new(item)} unless response.items.nil?
11
+ response
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module UsabillaApi
2
+ module Clients
3
+ module Websites
4
+ class CampaignStats
5
+ class << self
6
+
7
+ def retrieve(params)
8
+ request = UsabillaApi.api_client.new(params).request(UsabillaApi.configuration.uri_websites_campaign_stats, true)
9
+ response = UsabillaApi.response.new(request)
10
+ response.items = response.items.map {|item| UsabillaApi::Models::Websites::Campaign::Stats::Item.new(item)} unless response.items.nil?
11
+ response
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module UsabillaApi
2
+ module Clients
3
+ module Websites
4
+ class Feedback
5
+ class << self
6
+
7
+ def retrieve(params)
8
+ request = UsabillaApi.api_client.new(params).request(UsabillaApi.configuration.uri_websites_feedback, true)
9
+ response = UsabillaApi.response.new(request)
10
+ response.items = response.items.map {|item| UsabillaApi::Models::Websites::Feedback::Item.new(item)} unless response.items.nil?
11
+ response
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -18,7 +18,7 @@ module UsabillaApi
18
18
  @http_method = 'GET'
19
19
  @host_protocol = 'https://'
20
20
  @host = 'data.usabilla.com'
21
- @base_scope = '/live/website'
21
+ @base_scope = '/live'
22
22
  @base_uri = @host_protocol + @host + @base_scope
23
23
  set_default_api_uris
24
24
  set_attr_accessors
@@ -28,10 +28,20 @@ module UsabillaApi
28
28
  #################################################################
29
29
 
30
30
  def set_default_api_uris
31
- @uri_button ||= '/button'
32
- @uri_feedback_items ||= '/button/:id/feedback'
33
- @uri_campaign ||= '/campaign'
34
- @uri_campaign_results ||= '/campaign/:id/results'
31
+ # Apps
32
+ @uri_apps_app ||= '/apps'
33
+ @uri_apps_feedback ||= '/apps/:id/feedback'
34
+
35
+ # Email
36
+ @uri_email_button ||= '/email/button'
37
+ @uri_email_feedback ||= '/email/button/:id/feedback'
38
+
39
+ # Website
40
+ @uri_websites_button ||= '/websites/button'
41
+ @uri_websites_feedback ||= '/websites/button/:id/feedback'
42
+ @uri_websites_campaign ||= '/websites/campaign'
43
+ @uri_websites_campaign_results ||= '/websites/campaign/:id/results'
44
+ @uri_websites_campaign_stats ||= '/websites/campaign/:id/stats'
35
45
  end
36
46
 
37
47
  def set_attr_accessors
@@ -10,12 +10,40 @@ module UsabillaApi
10
10
  UsabillaApi::Models::Response
11
11
  end
12
12
 
13
- def button
14
- UsabillaApi::Clients::Button
13
+ def apps_app
14
+ UsabillaApi::Clients::Apps::App
15
15
  end
16
16
 
17
- def campaign
18
- UsabillaApi::Clients::Campaign
17
+ def apps_feedback
18
+ UsabillaApi::Clients::Apps::Feedback
19
+ end
20
+
21
+ def email_button
22
+ UsabillaApi::Clients::Email::Button
23
+ end
24
+
25
+ def email_feedback
26
+ UsabillaApi::Clients::Email::Feedback
27
+ end
28
+
29
+ def websites_button
30
+ UsabillaApi::Clients::Websites::Button
31
+ end
32
+
33
+ def websites_feedback
34
+ UsabillaApi::Clients::Websites::Feedback
35
+ end
36
+
37
+ def websites_campaign
38
+ UsabillaApi::Clients::Websites::Campaign
39
+ end
40
+
41
+ def websites_campaign_results
42
+ UsabillaApi::Clients::Websites::CampaignResults
43
+ end
44
+
45
+ def websites_campaign_stats
46
+ UsabillaApi::Clients::Websites::CampaignStats
19
47
  end
20
48
 
21
49
  end
@@ -0,0 +1,19 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Apps
4
+ module App
5
+ class Item
6
+ attr_accessor :id, :name, :date, :status
7
+
8
+ def initialize(args = {})
9
+ @id = args['id'] || ''
10
+ @name = args['name'] || ''
11
+ @date = args['date'] || ''
12
+ @status = args['status'] || ''
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Apps
4
+ module Feedback
5
+ class Data
6
+ attr_accessor :name, :nps, :rating, :speed, :subject
7
+
8
+ def initialize(args = {})
9
+ @name = args['name'] || ''
10
+ @nps = args['nps'] || nil
11
+ @rating = args['rating'] || nil
12
+ @speed = args['speed'] || nil
13
+ @subject = args['subject'] || ''
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Apps
4
+ module Feedback
5
+ class GeoLocation
6
+ attr_accessor :city, :country, :lat, :lon, :region
7
+
8
+ def initialize(args = {})
9
+ @city = args['city'] || ''
10
+ @country = args['country'] || ''
11
+ @lat = args['lat'] || nil
12
+ @lon = args['lon'] || nil
13
+ @region = args['region'] || ''
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,51 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Apps
4
+ module Feedback
5
+ class Item
6
+ attr_accessor :id, :date, :timestamp, :device_name, :data, :custom, :app_id, :app_name, :app_version, :os_name,
7
+ :os_version, :location, :geo_location, :free_memory, :total_memory, :free_storage, :total_storage,
8
+ :screenshot, :screensize, :connection, :ip_address, :language, :orientation, :battery_level, :rooted
9
+
10
+ def initialize(args = {})
11
+ @id = args['id'] || ''
12
+ @date = args['date'] || ''
13
+ @timestamp = args['timestamp'] || ''
14
+ @device_name = args['deviceName'] || ''
15
+ @data = add_data(args['data']) || []
16
+ @custom = args['custom'] || []
17
+ @app_id = args['appId'] || ''
18
+ @app_name = args['appName'] || ''
19
+ @app_version = args['appVersion'] || ''
20
+ @os_name = args['osName'] || ''
21
+ @os_version = args['osVersion'] || ''
22
+ @location = args['location'] || ''
23
+ @geo_location = add_geo_location(args['geoLocation']) || []
24
+ @free_memory = args['freeMemory'] || nil
25
+ @total_memory = args['totalMemory'] || nil
26
+ @free_storage = args['freeStorage'] || nil
27
+ @total_storage = args['totalStorage'] || nil
28
+ @screenshot = args['screenshot'] || ''
29
+ @screensize = args['screensize'] || ''
30
+ @connection = args['connection'] || ''
31
+ @ip_address = args['ipAddress'] || ''
32
+ @language = args['language'] || ''
33
+ @orientation = args['orientation'] || ''
34
+ @battery_level = args['batteryLevel'] || nil
35
+ @rooted = args['rooted'] || false
36
+ end
37
+
38
+ private
39
+
40
+ def add_data(hash)
41
+ hash.map{ |group| UsabillaApi::Models::Apps::Feedback::Data.new(group) } unless hash.nil?
42
+ end
43
+ def add_geo_location(hash)
44
+ hash.map{ |group| UsabillaApi::Models::Apps::Feedback::GeoLocation.new(group) } unless hash.nil?
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,18 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Email
4
+ module Button
5
+ class Groups
6
+ attr_accessor :id, :active, :date, :name
7
+
8
+ def initialize(args = {})
9
+ @id = args['id'] || ''
10
+ @active = args['active'] || false
11
+ @date = args['date'] || ''
12
+ @name = args['name'] || ''
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Email
4
+ module Button
5
+ class Item
6
+ attr_accessor :id, :date, :groups, :intro_text, :locale, :name
7
+
8
+ def initialize(args = {})
9
+ @id = args['id'] || ''
10
+ @date = args['date'] || ''
11
+ @groups = add_groups(args['groups']) || {}
12
+ @intro_text = args['introText'] || ''
13
+ @locale = args['locale'] || ''
14
+ @name = args['name'] || ''
15
+ end
16
+
17
+ private
18
+
19
+ def add_groups(hash)
20
+ hash.map{ |group| UsabillaApi::Models::Email::Button::Groups.new(group) } unless hash.nil?
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,29 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Email
4
+ module Feedback
5
+ class Item
6
+ attr_accessor :id, :user_agent, :comment, :location, :date, :custom, :email, :labels, :nps,
7
+ :public_url, :rating, :button_id, :tags, :url
8
+
9
+ def initialize(args = {})
10
+ @id = args['id'] || ''
11
+ @user_agent = args['userAgent'] || ''
12
+ @comment = args['comment'] || ''
13
+ @location = args['location'] || ''
14
+ @date = args['date'] || nil
15
+ @custom = args['custom'] || []
16
+ @email = args['email'] || ''
17
+ @labels = args['labels'] || []
18
+ @nps = args['nps'] || nil
19
+ @public_url = args['publicUrl'] || ''
20
+ @rating = args['rating'] || nil
21
+ @button_id = args['buttonId'] || ''
22
+ @tags = args['tags'] || []
23
+ @url = args['url'] || ''
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,16 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Websites
4
+ module Button
5
+ class Item
6
+ attr_accessor :id, :name
7
+
8
+ def initialize(args = {})
9
+ @id = args['id'] || ''
10
+ @name = args['name'] || ''
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Websites
4
+ module Campaign
5
+ class Item
6
+ attr_accessor :id, :date, :button_id, :analytics_id, :status, :name, :type
7
+
8
+ def initialize(args = {})
9
+ @id = args['id'] || ''
10
+ @date = args['date'] || ''
11
+ @button_id = args['buttonId'] || ''
12
+ @analytics_id = args['analyticsId'] || ''
13
+ @status = args['status'] || ''
14
+ @name = args['name'] || ''
15
+ @type = args['type'] || ''
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,27 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Websites
4
+ module Campaign
5
+ module Results
6
+ class Item
7
+ attr_accessor :id, :user_agent, :location, :date, :campaign_id, :custom, :data, :url, :time
8
+
9
+ def initialize(args = {})
10
+ @id = args['id'] || ''
11
+ @user_agent = args['userAgent'] || ''
12
+ @location = args['location'] || ''
13
+ @date = args['date'] || ''
14
+ @campaign_id = args['campaignId'] || ''
15
+ @custom = args['custom'] || []
16
+ @data = args['data'] || []
17
+ @url = args['url'] || ''
18
+ @time = args['time'] || nil
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Websites
4
+ module Campaign
5
+ module Stats
6
+ class Item
7
+ attr_accessor :id, :completed, :conversion, :views
8
+
9
+ def initialize(args = {})
10
+ @id = args['id'] || ''
11
+ @completed = args['completed'] || nil
12
+ @conversion = args['conversion'] || nil
13
+ @views = args['views'] || nil
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ module UsabillaApi
2
+ module Models
3
+ module Websites
4
+ module Feedback
5
+ class Item
6
+ attr_accessor :id, :user_agent, :comment, :location, :date, :custom, :email, :image, :labels, :nps, :public_url, :rating, :button_id, :tags, :url
7
+
8
+ def initialize(args = {})
9
+ @id = args['id'] || ''
10
+ @user_agent = args['userAgent'] || ''
11
+ @comment = args['comment'] || ''
12
+ @location = args['location'] || ''
13
+ @date = args['date'] || ''
14
+ @custom = args['custom'] || {}
15
+ @email = args['email'] || ''
16
+ @image = args['image'] || ''
17
+ @labels = args['labels'] || []
18
+ @nps = args['nps'] || nil
19
+ @public_url = args['publicUrl'] || []
20
+ @rating = args['rating'] || ''
21
+ @button_id = args['buttonId'] || nil
22
+ @tags = args['tags'] || []
23
+ @url = args['url'] || ''
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -21,39 +21,21 @@ module UsabillaApi
21
21
  @query_days_ago = params['days_ago'] || nil
22
22
  end
23
23
 
24
- def get_buttons
25
- send_signed_request(UsabillaApi.configuration.uri_button)
26
- end
27
-
28
- def get_feedback_items
29
- if @query_id.nil? || @query_id.empty?
30
- raise 'Invalid Button ID'
31
- end
32
- uri = sub_query_id(UsabillaApi.configuration.uri_feedback_items)
33
- send_signed_request(uri)
34
- end
35
-
36
- def get_campaigns
37
- send_signed_request(UsabillaApi.configuration.uri_campaign)
38
- end
39
-
40
- def get_campaign_results
41
- if @query_id.nil? || @query_id.empty?
42
- raise 'Invalid Campaign ID'
43
- end
44
- uri = sub_query_id(UsabillaApi.configuration.uri_campaign_results)
45
-
46
- send_signed_request(uri)
47
- end
48
-
49
- private
50
-
51
- def send_signed_request(uri)
24
+ def request(uri, require_id=false)
25
+ base_uri = uri
52
26
 
53
27
  if @access_key.nil? || @secret_key.nil?
54
28
  raise 'The Access Key or Secret Key supplied is invalid.'
55
29
  end
56
30
 
31
+ if require_id
32
+ if @query_id.nil? || @query_id.empty?
33
+ raise 'Invalid ID Parameter'
34
+ else
35
+ base_uri = sub_query_id(uri)
36
+ end
37
+ end
38
+
57
39
  t = DateTime.now
58
40
  usbldate = t.strftime('%a, %d %b %Y %H:%M:%S GMT')
59
41
  datestamp = t.strftime('%Y%m%d') # Date w/o time, used in credential scope
@@ -64,7 +46,7 @@ module UsabillaApi
64
46
  signed_headers = 'date;host'
65
47
  payload_hash = OpenSSL::Digest::SHA256.new.hexdigest
66
48
 
67
- canonical_request = "#{@http_method}\n#{@base_scope + uri}\n#{query_string}\n#{canonical_headers}\n#{signed_headers}\n#{payload_hash}"
49
+ canonical_request = "#{@http_method}\n#{@base_scope + base_uri}\n#{query_string}\n#{canonical_headers}\n#{signed_headers}\n#{payload_hash}"
68
50
 
69
51
  canonical_request_digest = OpenSSL::Digest::SHA256.new(canonical_request).hexdigest
70
52
  algorithm = 'USBL1-HMAC-SHA256'
@@ -79,7 +61,7 @@ module UsabillaApi
79
61
  headers = {'date' => usbldate, 'Authorization' => authorization_header}
80
62
 
81
63
  # Send the request.
82
- request_url = uri + '?' + query_string
64
+ request_url = base_uri + '?' + query_string
83
65
  response = JSON.parse(RestClient.get(UsabillaApi.configuration.base_uri + request_url, headers))
84
66
 
85
67
  # Return Response
@@ -87,6 +69,8 @@ module UsabillaApi
87
69
 
88
70
  end
89
71
 
72
+ private
73
+
90
74
  def get_signature_key(key, long_date)
91
75
  k_date = OpenSSL::HMAC.digest('sha256', 'USBL1' + key, long_date)
92
76
  k_signing = OpenSSL::HMAC.digest('sha256', k_date, 'usbl1_request')
@@ -1,3 +1,3 @@
1
1
  module UsabillaApi
2
- VERSION = '1.1.2'
2
+ VERSION = '2.0.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usabilla_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Molinaro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-05 00:00:00.000000000 Z
11
+ date: 2015-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -148,16 +148,30 @@ files:
148
148
  - CHANGELOG.md
149
149
  - README.md
150
150
  - lib/usabilla_api.rb
151
- - lib/usabilla_api/clients/button.rb
152
- - lib/usabilla_api/clients/campaign.rb
151
+ - lib/usabilla_api/clients/apps/app.rb
152
+ - lib/usabilla_api/clients/apps/feedback.rb
153
+ - lib/usabilla_api/clients/email/button.rb
154
+ - lib/usabilla_api/clients/email/feedback.rb
155
+ - lib/usabilla_api/clients/websites/button.rb
156
+ - lib/usabilla_api/clients/websites/campaign.rb
157
+ - lib/usabilla_api/clients/websites/campaign_results.rb
158
+ - lib/usabilla_api/clients/websites/campaign_stats.rb
159
+ - lib/usabilla_api/clients/websites/feedback.rb
153
160
  - lib/usabilla_api/config.rb
154
161
  - lib/usabilla_api/convenience.rb
155
- - lib/usabilla_api/models/button/item.rb
156
- - lib/usabilla_api/models/campaign/item.rb
157
- - lib/usabilla_api/models/campaign/statistics.rb
158
- - lib/usabilla_api/models/campaign_results/item.rb
159
- - lib/usabilla_api/models/feedback/item.rb
162
+ - lib/usabilla_api/models/apps/app/item.rb
163
+ - lib/usabilla_api/models/apps/feedback/data.rb
164
+ - lib/usabilla_api/models/apps/feedback/geo_location.rb
165
+ - lib/usabilla_api/models/apps/feedback/item.rb
166
+ - lib/usabilla_api/models/email/button/groups.rb
167
+ - lib/usabilla_api/models/email/button/item.rb
168
+ - lib/usabilla_api/models/email/feedback/item.rb
160
169
  - lib/usabilla_api/models/response.rb
170
+ - lib/usabilla_api/models/websites/button/item.rb
171
+ - lib/usabilla_api/models/websites/campaign/item.rb
172
+ - lib/usabilla_api/models/websites/campaign/results/item.rb
173
+ - lib/usabilla_api/models/websites/campaign/stats/item.rb
174
+ - lib/usabilla_api/models/websites/feedback/item.rb
161
175
  - lib/usabilla_api/usabilla_api.rb
162
176
  - lib/usabilla_api/version.rb
163
177
  homepage: http://rubygems.org/gems/usabilla_api
@@ -1,23 +0,0 @@
1
- module UsabillaApi
2
- module Clients
3
- class Button
4
- class << self
5
-
6
- def retrieve(params)
7
- request = UsabillaApi.api_client.new(params).get_buttons
8
- response = UsabillaApi.response.new(request)
9
- response.items = response.items.map {|item| UsabillaApi::Models::Button::Item.new(item)} unless response.items.nil?
10
- response
11
- end
12
-
13
- def feedback(params)
14
- request = UsabillaApi.api_client.new(params).get_feedback_items
15
- response = UsabillaApi.response.new(request)
16
- response.items = response.items.map {|item| UsabillaApi::Models::Feedback::Item.new(item)} unless response.items.nil?
17
- response
18
- end
19
-
20
- end
21
- end
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- module UsabillaApi
2
- module Clients
3
- class Campaign
4
- class << self
5
-
6
- def retrieve(params)
7
- request = UsabillaApi.api_client.new(params).get_campaigns
8
- response = UsabillaApi.response.new(request)
9
- response.items = response.items.map {|item| UsabillaApi::Models::Campaign::Item.new(item)} unless response.items.nil?
10
- response
11
- end
12
-
13
- def results(params)
14
- request = UsabillaApi.api_client.new(params).get_campaign_results
15
- response = UsabillaApi.response.new(request)
16
- response.items = response.items.map {|item| UsabillaApi::Models::CampaignResults::Item.new(item)} unless response.items.nil?
17
- response
18
- end
19
-
20
- end
21
- end
22
- end
23
- end
@@ -1,15 +0,0 @@
1
- module UsabillaApi
2
- module Models
3
- module Button
4
- class Item
5
- attr_accessor :id, :name
6
-
7
- def initialize(args = {})
8
- @id = args['id'] || ''
9
- @name = args['name'] || ''
10
- end
11
-
12
- end
13
- end
14
- end
15
- end
@@ -1,24 +0,0 @@
1
- module UsabillaApi
2
- module Models
3
- module Campaign
4
- class Item
5
- attr_accessor :id, :date, :button_id, :analytics_id, :status, :name, :statistics, :type
6
-
7
- def initialize(args = {})
8
- @id = args['id'] || ''
9
- @date = args['date'] || ''
10
- @button_id = args['buttonId'] || ''
11
- @analytics_id = args['analyticsId'] || ''
12
- @status = args['status'] || ''
13
- @name = args['name'] || ''
14
- @statistics = create_statistics(args['statistics']) || []
15
- @type = args['type'] || ''
16
- end
17
-
18
- def create_statistics(hash)
19
- UsabillaApi::Models::Campaign::Statistics.new(hash)
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,17 +0,0 @@
1
- module UsabillaApi
2
- module Models
3
- module Campaign
4
- class Statistics
5
-
6
- attr_accessor :views, :completed, :conversion
7
-
8
- def initialize(args = {})
9
- @views = args['views'] || nil
10
- @completed = args['completed'] || nil
11
- @conversion = args['conversion'] || nil
12
- end
13
-
14
- end
15
- end
16
- end
17
- end
@@ -1,22 +0,0 @@
1
- module UsabillaApi
2
- module Models
3
- module CampaignResults
4
- class Item
5
- attr_accessor :id, :user_agent, :location, :date, :campaign_id, :custom_data, :data, :url, :time
6
-
7
- def initialize(args = {})
8
- @id = args['id'] || ''
9
- @user_agent = args['userAgent'] || ''
10
- @location = args['location'] || ''
11
- @date = args['date'] || ''
12
- @campaign_id = args['campaignId'] || ''
13
- @custom_data = args['customData'] || []
14
- @data = args['data'] || []
15
- @url = args['url'] || ''
16
- @time = args['time'] || nil
17
- end
18
-
19
- end
20
- end
21
- end
22
- end
@@ -1,28 +0,0 @@
1
- module UsabillaApi
2
- module Models
3
- module Feedback
4
- class Item
5
- attr_accessor :id, :user_agent, :comment, :location, :date, :custom, :email, :image, :labels, :nps, :public_url, :rating, :button_id, :tags, :url
6
-
7
- def initialize(args = {})
8
- @id = args['id'] || ''
9
- @user_agent = args['userAgent'] || ''
10
- @comment = args['comment'] || ''
11
- @location = args['location'] || ''
12
- @date = args['date'] || ''
13
- @custom = args['custom'] || []
14
- @email = args['email'] || ''
15
- @image = args['image'] || ''
16
- @labels = args['labels'] || []
17
- @nps = args['nps'] || nil
18
- @public_url = args['publicUrl'] || []
19
- @rating = args['rating'] || ''
20
- @button_id = args['buttonId'] || nil
21
- @tags = args['tags'] || []
22
- @url = args['url'] || ''
23
- end
24
-
25
- end
26
- end
27
- end
28
- end