usabilla_api 1.1.2 → 2.0.0

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