esv_api 0.0.1 → 1.0.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.
- data/README.md +45 -3
- data/Rakefile +8 -11
- data/esv_api.gemspec +2 -1
- data/lib/esv_api/client.rb +63 -0
- data/lib/esv_api/version.rb +2 -2
- data/spec/esv_api/client_spec.rb +163 -0
- data/spec/esv_api_spec.rb +13 -0
- data/spec/helper.rb +3 -0
- metadata +21 -4
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# ESV_API
|
2
2
|
|
3
|
-
An API Wrapper for the ESV API
|
3
|
+
An API Wrapper for the [ESV API](http://www.esvapi.org/api)
|
4
4
|
|
5
5
|
# Limitations
|
6
6
|
|
@@ -11,12 +11,16 @@ Currently only supports `passage_query`
|
|
11
11
|
```ruby
|
12
12
|
|
13
13
|
gem 'esv_api'
|
14
|
-
|
15
14
|
```
|
16
15
|
|
16
|
+
|
17
|
+
# Usage
|
18
|
+
|
19
|
+
For your rails app:
|
20
|
+
|
17
21
|
```ruby
|
18
22
|
|
19
|
-
#
|
23
|
+
#Create an initializer:
|
20
24
|
|
21
25
|
ESV.configure do |config|
|
22
26
|
config.api_key = YOUR_API_KEY
|
@@ -28,6 +32,44 @@ Currently only supports `passage_query`
|
|
28
32
|
@esv_text = ESV.passage_query( params[:passage] || "John 1", { 'include-footnotes' => 'false', 'include-headings' => 'false', 'include-subheadings' => 'false', 'include-audio-link' => 'false' } )
|
29
33
|
```
|
30
34
|
|
35
|
+
## Query Types
|
36
|
+
|
37
|
+
The following methods are available as query types:
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
|
41
|
+
passage_query(passage, options={})
|
42
|
+
|
43
|
+
query( q, options={} )
|
44
|
+
|
45
|
+
reading_plan_query( options={} )
|
46
|
+
|
47
|
+
query_info( q, options={} )
|
48
|
+
|
49
|
+
reading_plan_info( options={} )
|
50
|
+
|
51
|
+
verse( options={} )
|
52
|
+
|
53
|
+
daily_verse( options={} )
|
54
|
+
```
|
55
|
+
|
56
|
+
|
57
|
+
## Query Options
|
58
|
+
|
59
|
+
The gem mirrors the API. To pass in options, just use the options hash in any available method, using options of the same name as specified in the [ESV API documentation](http://www.esvapi.org/api).
|
60
|
+
|
61
|
+
For example:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
|
65
|
+
@esv_text = ESV.passage_query( params[:passage] || "John 1", { 'include-footnotes' => 'false', 'include-headings' => 'false', 'include-subheadings' => 'false', 'include-audio-link' => 'false' } )
|
66
|
+
```
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
## Formatting HTML Output
|
71
|
+
|
72
|
+
HTML is the default output and will appear unless output-format is specified. To make full use of the text, you will probably want to link a CSS stylesheet to your page, either one you've created or [GNP's CSS](http://www.gnpcb.org/esv/assets/style/text.css). This stylesheet contains close to the minimum markup needed to render the text accurately.
|
31
73
|
|
32
74
|
# Credits
|
33
75
|
|
data/Rakefile
CHANGED
@@ -1,13 +1,10 @@
|
|
1
|
-
|
2
|
-
require 'rake/testtask'
|
3
|
-
require 'rake/rdoctask'
|
1
|
+
#!/usr/bin/env rake
|
4
2
|
|
5
|
-
|
6
|
-
|
3
|
+
require 'bundler'
|
4
|
+
Bundler::GemHelper.install_tasks
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
6
|
+
require 'rspec/core/rake_task'
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
8
|
+
|
9
|
+
task :test => :spec
|
10
|
+
task :default => :spec
|
data/esv_api.gemspec
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.add_dependency 'httparty'
|
3
|
+
s.add_development_dependency 'rspec'
|
3
4
|
|
4
5
|
s.platform = Gem::Platform::RUBY
|
5
6
|
s.name = 'esv_api'
|
6
|
-
s.version = '0.0
|
7
|
+
s.version = '1.0.0'
|
7
8
|
s.authors = ["Jeff McFadden"]
|
8
9
|
s.email = ["jeff@forgeapps.com"]
|
9
10
|
s.homepage = "http://github.com/jeffmcfadden/esv_api"
|
data/lib/esv_api/client.rb
CHANGED
@@ -32,5 +32,68 @@ module ESV
|
|
32
32
|
|
33
33
|
ESV::Client.get( self.endpoint + '/passageQuery', { :query => query } )
|
34
34
|
end
|
35
|
+
|
36
|
+
def query( q, options={} )
|
37
|
+
query = {
|
38
|
+
'key' => self.api_key,
|
39
|
+
'q' => q
|
40
|
+
}
|
41
|
+
|
42
|
+
query = options.merge( query )
|
43
|
+
|
44
|
+
ESV::Client.get( self.endpoint + '/query', { :query => query } )
|
45
|
+
end
|
46
|
+
|
47
|
+
def reading_plan_query( options={} )
|
48
|
+
query = {
|
49
|
+
'key' => self.api_key,
|
50
|
+
}
|
51
|
+
|
52
|
+
query = options.merge( query )
|
53
|
+
|
54
|
+
ESV::Client.get( self.endpoint + '/readingPlanQuery', { :query => query } )
|
55
|
+
end
|
56
|
+
|
57
|
+
def query_info( q, options={} )
|
58
|
+
query = {
|
59
|
+
'key' => self.api_key,
|
60
|
+
'q' => q
|
61
|
+
}
|
62
|
+
|
63
|
+
query = options.merge( query )
|
64
|
+
|
65
|
+
ESV::Client.get( self.endpoint + '/queryInfo', { :query => query } )
|
66
|
+
end
|
67
|
+
|
68
|
+
def reading_plan_info( options={} )
|
69
|
+
query = {
|
70
|
+
'key' => self.api_key,
|
71
|
+
}
|
72
|
+
|
73
|
+
query = options.merge( query )
|
74
|
+
|
75
|
+
ESV::Client.get( self.endpoint + '/readingPlanQuery', { :query => query } )
|
76
|
+
end
|
77
|
+
|
78
|
+
def verse( options={} )
|
79
|
+
query = {
|
80
|
+
'key' => self.api_key,
|
81
|
+
}
|
82
|
+
|
83
|
+
query = options.merge( query )
|
84
|
+
|
85
|
+
ESV::Client.get( self.endpoint + '/verse', { :query => query } )
|
86
|
+
end
|
87
|
+
|
88
|
+
def daily_verse( options={} )
|
89
|
+
query = {
|
90
|
+
'key' => self.api_key,
|
91
|
+
}
|
92
|
+
|
93
|
+
query = options.merge( query )
|
94
|
+
|
95
|
+
ESV::Client.get( self.endpoint + '/verse', { :query => query } )
|
96
|
+
end
|
97
|
+
|
35
98
|
end
|
36
99
|
end
|
data/lib/esv_api/version.rb
CHANGED
@@ -0,0 +1,163 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe ESV::Client do
|
4
|
+
before do
|
5
|
+
@keys = ESV::Config::VALID_OPTIONS_KEYS
|
6
|
+
|
7
|
+
ESV.configure do |config|
|
8
|
+
config.api_key = 'aae0629deae45288'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context "with module configuration" do
|
13
|
+
|
14
|
+
before do
|
15
|
+
ESV.configure do |config|
|
16
|
+
@keys.each do |key|
|
17
|
+
config.send("#{key}=", key)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
after do
|
23
|
+
ESV.reset
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should inherit module configuration" do
|
27
|
+
api = ESV::Client.new
|
28
|
+
@keys.each do |key|
|
29
|
+
api.send(key).should == key
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "with class configuration" do
|
34
|
+
|
35
|
+
before do
|
36
|
+
@configuration = {
|
37
|
+
:api_key => 'hereisAnAPIKey',
|
38
|
+
:endpoint => 'http://api.esv.org/',
|
39
|
+
:user_agent => 'Custom User Agent'
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
context "during initialization" do
|
44
|
+
it "should override module configuration" do
|
45
|
+
api = ESV::Client.new(@configuration)
|
46
|
+
@keys.each do |key|
|
47
|
+
api.send(key).should == @configuration[key]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context "after initilization" do
|
53
|
+
it "should override module configuration after initialization" do
|
54
|
+
api = ESV::Client.new
|
55
|
+
@configuration.each do |key, value|
|
56
|
+
api.send("#{key}=", value)
|
57
|
+
end
|
58
|
+
@keys.each do |key|
|
59
|
+
api.send(key).should == @configuration[key]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe ".passage_query" do
|
68
|
+
it "should return a string" do
|
69
|
+
api = ESV::Client.new
|
70
|
+
api.passage_query( 'John 1:1' ).should be_a String
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should not return an error with a valid passage" do
|
74
|
+
api = ESV::Client.new
|
75
|
+
api.passage_query( 'John 1:1' ).should_not include("ERROR")
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should return an error with an invalid passage" do
|
79
|
+
api = ESV::Client.new
|
80
|
+
api.passage_query( 'Fail Whale' ).should include("ERROR")
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe ".query" do
|
85
|
+
it "should return a string" do
|
86
|
+
api = ESV::Client.new
|
87
|
+
api.query( 'John 1:1' ).should be_a String
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should not return an error with a valid passage" do
|
91
|
+
api = ESV::Client.new
|
92
|
+
api.query( 'John 1:1' ).should_not include("ERROR")
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe ".reading_plan_query" do
|
97
|
+
it "should return a string" do
|
98
|
+
api = ESV::Client.new
|
99
|
+
api.reading_plan_query().should be_a String
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should not return an error with a valid passage" do
|
103
|
+
api = ESV::Client.new
|
104
|
+
api.reading_plan_query().should_not include("ERROR")
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe ".query_info" do
|
109
|
+
it "should return a string" do
|
110
|
+
api = ESV::Client.new
|
111
|
+
api.query_info( 'John 1:1' ).should be_a String
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should not return an error with a valid passage" do
|
115
|
+
api = ESV::Client.new
|
116
|
+
api.query_info( 'John 1:1' ).should_not include("ERROR")
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
describe ".reading_plan_info" do
|
122
|
+
it "should return a string" do
|
123
|
+
api = ESV::Client.new
|
124
|
+
api.reading_plan_info().should be_a String
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should not return an error with a valid passage" do
|
128
|
+
api = ESV::Client.new
|
129
|
+
api.reading_plan_info().should_not include("ERROR")
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe ".verse" do
|
134
|
+
it "should return a string" do
|
135
|
+
api = ESV::Client.new
|
136
|
+
api.verse().should be_a String
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should not return an error with a valid passage" do
|
140
|
+
api = ESV::Client.new
|
141
|
+
api.verse().should_not include("ERROR")
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe ".daily_verse" do
|
146
|
+
it "should return a string" do
|
147
|
+
api = ESV::Client.new
|
148
|
+
api.daily_verse().should be_a String
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should not return an error with a valid passage" do
|
152
|
+
api = ESV::Client.new
|
153
|
+
api.daily_verse().should_not include("ERROR")
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
end
|
data/spec/helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: esv_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-01-22 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
16
|
-
requirement: &
|
16
|
+
requirement: &70242206491240 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,18 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70242206491240
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &70242206490820 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70242206490820
|
25
36
|
description: ESV API Wrapper.
|
26
37
|
email:
|
27
38
|
- jeff@forgeapps.com
|
@@ -38,6 +49,9 @@ files:
|
|
38
49
|
- lib/esv_api/client.rb
|
39
50
|
- lib/esv_api/config.rb
|
40
51
|
- lib/esv_api/version.rb
|
52
|
+
- spec/esv_api/client_spec.rb
|
53
|
+
- spec/esv_api_spec.rb
|
54
|
+
- spec/helper.rb
|
41
55
|
homepage: http://github.com/jeffmcfadden/esv_api
|
42
56
|
licenses: []
|
43
57
|
post_install_message:
|
@@ -63,4 +77,7 @@ rubygems_version: 1.8.6
|
|
63
77
|
signing_key:
|
64
78
|
specification_version: 3
|
65
79
|
summary: ESV API Wrapper.
|
66
|
-
test_files:
|
80
|
+
test_files:
|
81
|
+
- spec/esv_api/client_spec.rb
|
82
|
+
- spec/esv_api_spec.rb
|
83
|
+
- spec/helper.rb
|