clever-ruby 0.9.0 → 0.10.0

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