usabilla_api 0.1.0 → 0.1.1
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/README.md +90 -0
- data/lib/usabilla_api/clients/button.rb +29 -0
- data/lib/usabilla_api/clients/campaign.rb +29 -0
- data/lib/usabilla_api/config.rb +43 -0
- data/lib/usabilla_api/convenience.rb +30 -0
- data/lib/usabilla_api/models/button/item.rb +15 -0
- data/lib/usabilla_api/models/campaign/item.rb +24 -0
- data/lib/usabilla_api/models/campaign/statistics.rb +17 -0
- data/lib/usabilla_api/models/campaign_results/item.rb +22 -0
- data/lib/usabilla_api/models/feedback/item.rb +28 -0
- data/lib/usabilla_api/models/response.rb +30 -0
- data/lib/usabilla_api/usabilla_api.rb +100 -0
- data/lib/usabilla_api/version.rb +3 -0
- metadata +109 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd858590143870feb277865af77a5df6fb214e0e
|
4
|
+
data.tar.gz: f568882361755a2f91b70c314b46f87a3688fb21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1854cec8dd3dbab241540ea6c70f1b58cea8967dabc2d0f74fc8c060e1302ff29bf47813fdbdce23fcf2ecf4d73bc2caa12ff9a22a3bb248d06916c1d105048
|
7
|
+
data.tar.gz: 4abad0eca23e5aa09635001b31b80771a3bcaee741afb6ae719266e43605bab0f0b249f8cae85e957905fa089d7e85cb04de8af1440ca3d6816aebd31affdd00
|
data/README.md
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
#Installation
|
2
|
+
|
3
|
+
You can add it to your Gemfile with:
|
4
|
+
```
|
5
|
+
gem 'usabilla_api'
|
6
|
+
```
|
7
|
+
Run the bundle command to install it.
|
8
|
+
|
9
|
+
#Configuration
|
10
|
+
|
11
|
+
######Add these lines to the appropriate config/environments file
|
12
|
+
Access & Secret Key are required
|
13
|
+
```
|
14
|
+
UsabillaApi.configuration.access_key = 'YOUR-ACCESS-KEY'
|
15
|
+
UsabillaApi.configuration.secret_key = 'YOUR-SECRET-KEY'
|
16
|
+
```
|
17
|
+
Change 'YOUR-ACCESS-KEY' & 'YOUR-SECRET-KEY' to appropriate values.
|
18
|
+
|
19
|
+
Get your access and secret key here: [Usabilla Member API](https://usabilla.com/member/api)
|
20
|
+
|
21
|
+
You can either return an Object (default) or a the original JSON string.
|
22
|
+
```
|
23
|
+
UsabillaApi.configuration.json_response = true
|
24
|
+
```
|
25
|
+
Full Usabilla API documentation: [Usabilla API](https://usabilla.com/api)
|
26
|
+
|
27
|
+
#Usage
|
28
|
+
|
29
|
+
Simply add one of the following;
|
30
|
+
(params = url query paramaters)
|
31
|
+
|
32
|
+
To get the **buttons** api response
|
33
|
+
```
|
34
|
+
UsabillaApi.button(params)
|
35
|
+
```
|
36
|
+
To get the **buttons feedback** items api response
|
37
|
+
```
|
38
|
+
UsabillaApi.feedback_items(params)
|
39
|
+
```
|
40
|
+
To get the **campaign** api response
|
41
|
+
```
|
42
|
+
UsabillaApi.campaign(params)
|
43
|
+
```
|
44
|
+
To get the **campaign results** api response
|
45
|
+
```
|
46
|
+
UsabillaApi.campaign_results(params)
|
47
|
+
```
|
48
|
+
|
49
|
+
######Example
|
50
|
+
```
|
51
|
+
# Controller /button_controller.rb
|
52
|
+
def show
|
53
|
+
@buttons = UsabillaApi.button(params)
|
54
|
+
end
|
55
|
+
```
|
56
|
+
```
|
57
|
+
# View /show.html.rb
|
58
|
+
<h2>Buttons</h2>
|
59
|
+
<% @buttons.each do |button| %>
|
60
|
+
Button ID: <% button.id %>
|
61
|
+
Button Name: <% button.name %>
|
62
|
+
<% end %>
|
63
|
+
```
|
64
|
+
|
65
|
+
######Accepted Query String Parameters
|
66
|
+
|
67
|
+
Usabilla excepts the following query string parameters as values;
|
68
|
+
|
69
|
+
Returns the requested subset.
|
70
|
+
```
|
71
|
+
?limit=
|
72
|
+
```
|
73
|
+
Returns the requested subset.
|
74
|
+
```
|
75
|
+
?since=
|
76
|
+
```
|
77
|
+
Note: Only accepts Unix Timestamps
|
78
|
+
|
79
|
+
#Contributing
|
80
|
+
Feel free to fork or branch and create pull requests with any changes or cool additions!
|
81
|
+
Be sure to test any changes and include them in the pull request in order for it to be considered.
|
82
|
+
|
83
|
+
Thanks!
|
84
|
+
|
85
|
+
|
86
|
+
######TODO
|
87
|
+
* Testing
|
88
|
+
* Refactoring
|
89
|
+
|
90
|
+
*isn't this always the case though?* ~_^
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module UsabillaApi
|
4
|
+
module Clients
|
5
|
+
class Button
|
6
|
+
class << self
|
7
|
+
|
8
|
+
def retrieve(params)
|
9
|
+
request = UsabillaApi.api_client.new(params).get_buttons
|
10
|
+
request = UsabillaApi.response.new(JSON.parse(request)).buttons unless return_json_response
|
11
|
+
request
|
12
|
+
end
|
13
|
+
|
14
|
+
def feedback(params)
|
15
|
+
request = UsabillaApi.api_client.new(params).get_feedback_items
|
16
|
+
request = UsabillaApi.response.new(JSON.parse(request)).feedback_items unless return_json_response
|
17
|
+
request
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def return_json_response
|
23
|
+
UsabillaApi.configuration.json_response
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module UsabillaApi
|
4
|
+
module Clients
|
5
|
+
class Campaign
|
6
|
+
class << self
|
7
|
+
|
8
|
+
def retrieve(params)
|
9
|
+
request = UsabillaApi.api_client.new(params).get_campaigns
|
10
|
+
request = UsabillaApi.response.new(JSON.parse(request)).campaign unless return_json_response
|
11
|
+
request
|
12
|
+
end
|
13
|
+
|
14
|
+
def results(params)
|
15
|
+
request = UsabillaApi.api_client.new(params).get_campaign_results
|
16
|
+
request = UsabillaApi.response.new(JSON.parse(request)).campaign_results unless return_json_response
|
17
|
+
request
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def return_json_response
|
23
|
+
UsabillaApi.configuration.json_response
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module UsabillaApi
|
2
|
+
class Config
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
set_defaults
|
6
|
+
end
|
7
|
+
|
8
|
+
def set_base_uri(uri)
|
9
|
+
@base_uri = uri
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
#################################################################
|
14
|
+
|
15
|
+
def set_defaults
|
16
|
+
@access_key = nil
|
17
|
+
@secret_key = nil
|
18
|
+
@http_method = 'GET'
|
19
|
+
@host_protocol = 'https://'
|
20
|
+
@host = 'data.usabilla.com'
|
21
|
+
@base_scope = '/live/website'
|
22
|
+
@base_uri = @host_protocol + @host + @base_scope
|
23
|
+
@json_response = false
|
24
|
+
set_default_api_uris
|
25
|
+
set_attr_accessors
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
#################################################################
|
30
|
+
|
31
|
+
def set_default_api_uris
|
32
|
+
@uri_button ||= '/button'
|
33
|
+
@uri_feedback_items ||= '/button/:id/feedback'
|
34
|
+
@uri_campaign ||= '/campaign'
|
35
|
+
@uri_campaign_results ||= '/campaign/:id/results'
|
36
|
+
end
|
37
|
+
|
38
|
+
def set_attr_accessors
|
39
|
+
instance_variables.each { |instance_variable| self.class.send :attr_accessor, instance_variable[1..-1].to_sym }
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module UsabillaApi
|
2
|
+
module Convenience
|
3
|
+
module ClassMethods
|
4
|
+
|
5
|
+
def api_client
|
6
|
+
UsabillaApi::Client
|
7
|
+
end
|
8
|
+
|
9
|
+
def response
|
10
|
+
UsabillaApi::Models::Response
|
11
|
+
end
|
12
|
+
|
13
|
+
def button(params)
|
14
|
+
UsabillaApi::Clients::Button.retrieve(params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def feedback_items(params)
|
18
|
+
UsabillaApi::Clients::Button.feedback(params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def campaign(params)
|
22
|
+
UsabillaApi::Clients::Campaign.retrieve(params)
|
23
|
+
end
|
24
|
+
|
25
|
+
def campaign_results(params)
|
26
|
+
UsabillaApi::Clients::Campaign.results(params)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,24 @@
|
|
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
|
@@ -0,0 +1,17 @@
|
|
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
|
@@ -0,0 +1,22 @@
|
|
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
|
@@ -0,0 +1,28 @@
|
|
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
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module UsabillaApi
|
2
|
+
module Models
|
3
|
+
class Response
|
4
|
+
attr_accessor :items, :count, :has_more, :last_time_stamp
|
5
|
+
|
6
|
+
def initialize(args = {})
|
7
|
+
@items = args['items'] || Array.new
|
8
|
+
@count = args['count'] || 0
|
9
|
+
@has_more = args['hasMore'] || false
|
10
|
+
@last_time_stamp = args['lastTimestamp'] || nil
|
11
|
+
end
|
12
|
+
|
13
|
+
def buttons
|
14
|
+
@items = @items.map {|item| UsabillaApi::Models::Button::Item.new(item)} unless @items.nil?
|
15
|
+
end
|
16
|
+
|
17
|
+
def feedback_items
|
18
|
+
@items = @items.map {|item| UsabillaApi::Models::Feedback::Item.new(item)} unless @items.nil?
|
19
|
+
end
|
20
|
+
|
21
|
+
def campaign
|
22
|
+
@items = @items.map {|item| UsabillaApi::Models::Campaign::Item.new(item)} unless @items.nil?
|
23
|
+
end
|
24
|
+
|
25
|
+
def campaign_results
|
26
|
+
@items = @items.map {|item| UsabillaApi::Models::Campaign::Item.new(item)} unless @items.nil?
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'openssl'
|
3
|
+
|
4
|
+
module UsabillaApi
|
5
|
+
|
6
|
+
class Client
|
7
|
+
attr_accessor :http_method, :host, :host_protocol, :access_key, :secret_key, :query_parameters
|
8
|
+
|
9
|
+
def initialize(params)
|
10
|
+
@http_method = UsabillaApi.configuration.http_method
|
11
|
+
@host_protocol = UsabillaApi.configuration.host_protocol
|
12
|
+
@host = UsabillaApi.configuration.host
|
13
|
+
@base_scope = UsabillaApi.configuration.base_scope
|
14
|
+
@access_key = UsabillaApi.configuration.access_key
|
15
|
+
@secret_key = UsabillaApi.configuration.secret_key
|
16
|
+
@query_parameters = params || ''
|
17
|
+
@query_id = @query_parameters["id"] || String.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_buttons
|
21
|
+
send_signed_request(UsabillaApi.configuration.uri_button)
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_feedback_items
|
25
|
+
if @query_id.nil? || @query_id.empty?
|
26
|
+
raise 'Invalid Button ID'
|
27
|
+
end
|
28
|
+
uri = sub_query_id(UsabillaApi.configuration.uri_feedback_items)
|
29
|
+
send_signed_request(uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_campaigns
|
33
|
+
send_signed_request(UsabillaApi.configuration.uri_campaign)
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_campaign_results
|
37
|
+
if @query_id.nil? || @query_id.empty?
|
38
|
+
raise 'Invalid Campaign ID'
|
39
|
+
end
|
40
|
+
uri = sub_query_id(UsabillaApi.configuration.uri_campaign_results)
|
41
|
+
|
42
|
+
send_signed_request(uri)
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def send_signed_request(uri)
|
48
|
+
|
49
|
+
if @access_key.nil? || @secret_key.nil?
|
50
|
+
raise 'Invalid Access Key. The Access Key supplied is invalid.'
|
51
|
+
end
|
52
|
+
|
53
|
+
t = DateTime.now
|
54
|
+
usbldate = t.strftime('%a, %d %b %Y %H:%M:%S GMT')
|
55
|
+
datestamp = t.strftime('%Y%m%d') # Date w/o time, used in credential scope
|
56
|
+
long_date = t.strftime('%Y%m%dT%H%M%SZ')
|
57
|
+
|
58
|
+
query_string = build_query_string(@query_parameters)
|
59
|
+
canonical_headers = "date:#{usbldate}\nhost:#{@host}\n"
|
60
|
+
signed_headers = 'date;host'
|
61
|
+
payload_hash = OpenSSL::Digest::SHA256.new.hexdigest
|
62
|
+
|
63
|
+
canonical_request = "#{@http_method}\n#{@base_scope + uri}\n#{query_string}\n#{canonical_headers}\n#{signed_headers}\n#{payload_hash}"
|
64
|
+
|
65
|
+
canonical_request_digest = OpenSSL::Digest::SHA256.new(canonical_request).hexdigest
|
66
|
+
algorithm = 'USBL1-HMAC-SHA256'
|
67
|
+
credential_scope = "#{datestamp}/usbl1_request"
|
68
|
+
|
69
|
+
string_to_sign = "#{algorithm}\n#{long_date}\n#{credential_scope}\n#{canonical_request_digest}"
|
70
|
+
|
71
|
+
signing_key = get_signature_key(@secret_key, datestamp)
|
72
|
+
signature = OpenSSL::HMAC.hexdigest('sha256', signing_key, string_to_sign)
|
73
|
+
|
74
|
+
authorization_header = "#{algorithm} Credential=#{@access_key}/#{credential_scope}, SignedHeaders=#{signed_headers}, Signature=#{signature}"
|
75
|
+
headers = {'date' => usbldate, 'Authorization' => authorization_header}
|
76
|
+
|
77
|
+
# Send the request.
|
78
|
+
request_url = uri + '?' + query_string
|
79
|
+
response = RestClient.get(UsabillaApi.configuration.base_uri + request_url, headers)
|
80
|
+
|
81
|
+
# Return Response
|
82
|
+
response
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
def get_signature_key(key, long_date)
|
87
|
+
k_date = OpenSSL::HMAC.digest('sha256', 'USBL1' + key, long_date)
|
88
|
+
k_signing = OpenSSL::HMAC.digest('sha256', k_date, 'usbl1_request')
|
89
|
+
k_signing
|
90
|
+
end
|
91
|
+
|
92
|
+
def sub_query_id(uri)
|
93
|
+
uri.gsub(':id', @query_id)
|
94
|
+
end
|
95
|
+
|
96
|
+
def build_query_string(hash)
|
97
|
+
hash.to_a.reverse.map { |x| "#{x[0]}=#{x[1]}" }.join("&") unless hash.nil?
|
98
|
+
end
|
99
|
+
end
|
100
|
+
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: 0.1.
|
4
|
+
version: 0.1.1
|
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-03-
|
11
|
+
date: 2015-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -44,6 +44,100 @@ dependencies:
|
|
44
44
|
- - '>='
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: 1.7.7
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.8'
|
54
|
+
- - '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 0.8.7
|
57
|
+
type: :development
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ~>
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0.8'
|
64
|
+
- - '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 0.8.7
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: webmock
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ~>
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '1.9'
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.9.0
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '1.9'
|
84
|
+
- - '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 1.9.0
|
87
|
+
- !ruby/object:Gem::Dependency
|
88
|
+
name: simplecov
|
89
|
+
requirement: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0.7'
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.7.1
|
97
|
+
type: :development
|
98
|
+
prerelease: false
|
99
|
+
version_requirements: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.7'
|
104
|
+
- - '>='
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 0.7.1
|
107
|
+
- !ruby/object:Gem::Dependency
|
108
|
+
name: rspec
|
109
|
+
requirement: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ~>
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '2.14'
|
114
|
+
type: :development
|
115
|
+
prerelease: false
|
116
|
+
version_requirements: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ~>
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '2.14'
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
name: rspec-pride
|
123
|
+
requirement: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - ~>
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '2.2'
|
128
|
+
- - '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 2.2.0
|
131
|
+
type: :development
|
132
|
+
prerelease: false
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ~>
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '2.2'
|
138
|
+
- - '>='
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: 2.2.0
|
47
141
|
description: A Ruby Usabilla API Gem that will allow you to connect to and use the
|
48
142
|
Usabilla API
|
49
143
|
email: Teirson@gmail.com
|
@@ -51,7 +145,20 @@ executables: []
|
|
51
145
|
extensions: []
|
52
146
|
extra_rdoc_files: []
|
53
147
|
files:
|
148
|
+
- README.md
|
54
149
|
- lib/usabilla_api.rb
|
150
|
+
- lib/usabilla_api/clients/button.rb
|
151
|
+
- lib/usabilla_api/clients/campaign.rb
|
152
|
+
- lib/usabilla_api/config.rb
|
153
|
+
- lib/usabilla_api/convenience.rb
|
154
|
+
- lib/usabilla_api/models/button/item.rb
|
155
|
+
- lib/usabilla_api/models/campaign/item.rb
|
156
|
+
- lib/usabilla_api/models/campaign/statistics.rb
|
157
|
+
- lib/usabilla_api/models/campaign_results/item.rb
|
158
|
+
- lib/usabilla_api/models/feedback/item.rb
|
159
|
+
- lib/usabilla_api/models/response.rb
|
160
|
+
- lib/usabilla_api/usabilla_api.rb
|
161
|
+
- lib/usabilla_api/version.rb
|
55
162
|
homepage: http://rubygems.org/gems/usabilla_api
|
56
163
|
licenses:
|
57
164
|
- MIT
|