clever-ruby 0.9.0 → 0.10.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 CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 72240221ff70715106fd5d8c9a1a729e22ac6151
4
- data.tar.gz: aa22601ec563ecd02478f61772b788e1d1fd22fb
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OTYwZWI0M2M2MzkzNDU4NjI5NTFkZjFhMmFkYTQ1OWViYjcyZjg5Yg==
5
+ data.tar.gz: !binary |-
6
+ ZWEwMzk3OWMyYmM0NGE4N2UzMWYyNWVmNTk2YmFiOTA1NzllZGNhNw==
5
7
  SHA512:
6
- metadata.gz: 748147377f319880ae59d5998bea552e4059cd64e23bf53467b970b533441f2fdb91c90a3f102a5866ea461b90ab98d8bbf5a58db9325ab6185c1d9256b2b4be
7
- data.tar.gz: 4afb8665b6a1852a54a581b3370efce8f6b1a9176a761b438cc2e7a650147dbf638e22e1894d1de11ab0f888fcc58321a0322fc2d4a6c1d67f39ec9a3d0ce127
8
+ metadata.gz: !binary |-
9
+ MGEzMjk4YzU1YzkzYTY0YjNmNGUwNjdhZWRjMGU5OGE1NDkwOTVkZDYxY2Nh
10
+ ZjQ5OGZiNGQyN2E4NWZiYTVhZGZhNGVlYzVhM2NkMWFmN2IyN2Q4M2E4Mzll
11
+ NmM3OTE3NWY4ZWI0NTA1N2U5OTljOGRhM2ZmZThlOWExNDMyOGU=
12
+ data.tar.gz: !binary |-
13
+ NGE1MDRmNGNjMzI3YzIxM2Y3MTQ3NTlhYWVjNDJmYzQzNjQxMjA5NWJkZjYz
14
+ MDhlZjA1OTYyYWUzYTZmYTNlNDljZWNiMGRjNTllNmExYjM1NzgyN2JhZTdi
15
+ ZTJjYTlhODM0YTY0ODEyZmYyYTJlYTY2MDgwNWQ4MDBiYWZiNWM=
@@ -1,3 +1,11 @@
1
+ ## 0.10.0 (2014-10-09)
2
+
3
+ * Add tracking headers to all api requeusts
4
+
5
+ ## 0.9.0 (2014-10-02)
6
+
7
+ * Update district to accept optional auth token
8
+
1
9
  ## 0.8.0 (2014-09-12)
2
10
 
3
11
  * Add last method to lists of results for all resources
@@ -6,6 +6,7 @@ require 'open-uri'
6
6
  require 'set'
7
7
  require 'uri'
8
8
  require 'cgi'
9
+ require 'json'
9
10
 
10
11
  require 'clever-ruby/version'
11
12
 
@@ -120,6 +121,29 @@ module Clever
120
121
  [url, payload]
121
122
  end
122
123
 
124
+ # Headers hash for user-agent tracking
125
+ # @api private
126
+ # @return [Hash] headers to add to request
127
+ def self.tracking_headers
128
+ {
129
+ bindings_version: Clever::VERSION,
130
+ lang: 'ruby',
131
+ lang_version: RUBY_VERSION.to_s + ' p' + RUBY_PATCHLEVEL.to_s,
132
+ platform: RUBY_PLATFORM.to_s,
133
+ publisher: 'clever',
134
+ uname: uname
135
+ }
136
+ end
137
+
138
+ # Retrieves system's uname
139
+ # @api private
140
+ # @return [String] uname with the system's uname
141
+ def self.uname
142
+ `uname -a 2>/dev/null`.strip if RUBY_PLATFORM =~ /linux|darwin/i
143
+ rescue SystemCallError
144
+ 'cannot get uname'
145
+ end
146
+
123
147
  # Create options hash that specifies an HTTP request from request data
124
148
  # @api private
125
149
  # @return [Hash] parameters for executing a request
@@ -128,7 +152,9 @@ module Clever
128
152
  url = api_url url
129
153
  url, payload = create_payload method, url, params
130
154
 
