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.
- 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
|