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