rsolr-json 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ec1c6602b92e9d6c35e21f59bc195e54d997da97
4
+ data.tar.gz: 329b51b83df25f6707329d7051a678393e040d65
5
+ SHA512:
6
+ metadata.gz: 0092641e8047a8519cca05bad528706924d38f6dbb39dc75f8caaaa7e220e60d6e8a07abc7c2cd1484d87714833e0144e0d82b5f05d6277c4e92fdd40a8ca0d7
7
+ data.tar.gz: 5cbd3c102d381f70f1fbf0497aad27fa5b2780ab4d06ebc91993969f385ee4d6f73d123d6dc8667b840e45c378b70f293c425eefb322be54f2f1335ffbd50bfa
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
@@ -0,0 +1,15 @@
1
+ rvm:
2
+ - 2.1.0
3
+ - 2.0.0
4
+ - 1.9.3
5
+ - jruby-19mode
6
+
7
+ notifications:
8
+ irc: "irc.freenode.org#blacklight"
9
+ email:
10
+ - blacklight-commits@googlegroups.com
11
+
12
+ env:
13
+ global:
14
+ - JRUBY_OPTS="-J-Xms512m -J-Xmx1024m"
15
+ - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rsolr-json.gemspec
4
+ gemspec
@@ -0,0 +1,13 @@
1
+ Copyright 2014 Chris Beer
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
@@ -0,0 +1,29 @@
1
+ # RSolr::Json
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'rsolr-json'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install rsolr-json
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it ( http://github.com/<my-github-username>/rsolr-json/fork )
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,46 @@
1
+ require "rsolr/json/version"
2
+ require 'rsolr'
3
+ require 'rsolr/client'
4
+ require 'multi_json'
5
+
6
+ module RSolr
7
+ module Json
8
+ # Your code goes here...
9
+ end
10
+
11
+ class Client
12
+
13
+ alias_method :orig_build_request, :build_request
14
+ alias_method :orig_adapt_response, :adapt_response
15
+
16
+ def build_request path, opts
17
+ opts[:params] = opts[:params].nil? ? {:wt => :json} : {:wt => :json}.merge(opts[:params])
18
+ orig_build_request path, opts
19
+ end
20
+
21
+ def adapt_response request, response
22
+ raise "The response does not have the correct keys => :body, :headers, :status" unless
23
+ %W(body headers status) == response.keys.map{|k|k.to_s}.sort
24
+ raise RSolr::Error::Http.new request, response unless [200,302].include? response[:status]
25
+ case request[:params][:wt]
26
+ when :ruby
27
+ orig_adapt_response request, response
28
+ when :json
29
+ result = evaluate_json_response(request, response)
30
+ result.extend Context
31
+ result.request, result.response = request, response
32
+ result.is_a?(Hash) ? result.extend(RSolr::Response) : result
33
+ else
34
+ orig_adapt_response request, response
35
+ end
36
+ end
37
+
38
+ def evaluate_json_response request, response
39
+ begin
40
+ MultiJson.load response[:body].to_s
41
+ rescue MultiJson::LoadError
42
+ raise RSolr::Error::InvalidRubyResponse.new request, response
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,5 @@
1
+ module RSolr
2
+ module Json
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rsolr/json/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rsolr-json"
8
+ spec.version = RSolr::Json::VERSION
9
+ spec.authors = ["Chris Beer"]
10
+ spec.email = ["chris@cbeer.info"]
11
+ spec.summary = %q{Use JSON response formats with rsolr}
12
+ spec.homepage = ""
13
+ spec.license = "Apache 2.0"
14
+
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_dependency "rsolr"
21
+ spec.add_dependency "multi_json"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.5"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
26
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe RSolr::Json do
4
+ let(:mock_connection) { double() }
5
+ let(:client) { RSolr::Client.new mock_connection}
6
+
7
+ it "should use wt => json" do
8
+ opts = client.build_request "select", {}
9
+ expect(opts[:params][:wt]).to eq :json
10
+ end
11
+
12
+ it "should use a provided wt" do
13
+ opts = client.build_request "select", :params => { :wt => 'custom-wt' }
14
+ expect(opts[:params][:wt]).to eq 'custom-wt'
15
+ end
16
+
17
+ it "should parse json responses" do
18
+ mock_request = { :params => { :wt => :json }}
19
+ mock_response = { :body => '{ }', :headers => nil, :status => 200}
20
+ response = client.adapt_response mock_request, mock_response
21
+ expect(response).to be_a_kind_of Hash
22
+ expect(response).to be_a_kind_of RSolr::Client::Context
23
+ expect(response.request).to eq mock_request
24
+ expect(response.response).to eq mock_response
25
+ end
26
+
27
+ it "should ignore non-json responses" do
28
+ mock_request = { :params => { :wt => :xyz }}
29
+ mock_response = { :body => 'asdf', :headers => nil, :status => 200}
30
+ response = client.adapt_response mock_request, mock_response
31
+ expect(response).to eq 'asdf'
32
+ end
33
+ end
@@ -0,0 +1,4 @@
1
+ lib = File.expand_path('../../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'rsolr/json'
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rsolr-json
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Chris Beer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rsolr
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: multi_json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.5'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description:
84
+ email:
85
+ - chris@cbeer.info
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".travis.yml"
92
+ - Gemfile
93
+ - LICENSE.txt
94
+ - README.md
95
+ - Rakefile
96
+ - lib/rsolr/json.rb
97
+ - lib/rsolr/json/version.rb
98
+ - rsolr-json.gemspec
99
+ - spec/lib/rsolr_json_spec.rb
100
+ - spec/spec_helper.rb
101
+ homepage: ''
102
+ licenses:
103
+ - Apache 2.0
104
+ metadata: {}
105
+ post_install_message:
106
+ rdoc_options: []
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ requirements: []
120
+ rubyforge_project:
121
+ rubygems_version: 2.2.0
122
+ signing_key:
123
+ specification_version: 4
124
+ summary: Use JSON response formats with rsolr
125
+ test_files:
126
+ - spec/lib/rsolr_json_spec.rb
127
+ - spec/spec_helper.rb