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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +42 -15
- data/lib/usabilla_api/clients/apps/app.rb +18 -0
- data/lib/usabilla_api/clients/apps/feedback.rb +18 -0
- data/lib/usabilla_api/clients/email/button.rb +18 -0
- data/lib/usabilla_api/clients/email/feedback.rb +18 -0
- data/lib/usabilla_api/clients/websites/button.rb +18 -0
- data/lib/usabilla_api/clients/websites/campaign.rb +18 -0
- data/lib/usabilla_api/clients/websites/campaign_results.rb +18 -0
- data/lib/usabilla_api/clients/websites/campaign_stats.rb +18 -0
- data/lib/usabilla_api/clients/websites/feedback.rb +18 -0
- data/lib/usabilla_api/config.rb +15 -5
- data/lib/usabilla_api/convenience.rb +32 -4
- data/lib/usabilla_api/models/apps/app/item.rb +19 -0
- data/lib/usabilla_api/models/apps/feedback/data.rb +20 -0
- data/lib/usabilla_api/models/apps/feedback/geo_location.rb +20 -0
- data/lib/usabilla_api/models/apps/feedback/item.rb +51 -0
- data/lib/usabilla_api/models/email/button/groups.rb +18 -0
- data/lib/usabilla_api/models/email/button/item.rb +26 -0
- data/lib/usabilla_api/models/email/feedback/item.rb +29 -0
- data/lib/usabilla_api/models/websites/button/item.rb +16 -0
- data/lib/usabilla_api/models/websites/campaign/item.rb +22 -0
- data/lib/usabilla_api/models/websites/campaign/results/item.rb +27 -0
- data/lib/usabilla_api/models/websites/campaign/stats/item.rb +21 -0
- data/lib/usabilla_api/models/websites/feedback/item.rb +30 -0
- data/lib/usabilla_api/usabilla_api.rb +14 -30
- data/lib/usabilla_api/version.rb +1 -1
- metadata +23 -9
- data/lib/usabilla_api/clients/button.rb +0 -23
- data/lib/usabilla_api/clients/campaign.rb +0 -23
- data/lib/usabilla_api/models/button/item.rb +0 -15
- data/lib/usabilla_api/models/campaign/item.rb +0 -24
- data/lib/usabilla_api/models/campaign/statistics.rb +0 -17
- data/lib/usabilla_api/models/campaign_results/item.rb +0 -22
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bde5c38e7ba0c323dc9c9fa86dc028cc323b4b91
|
4
|
+
data.tar.gz: 5ceeebaaf4ecc546668e0c6f0fdee23e54689751
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14fee46edeeab42102c890c83a21f9d61c9ebe4abd467a71543e320d5ecb58123698b1572d93cc366749668e4aa5a51bd65e46597a010303edd80df41517953a
|
7
|
+
data.tar.gz: 4239637014011666c17737ab136e75fbb133d143f03205372822c94a2d8dd0ef8eba507193c4f2e7fdf68108ff3acb55f16ce9c94518358862f350084b62c947
|
data/CHANGELOG.md
CHANGED
@@ -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
|
-
|
30
|
+
####Apps API Requests
|
31
|
+
**App**
|
31
32
|
```
|
32
|
-
UsabillaApi.
|
33
|
+
UsabillaApi.apps_app.retrieve(params)
|
33
34
|
```
|
34
|
-
|
35
|
+
**Feedback**
|
35
36
|
```
|
36
|
-
UsabillaApi.
|
37
|
+
UsabillaApi.apps_feedback.retrieve(params)
|
37
38
|
```
|
38
|
-
|
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
|
-
|
55
|
+
**Feedback**
|
41
56
|
```
|
42
|
-
|
57
|
+
UsabillaApi.websites_feedback.retrieve(params)
|
43
58
|
```
|
44
|
-
|
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.
|
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
|
-
|
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
|
-
######
|
86
|
-
* Refactoring
|
113
|
+
######Updates
|
87
114
|
|
88
|
-
|
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
|
data/lib/usabilla_api/config.rb
CHANGED
@@ -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
|
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
|
-
|
32
|
-
@
|
33
|
-
@
|
34
|
-
|
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
|
14
|
-
UsabillaApi::Clients::
|
13
|
+
def apps_app
|
14
|
+
UsabillaApi::Clients::Apps::App
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
UsabillaApi::Clients::
|
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,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
|
25
|
-
|
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 +
|
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 =
|
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')
|
data/lib/usabilla_api/version.rb
CHANGED
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:
|
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-
|
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/
|
152
|
-
- lib/usabilla_api/clients/
|
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/
|
156
|
-
- lib/usabilla_api/models/
|
157
|
-
- lib/usabilla_api/models/
|
158
|
-
- lib/usabilla_api/models/
|
159
|
-
- lib/usabilla_api/models/
|
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,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
|