esv_api 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.
data/.gitignore ADDED
@@ -0,0 +1,12 @@
1
+ *.gem
2
+ *.rbc
3
+ *~
4
+ .bundle
5
+ .DS_Store
6
+ .rvmrc
7
+ .yardoc
8
+ coverage/*
9
+ doc/*
10
+ Gemfile.lock
11
+ log/*
12
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # ESV_API
2
+
3
+ An API Wrapper for the ESV API
4
+
5
+ # Limitations
6
+
7
+ Currently only supports `passage_query`
8
+
9
+ # Installation
10
+
11
+ ```ruby
12
+
13
+ gem 'esv_api'
14
+
15
+ ```
16
+
17
+ ```ruby
18
+
19
+ # Create an initializer:
20
+
21
+ ESV.configure do |config|
22
+ config.api_key = YOUR_API_KEY
23
+ end
24
+ ```
25
+
26
+ ```ruby
27
+
28
+ @esv_text = ESV.passage_query( params[:passage] || "John 1", { 'include-footnotes' => 'false', 'include-headings' => 'false', 'include-subheadings' => 'false', 'include-audio-link' => 'false' } )
29
+ ```
30
+
31
+
32
+ # Credits
33
+
34
+ With love to the Twitter Gem, from which I borrowed heavily.
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ desc 'Default: run unit tests.'
6
+ task :default => :test
7
+
8
+ desc 'Test the esv_api gem.'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.pattern = 'test/**/*_test.rb'
12
+ t.verbose = true
13
+ end
data/esv_api.gemspec ADDED
@@ -0,0 +1,19 @@
1
+ Gem::Specification.new do |s|
2
+ s.add_dependency 'httparty'
3
+
4
+ s.platform = Gem::Platform::RUBY
5
+ s.name = 'esv_api'
6
+ s.version = '0.0.1'
7
+ s.authors = ["Jeff McFadden"]
8
+ s.email = ["jeff@forgeapps.com"]
9
+ s.homepage = "http://github.com/jeffmcfadden/esv_api"
10
+ s.summary = "ESV API Wrapper."
11
+ s.description = "ESV API Wrapper."
12
+
13
+ s.required_ruby_version = '>= 1.9.2'
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.require_path = 'lib'
18
+ s.requirements << 'none'
19
+ end
@@ -0,0 +1,36 @@
1
+ require 'esv_api/config'
2
+
3
+ require 'httparty'
4
+
5
+ module ESV
6
+ # Wrapper for the ESV API
7
+ #
8
+ class Client
9
+ include HTTParty
10
+ format :html
11
+
12
+ attr_accessor *Config::VALID_OPTIONS_KEYS
13
+
14
+ # Initializes a new API object
15
+ #
16
+ # @param attrs [Hash]
17
+ # @return [ESV::Client]
18
+ def initialize(attrs={})
19
+ attrs = ESV.options.merge(attrs)
20
+ Config::VALID_OPTIONS_KEYS.each do |key|
21
+ instance_variable_set("@#{key}".to_sym, attrs[key])
22
+ end
23
+ end
24
+
25
+ def passage_query(passage, options={})
26
+ query = {
27
+ 'key' => self.api_key,
28
+ 'passage' => passage
29
+ }
30
+
31
+ query = options.merge( query )
32
+
33
+ ESV::Client.get( self.endpoint + '/passageQuery', { :query => query } )
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,52 @@
1
+ require 'esv_api/version'
2
+
3
+ module ESV
4
+ # Defines constants and methods related to configuration
5
+ module Config
6
+
7
+ # The API Key if none is set
8
+ DEFAULT_API_KEY = nil
9
+
10
+ # The endpoint that will be used to connect if none is set
11
+ DEFAULT_ENDPOINT = 'http://www.esvapi.org/v2/rest/'
12
+
13
+ # The value sent in the 'User-Agent' header if none is set
14
+ DEFAULT_USER_AGENT = "esv_api Ruby Gem #{ESV::Version}"
15
+
16
+ # An array of valid keys in the options hash when configuring a {Twitter::Client}
17
+ VALID_OPTIONS_KEYS = [
18
+ :api_key,
19
+ :endpoint,
20
+ :user_agent
21
+ ]
22
+
23
+ attr_accessor *VALID_OPTIONS_KEYS
24
+
25
+ # When this module is extended, set all configuration options to their default values
26
+ def self.extended(base)
27
+ base.reset
28
+ end
29
+
30
+ # Convenience method to allow configuration options to be set in a block
31
+ def configure
32
+ yield self
33
+ self
34
+ end
35
+
36
+ # Create a hash of options and their values
37
+ def options
38
+ options = {}
39
+ VALID_OPTIONS_KEYS.each{|k| options[k] = send(k)}
40
+ options
41
+ end
42
+
43
+ # Reset all configuration options to defaults
44
+ def reset
45
+ self.api_key = DEFAULT_API_KEY
46
+ self.endpoint = DEFAULT_ENDPOINT
47
+ self.user_agent = DEFAULT_USER_AGENT
48
+ self
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,30 @@
1
+ module ESV
2
+ class Version
3
+
4
+ # @return [Integer]
5
+ def self.major
6
+ 0
7
+ end
8
+
9
+ # @return [Integer]
10
+ def self.minor
11
+ 0
12
+ end
13
+
14
+ # @return [Integer]
15
+ def self.patch
16
+ 1
17
+ end
18
+
19
+ # @return [String, NilClass]
20
+ def self.pre
21
+ nil
22
+ end
23
+
24
+ # @return [String]
25
+ def self.to_s
26
+ [major, minor, patch, pre].compact.join('.')
27
+ end
28
+
29
+ end
30
+ end
data/lib/esv_api.rb ADDED
@@ -0,0 +1,24 @@
1
+ require 'esv_api/client'
2
+ require 'esv_api/config'
3
+
4
+ module ESV
5
+ extend Config
6
+ class << self
7
+ # Alias for ESV::Client.new
8
+ #
9
+ # @return [ESV::Client]
10
+ def new(options={})
11
+ ESV::Client.new(options)
12
+ end
13
+
14
+ # Delegate to ESV::Client
15
+ def method_missing(method, *args, &block)
16
+ return super unless new.respond_to?(method)
17
+ new.send(method, *args, &block)
18
+ end
19
+
20
+ def respond_to?(method, include_private=false)
21
+ new.respond_to?(method, include_private) || super(method, include_private)
22
+ end
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: esv_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jeff McFadden
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-22 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: &70296141623180 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70296141623180
25
+ description: ESV API Wrapper.
26
+ email:
27
+ - jeff@forgeapps.com
28
+ executables: []
29
+ extensions: []
30
+ extra_rdoc_files: []
31
+ files:
32
+ - .gitignore
33
+ - Gemfile
34
+ - README.md
35
+ - Rakefile
36
+ - esv_api.gemspec
37
+ - lib/esv_api.rb
38
+ - lib/esv_api/client.rb
39
+ - lib/esv_api/config.rb
40
+ - lib/esv_api/version.rb
41
+ homepage: http://github.com/jeffmcfadden/esv_api
42
+ licenses: []
43
+ post_install_message:
44
+ rdoc_options: []
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ none: false
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: 1.9.2
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements:
60
+ - none
61
+ rubyforge_project:
62
+ rubygems_version: 1.8.6
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: ESV API Wrapper.
66
+ test_files: []