wordnik 0.3.2 → 0.3.4

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.
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