usabilla_api 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/usabilla_api.rb +16 -97
  3. metadata +36 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7488d9c6ee665d9fb6aebf993ffc3a44e7b9b16b
4
- data.tar.gz: 1e82e57607c8d4f9e99884e0fe96aad38561ad16
3
+ metadata.gz: 88b288cbe2a7e43ed1477c763db86aceee16180c
4
+ data.tar.gz: 76b7f129876ad1399addd376afa6e0b8665b29e6
5
5
  SHA512:
6
- metadata.gz: 305331d7c621b4bc0dff9e2e72a8213e037ee0363c14cfb0d435646789be3f585616aea065d1845b47531e2f4c7b3edd525d57adeb400c729fe2ef1bcfa8bce4
7
- data.tar.gz: 38e1b2be7440606d13e42f9cb719523316766415c6cd87c60158529ea88e6e47c8fadeed6ab8cf2065b543a389d6e52db903b1929411d242f7b7dd363ce8dc54
6
+ metadata.gz: 06af446296d47cea9bf84cc2edf7ed716cd97aca470702b4bf48cc0730016a11321c13659d35eaf270ae7af283f318bb8df1ca35473dbfea82fb3cdd0a6b6047
7
+ data.tar.gz: 74173951d8452543d72d890393de2100eccad99bf486150fc1f6bd5fbd573c852443da52b0722ce93c42cc23686ae63a520b95527d36dfda0e10701a59bbc27a
data/lib/usabilla_api.rb CHANGED
@@ -1,104 +1,23 @@
1
- require 'rest-client'
2
- require 'openssl'
1
+ require 'usabilla_api/config'
2
+ require 'usabilla_api/convenience'
3
+ require 'usabilla_api/usabilla_api'
3
4
 
4
- module Usabilla
5
- Credentials = Struct.new(:client_key, :secret_key)
6
-
7
- class APIClient
8
- attr_accessor :method, :host, :host_protocol, :query_parameters, :credentials
9
-
10
- def initialize(client_key, secret_key, params)
11
- @method = 'GET'
12
- @host = 'data.usabilla.com'
13
- @host_protocol = 'https://'
14
- @query_parameters = params
15
- @credentials = Usabilla::Credentials.new(client_key, secret_key)
16
- end
17
-
18
- def get_signature_key(key, long_date)
19
- k_date = OpenSSL::HMAC.digest('sha256', 'USBL1' + key, long_date)
20
- k_signing = OpenSSL::HMAC.digest('sha256', k_date, 'usbl1_request')
21
- k_signing
22
- end
23
-
24
-
25
- def set_query_parameters(params)
26
- @query_parameters = params
27
- end
28
-
29
- def get_query_parameters
30
- @query_parameters
31
- end
32
-
33
- def send_signed_request(scope)
34
-
35
- if @credentials.client_key.nil? || @credentials.secret_key.nil?
36
- raise 'Invalid Access Key. The Access Key supplied is invalid.'
37
- end
38
-
39
- t = DateTime.now
40
- usbldate = t.strftime('%a, %d %b %Y %H:%M:%S GMT')
41
- datestamp = t.strftime('%Y%m%d') # Date w/o time, used in credential scope
42
- long_date = t.strftime('%Y%m%dT%H%M%SZ')
43
-
44
- canonical_uri = scope
45
- canonical_querystring = get_query_parameters
46
- canonical_headers = "date:#{usbldate}\nhost:#{@host}\n"
47
- signed_headers = 'date;host'
48
- payload_hash = OpenSSL::Digest::SHA256.new.hexdigest
49
-
50
- canonical_request = "#{@method}\n#{canonical_uri}\n#{canonical_querystring}\n#{canonical_headers}\n#{signed_headers}\n#{payload_hash}"
51
-
52
- canonical_request_digest = OpenSSL::Digest::SHA256.new(canonical_request).hexdigest
53
- algorithm = 'USBL1-HMAC-SHA256'
54
- credential_scope = "#{datestamp}/usbl1_request"
55
-
56
- string_to_sign = "#{algorithm}\n#{long_date}\n#{credential_scope}\n#{canonical_request_digest}"
57
-
58
- signing_key = get_signature_key(@credentials.secret_key, datestamp)
59
- signature = OpenSSL::HMAC.hexdigest('sha256', signing_key, string_to_sign)
60
-
61
- authorization_header = "#{algorithm} Credential=#{@credentials.client_key}/#{credential_scope}, SignedHeaders=#{signed_headers}, Signature=#{signature}"
62
- headers = {'date' => usbldate, 'Authorization' => authorization_header}
63
-
64
- # Send the request.
65
- request_url = @host + scope + '?' + canonical_querystring
66
- response = RestClient.get(@host_protocol + request_url, headers)
67
- print "#{request_url}"
68
- response
69
-
70
- end
71
-
72
- def get_buttons
73
- send_signed_request('/live/website/button')
74
- end
75
-
76
- def get_feedback_items(button_id='%2A')
77
- if button_id.nil? || button_id.empty?
78
- raise 'Invalid button ID'
79
- end
80
- if button_id == '*'
81
- button_id = '%2A'
82
- end
83
- feedback_items = send_signed_request("/live/website/button/#{button_id}/feedback")
84
- feedback_items
85
-
86
- end
87
-
88
- def get_campaigns
89
- send_signed_request('/live/website/campaign')
90
- end
91
-
92
- def get_campaign_results(campaign_id=nil)
5
+ def require_directory(relative_path)
6
+ Dir[File.dirname(__FILE__) + relative_path].each { |file| require file }
7
+ end
93
8
 
94
- if campaign_id.nil? || campaign_id.empty?
95
- raise 'Invalid campaign ID'
96
- end
9
+ %w(/usabilla_api/clients/**/*.rb /usabilla_api/models/**.rb
10
+ /usabilla_api/models/**/*.rb).each { |path| require_directory path }
97
11
 
98
- campaign_results = send_signed_request("/live/website/campaign/#{campaign_id}/results")
99
- campaign_results
12
+ module UsabillaApi
13
+ extend Convenience::ClassMethods
100
14
 
101
- end
15
+ def self.configure
16
+ yield configuration
17
+ end
102
18
 
19
+ def self.configuration
20
+ @configuration ||= UsabillaApi::Config.new
21
+ @configuration
103
22
  end
104
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usabilla_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Molinaro
@@ -9,7 +9,41 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2015-03-19 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ - - '>='
35
+ - !ruby/object:Gem::Version
36
+ version: 1.7.7
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '1.7'
44
+ - - '>='
45
+ - !ruby/object:Gem::Version
46
+ version: 1.7.7
13
47
  description: A Ruby Usabilla API Gem that will allow you to connect to and use the
14
48
  Usabilla API
15
49
  email: Teirson@gmail.com