131
- headers[:Authorization] = 'Bearer ' + Clever.token if Clever.token
155
+ headers[:authorization] = 'Bearer ' + Clever.token if Clever.token
156
+ headers[:user_agent] = 'Clever/RubyBindings/' + Clever::VERSION
157
+ headers[:x_clever_client_user_agent] = tracking_headers.to_json
132
158
 
133
159
  opts = {
134
160
  method: method,
@@ -1,5 +1,5 @@
1
1
  # Clever Ruby library
2
2
  module Clever
3
3
  # Version
4
- VERSION = '0.9.0'
4
+ VERSION = '0.10.0'
5
5
  end
@@ -1,4 +1,5 @@
1
1
  require 'test_helper'
2
+ require 'json'
2
3
 
3
4
  # basic clever-ruby tests
4
5
  # TODO: organize better
@@ -22,4 +23,41 @@ describe Clever do
22
23
  query_string = Clever.convert_to_query_string created_at: '2013-02-15T 2:30:42Z'
23
24
  query_string.must_equal 'created_at=2013-02-15T%202:30:42Z'
24
25
  end
26
+
27
+ describe '.create_request_opts' do
28
+ before do
29
+ method, url = 'get', 'quotes'
30
+ params = { education: 'powerful weapon' }
31
+ headers = { author: 'Nelson Mandela' }
32
+ @options = Clever.create_request_opts method, url, params, headers
33
+ end
34
+ it 'sets method and url' do
35
+ assert_equal 'get', @options[:method], 'Method not set properly'
36
+ assert_equal(
37
+ 'https://api.clever.com/quotes?education=powerful%20weapon',
38
+ @options[:url],
39
+ 'URL not formed properly with params')
40
+ end
41
+ it 'adds tracking headers' do
42
+ headers = @options[:headers]
43
+ assert headers.key?(:authorization), 'Did not set authorization header'
44
+ assert_match(/Bearer/, headers[:authorization])
45
+ assert headers.key?(:user_agent), 'Did not set User Agent header'
46
+ assert_match %r{Clever/RubyBindings/}, headers[:user_agent]
47
+ assert(
48
+ headers.key?(:x_clever_client_user_agent),
49
+ 'Did not set Clever Client User Agent header')
50
+ assert headers.key?(:author), 'Did not keep original header'
51
+
52
+ custom_ua = JSON.parse(headers[:x_clever_client_user_agent], symbolize_names: true)
53
+ assert custom_ua.key?(:lang), 'Did not set lang in custom user agent header'
54
+ assert_equal custom_ua[:lang], 'ruby', 'Lang is not set to ruby'
55
+ assert custom_ua.key?(:lang_version), 'Did not set lang_version in custom user agent header'
56
+ assert custom_ua.key?(:platform), 'Did not set platform in custom user agent header'
57
+ assert custom_ua.key?(:uname), 'Did not set uname in custom user agent header'
58
+ assert custom_ua.key?(:publisher), 'Did not set publisher in custom user agent header'
59
+ assert_equal custom_ua[:publisher], 'clever', 'Did not set publisher to clever'
60
+ assert custom_ua.key?(:bindings_version), 'Did not set bindings_version'
61
+ end
62
+ end
25
63
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clever-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clever Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-02 00:00:00.000000000 Z
11
+ date: 2014-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -56,14 +56,14 @@ dependencies:
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
@@ -316,17 +316,17 @@ require_paths:
316
316
  - lib
317
317
  required_ruby_version: !ruby/object:Gem::Requirement
318
318
  requirements:
319
- - - '>='
319
+ - - ! '>='
320
320
  - !ruby/object:Gem::Version
321
321
  version: 1.9.3
322
322
  required_rubygems_version: !ruby/object:Gem::Requirement
323
323
  requirements:
324
- - - '>='
324
+ - - ! '>='
325
325
  - !ruby/object:Gem::Version
326
326
  version: '0'
327
327
  requirements: []
328
328
  rubyforge_project:
329
- rubygems_version: 2.0.14
329
+ rubygems_version: 2.2.2
330
330
  signing_key:
331
331
  specification_version: 4
332
332
  summary: Ruby bindings to the Clever API.
@@ -417,3 +417,4 @@ test_files:
417
417
  - test/unit/configuration_test.rb
418
418
  - test/unit/event_test.rb
419
419
  - test/unit/optional_attributes_test.rb
420
+ has_rdoc: