wordnik 0.3.2 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wordnik (0.3.1)
4
+ wordnik (0.3.4)
5
5
  activemodel (>= 3.0.3)
6
6
  addressable (>= 2.2.4)
7
7
  htmlentities (>= 4.2.4)
data/lib/wordnik.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'wordnik/monkey_patches'
2
1
  require 'wordnik/endpoint'
3
2
  require 'wordnik/operation'
4
3
  require 'wordnik/operation_parameter'
@@ -6,6 +5,7 @@ require 'wordnik/request'
6
5
  require 'wordnik/resource'
7
6
  require 'wordnik/response'
8
7
  require 'wordnik/configuration'
8
+ require 'wordnik/version'
9
9
 
10
10
  module Wordnik
11
11
 
@@ -38,10 +38,18 @@ module Wordnik
38
38
  self.resources = {}
39
39
  self.resource_names.map do |resource_name|
40
40
  name = resource_name.underscore.to_sym # 'fooBar' => :foo_bar
41
- filename = "api_docs/#{resource_name}.json"
41
+ begin
42
+ # This is the path the installed gem will want
43
+ filename = File.join(ENV['GEM_HOME'], "gems", "wordnik-#{Wordnik::VERSION}", "api_docs/#{resource_name}.json")
44
+ raw_data = JSON.parse(File.read(filename))
45
+ rescue
46
+ # This is the path the not-installed gem in development will want
47
+ filename = File.join("api_docs/#{resource_name}.json")
48
+ raw_data = JSON.parse(File.read(filename))
49
+ end
42
50
  resource = Resource.new(
43
51
  :name => name,
44
- :raw_data => JSON.parse(File.read(filename))
52
+ :raw_data => raw_data
45
53
  )
46
54
  self.resources[name] = resource
47
55
  end
@@ -5,6 +5,7 @@ module Wordnik
5
5
  require 'addressable/uri'
6
6
  require 'typhoeus'
7
7
  require 'active_model'
8
+ require "wordnik/version"
8
9
  include ActiveModel::Validations
9
10
  include ActiveModel::Conversion
10
11
  extend ActiveModel::Naming
@@ -24,11 +25,21 @@ module Wordnik
24
25
  'Content-Type' => "application/#{attributes[:format].downcase}",
25
26
  :api_key => Wordnik.configuration.api_key
26
27
  }
27
- attributes[:headers] = default_headers.merge(attributes[:headers] || {})
28
-
29
- # If a blank/nil api_key was passed in, remove it from the headers
30
- attributes[:headers].delete(:api_key) if attributes[:headers][:api_key].blank?
31
28
 
29
+ # If a nil/blank api_key was passed in, remove it from the headers, even if the override is nil/blank
30
+ if attributes[:headers].present? && attributes[:headers].has_key?(:api_key)
31
+ default_headers.delete(:api_key)
32
+ end
33
+
34
+ # If nil/blank api_key was passed in in the params, it overrides both the default
35
+ # headers and the argument headers
36
+ if attributes[:params].present? && attributes[:params].has_key?(:api_key)
37
+ default_headers.delete(:api_key)
38
+ attributes[:headers].delete(:api_key) if attributes[:headers].present?
39
+ end
40
+
41
+ attributes[:headers] = default_headers.merge(attributes[:headers] || {})
42
+
32
43
  self.http_method = http_method.to_sym
33
44
  self.path = path
34
45
  attributes.each do |name, value|
@@ -1,3 +1,3 @@
1
1
  module Wordnik
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.4"
3
3
  end
data/spec/request_spec.rb CHANGED
@@ -16,7 +16,7 @@ describe Wordnik::Request do
16
16
  @request.format.should == "json"
17
17
  end
18
18
 
19
- it "sets get default host from Wordnik.configuration" do
19
+ it "gets default host from Wordnik.configuration" do
20
20
  @request.host.should == Wordnik.configuration.base_uri
21
21
  end
22
22
 
@@ -112,23 +112,6 @@ describe Wordnik::Request do
112
112
  @request.query_string.should == "?foo=criminy&word=dog"
113
113
  end
114
114
 
115
- it "obfuscates the API key when needed" do
116
- @request = Wordnik::Request.new(:get, "words/fancy", @default_params.merge({
117
- :params => {
118
- :word => "dog",
119
- :api_key => "123456"
120
- }
121
- }))
122
- @request.query_string_params.should == {:word => "dog", :api_key => "123456"}
123
- @request.query_string_params(true).should == {:word => "dog", :api_key => "YOUR_API_KEY"}
124
-
125
- @request.query_string.should == "?api_key=123456&word=dog"
126
- @request.query_string(:obfuscated => true).should == "?api_key=YOUR_API_KEY&word=dog"
127
-
128
- @request.url_with_query_string.should =~ /123456/
129
- @request.url_with_query_string(:obfuscated => true).should =~ /YOUR\_API\_KEY/
130
- end
131
-
132
115
  it "URI encodes the path" do
133
116
  @request = Wordnik::Request.new(:get, "word.{format}/{word}/definitions", @default_params.merge({
134
117
  :params => {
@@ -151,6 +134,50 @@ describe Wordnik::Request do
151
134
  end
152
135
 
153
136
  it "camelCases parameters"
137
+
138
+ end
139
+
140
+ describe "API key" do
141
+
142
+ it "is inferred from the Wordnik base configuration by default" do
143
+ Wordnik.configure {|c| c.api_key = "xyz" }
144
+ Wordnik::Request.new(:get, "word/json").headers[:api_key].should == "xyz"
145
+ end
146
+
147
+ it "gets obfuscated for public display" do
148
+ @request = Wordnik::Request.new(:get, "words/fancy", @default_params.merge({
149
+ :params => {
150
+ :word => "dog",
151
+ :api_key => "123456"
152
+ }
153
+ }))
154
+ @request.query_string_params.should == {:word => "dog", :api_key => "123456"}
155
+ @request.query_string_params(true).should == {:word => "dog", :api_key => "YOUR_API_KEY"}
156
+
157
+ @request.query_string.should == "?api_key=123456&word=dog"
158
+ @request.query_string(:obfuscated => true).should == "?api_key=YOUR_API_KEY&word=dog"
159
+
160
+ @request.url_with_query_string.should =~ /123456/
161
+ @request.url_with_query_string(:obfuscated => true).should =~ /YOUR\_API\_KEY/
162
+ end
163
+
164
+ it "allows a key in the params to override the configuration-level key, even if it's blank" do
165
+ Wordnik.configure {|c| c.api_key = "abc" }
166
+ @request_with_key = Wordnik::Request.new(:get, "word/json", :params => {:api_key => "jkl"})
167
+ @request_with_key.headers[:api_key].should be_nil
168
+ @request_with_key.params[:api_key].should == "jkl"
169
+
170
+ @request_without_key = Wordnik::Request.new(:get, "word/json", :params => {:api_key => nil})
171
+ @request_without_key.headers[:api_key].should be_nil
172
+ @request_without_key.params[:api_key].should be_nil
173
+ end
174
+
175
+ it "allows a key in the headers to override the configuration-level key, even if it's blank" do
176
+ Wordnik.configure {|c| c.api_key = "hij" }
177
+ Wordnik::Request.new(:get, "word/json").headers[:api_key].should == "hij"
178
+ Wordnik::Request.new(:get, "word/json", :headers => {:api_key => "jkl"}).headers[:api_key].should == "jkl"
179
+ Wordnik::Request.new(:get, "word/json", :headers => {:api_key => nil}).headers[:api_key].should be_nil
180
+ end
154
181
 
155
182
  end
156
183
 
data/spec/wordnik_spec.rb CHANGED
@@ -2,7 +2,13 @@ require 'spec_helper'
2
2
 
3
3
  describe Wordnik do
4
4
 
5
-
5
+ before(:each) do
6
+ Wordnik.configure do |config|
7
+ config.api_key = ENV['KEY']
8
+ config.base_uri = "beta.wordnik.com/v4"
9
+ end
10
+ end
11
+
6
12
  context "instantiation" do
7
13
 
8
14
  context "resources" do
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: wordnik
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.2
5
+ version: 0.3.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Zeke Sikelianos