sfpark 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/.gitignore +40 -0
- data/.rspec +3 -0
- data/.travis.yml +8 -0
- data/.yardopts +3 -0
- data/Gemfile +4 -0
- data/LICENSE.md +10 -0
- data/README.md +90 -0
- data/Rakefile +18 -0
- data/lib/sfpark.rb +24 -0
- data/lib/sfpark/client.rb +23 -0
- data/lib/sfpark/client/availability.rb +27 -0
- data/lib/sfpark/configuration.rb +65 -0
- data/lib/sfpark/connection.rb +27 -0
- data/lib/sfpark/request.rb +17 -0
- data/lib/sfpark/version.rb +3 -0
- data/sfpark.gemspec +27 -0
- data/spec/faraday/response_spec.rb +33 -0
- data/spec/fixtures/availability.json +1 -0
- data/spec/fixtures/availability_params.json +1 -0
- data/spec/helper.rb +27 -0
- data/spec/sfpark/availability_spec.rb +34 -0
- data/spec/sfpark_spec.rb +28 -0
- metadata +194 -0
data/.gemtest
ADDED
File without changes
|
data/.gitignore
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
*.sw[a-p]
|
4
|
+
*.tmproj
|
5
|
+
*.tmproject
|
6
|
+
*.un~
|
7
|
+
*~
|
8
|
+
.DS_Store
|
9
|
+
.Spotlight-V100
|
10
|
+
.Trashes
|
11
|
+
._*
|
12
|
+
.bundle
|
13
|
+
.config
|
14
|
+
.directory
|
15
|
+
.elc
|
16
|
+
.emacs.desktop
|
17
|
+
.emacs.desktop.lock
|
18
|
+
.redcar
|
19
|
+
.yardoc
|
20
|
+
Desktop.ini
|
21
|
+
Gemfile.lock
|
22
|
+
Icon?
|
23
|
+
InstalledFiles
|
24
|
+
Session.vim
|
25
|
+
Thumbs.db
|
26
|
+
\#*\#
|
27
|
+
_yardoc
|
28
|
+
auto-save-list
|
29
|
+
coverage
|
30
|
+
doc
|
31
|
+
lib/bundler/man
|
32
|
+
pkg
|
33
|
+
pkg/*
|
34
|
+
rdoc
|
35
|
+
spec/reports
|
36
|
+
test/tmp
|
37
|
+
test/version_tmp
|
38
|
+
tmp
|
39
|
+
tmtags
|
40
|
+
tramp
|
data/.rspec
ADDED
data/.travis.yml
ADDED
data/.yardopts
ADDED
data/Gemfile
ADDED
data/LICENSE.md
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
Copyright (c) 2011, Code for America
|
2
|
+
All rights reserved.
|
3
|
+
|
4
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
5
|
+
|
6
|
+
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
7
|
+
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
8
|
+
* Neither the name of Code for America nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
9
|
+
|
10
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.md
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
# SF Park
|
2
|
+
Ruby wrapper for the SF Park API
|
3
|
+
|
4
|
+
## <a name="installation">Installation</a>
|
5
|
+
gem install sfpark
|
6
|
+
|
7
|
+
## <a name="documentation">Documentation</a>
|
8
|
+
[http://rdoc.info/gems/sfpark](http://rdoc.info/gems/sfpark)
|
9
|
+
|
10
|
+
## <a name="ci">Continuous Integration</a>
|
11
|
+
[![Build Status](https://secure.travis-ci.org/codeforamerica/sfpark.png)](http://travis-ci.org/codeforamerica/sfpark)
|
12
|
+
|
13
|
+
## <a name="examples">Usage Examples</a>
|
14
|
+
require 'sfpark'
|
15
|
+
|
16
|
+
@client = SFPark.new
|
17
|
+
@client.availability # Return an array of 25 parking spots
|
18
|
+
@client.availability(:lat => 37.792275,:long => -122.397089,:radius => 0.25, :uom => 'mile') #Return array with specified area
|
19
|
+
|
20
|
+
## <a name="contributing">Contributing</a>
|
21
|
+
In the spirit of [free software](http://www.fsf.org/licensing/essays/free-sw.html), **everyone** is encouraged to help improve this project.
|
22
|
+
|
23
|
+
Here are some ways *you* can contribute:
|
24
|
+
|
25
|
+
* by using alpha, beta, and prerelease versions
|
26
|
+
* by reporting bugs
|
27
|
+
* by suggesting new features
|
28
|
+
* by writing or editing documentation
|
29
|
+
* by writing specifications
|
30
|
+
* by writing code (**no patch is too small**: fix typos, add comments, clean up inconsistent whitespace)
|
31
|
+
* by refactoring code
|
32
|
+
* by resolving [issues](https://github.com/codeforamerica/sfpark/issues)
|
33
|
+
* by reviewing patches
|
34
|
+
* [financially](https://secure.codeforamerica.org/page/contribute)
|
35
|
+
|
36
|
+
## <a name="issues">Submitting an Issue</a>
|
37
|
+
We use the [GitHub issue tracker](https://github.com/codeforamerica/sfpark/issues)
|
38
|
+
to track bugs and features. Before submitting a bug report or feature request,
|
39
|
+
check to make sure it hasn't already been submitted. You can indicate support
|
40
|
+
for an existing issuse by voting it up. When submitting a bug report, please
|
41
|
+
include a [Gist](https://gist.github.com/) that includes a stack trace and any
|
42
|
+
details that may be necessary to reproduce the bug, including your gem version,
|
43
|
+
Ruby version, and operating system. Ideally, a bug report should include a pull
|
44
|
+
request with failing specs.
|
45
|
+
|
46
|
+
## <a name="pulls">Submitting a Pull Request</a>
|
47
|
+
1. Fork the project.
|
48
|
+
2. Create a topic branch.
|
49
|
+
3. Implement your feature or bug fix.
|
50
|
+
4. Add documentation for your feature or bug fix.
|
51
|
+
5. Run <tt>bundle exec rake doc:yard</tt>. If your changes are not 100% documented, go back to step 4.
|
52
|
+
6. Add specs for your feature or bug fix.
|
53
|
+
7. Run <tt>bundle exec rake spec</tt>. If your changes are not 100% covered, go back to step 6.
|
54
|
+
8. Commit and push your changes.
|
55
|
+
9. Submit a pull request. Please do not include changes to the gemspec, version, or history file. (If you want to create your own version for some reason, please do so in a separate commit.)
|
56
|
+
|
57
|
+
## <a name="rubies">Supported Rubies</a>
|
58
|
+
This library aims to support and is [tested
|
59
|
+
against](http://travis-ci.org/codeforamerica/sfpark) the following
|
60
|
+
Ruby implementations:
|
61
|
+
|
62
|
+
* Ruby 1.8.7
|
63
|
+
* Ruby 1.9.2
|
64
|
+
* Ruby 1.9.3
|
65
|
+
* [JRuby](http://www.jruby.org/)
|
66
|
+
* [Rubinius](http://rubini.us/)
|
67
|
+
* [Ruby Enterprise Edition](http://www.rubyenterpriseedition.com/)
|
68
|
+
|
69
|
+
If something doesn't work on one of these interpreters, it should be considered
|
70
|
+
a bug.
|
71
|
+
|
72
|
+
This library may inadvertently work (or seem to work) on other Ruby
|
73
|
+
implementations, however support will only be provided for the versions listed
|
74
|
+
above.
|
75
|
+
|
76
|
+
If you would like this library to support another Ruby version, you may
|
77
|
+
volunteer to be a maintainer. Being a maintainer entails making sure all tests
|
78
|
+
run and pass on that implementation. When something breaks on your
|
79
|
+
implementation, you will be personally responsible for providing patches in a
|
80
|
+
timely fashion. If critical issues for a particular implementation exist at the
|
81
|
+
time of a major release, support for that Ruby version may be dropped.
|
82
|
+
|
83
|
+
## Credits
|
84
|
+
SF Park API - [API](http://sfpark.org/resources/sfpark-availability-service-api-reference/)
|
85
|
+
|
86
|
+
## <a name="copyright">Copyright</a>
|
87
|
+
Copyright (c) 2011 Code for America.
|
88
|
+
See [LICENSE](https://github.com/codeforamerica/sfpark/blob/master/LICENSE.md) for details.
|
89
|
+
|
90
|
+
[![Code for America Tracker](http://stats.codeforamerica.org/codeforamerica/sfpark.png)](http://stats.codeforamerica.org/projects/sfpark)
|
data/Rakefile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
Bundler::GemHelper.install_tasks
|
5
|
+
|
6
|
+
require 'rspec/core/rake_task'
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
8
|
+
|
9
|
+
task :default => :spec
|
10
|
+
task :test => :spec
|
11
|
+
|
12
|
+
require 'yard'
|
13
|
+
namespace :doc do
|
14
|
+
YARD::Rake::YardocTask.new do |task|
|
15
|
+
task.files = ['LICENSE.md', 'lib/**/*.rb']
|
16
|
+
task.options = ['--markup', 'markdown']
|
17
|
+
end
|
18
|
+
end
|
data/lib/sfpark.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'sfpark/configuration'
|
2
|
+
require 'sfpark/client'
|
3
|
+
|
4
|
+
module SFPark
|
5
|
+
extend Configuration
|
6
|
+
class << self
|
7
|
+
# Alias for SFPark::Client.new
|
8
|
+
#
|
9
|
+
# @return [SFPark::Client]
|
10
|
+
def new(options={})
|
11
|
+
SFPark::Client.new(options)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Delegate to SFPark::Client.new
|
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
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'sfpark/connection'
|
2
|
+
require 'sfpark/request'
|
3
|
+
|
4
|
+
require 'sfpark/client/availability'
|
5
|
+
|
6
|
+
module SFPark
|
7
|
+
class Client
|
8
|
+
attr_accessor(*Configuration::VALID_OPTIONS_KEYS)
|
9
|
+
|
10
|
+
def initialize(options={})
|
11
|
+
options = SFPark.options.merge(options)
|
12
|
+
Configuration::VALID_OPTIONS_KEYS.each do |key|
|
13
|
+
send("#{key}=", options[key])
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
include SFPark::Connection
|
18
|
+
include SFPark::Request
|
19
|
+
|
20
|
+
include SFPark::Client::Availability
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module SFPark
|
2
|
+
class Client
|
3
|
+
module Availability
|
4
|
+
|
5
|
+
# Get the availiablity for parking in San Francisco
|
6
|
+
#
|
7
|
+
# @see http://sfpark.org/resources/sfpark-availability-service-api-reference/
|
8
|
+
# @param options [Hash] A customizable set of options.
|
9
|
+
# @option options requestid [String] Request parameter allows correlating a response to a particular request
|
10
|
+
# @option options lat [String] Latitude in decimal format to be specified along with LONG.
|
11
|
+
# @option options long [String] Longitude in decimal format to be specified along with LAT.
|
12
|
+
# @option options radius [String] Search Radius
|
13
|
+
# @option options uom [String] Unit of Measurement for the search radius mile, km, foot, meter, m, yard
|
14
|
+
# @option options type [String] Limit data to specified parking type
|
15
|
+
# @option options method [String] Method to invoke
|
16
|
+
# @option options pricing [String] Include rate information in response values: no, yes
|
17
|
+
# @return [Array<Hashie::Mash>]
|
18
|
+
# @example
|
19
|
+
# SFPark.availability
|
20
|
+
# SFPark.availability(:lat => 37.792275,:long => -122.397089,:radius => 0.25, :uom => 'mile')
|
21
|
+
def availability(options={})
|
22
|
+
get("availabilityservice", options)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'sfpark/version'
|
2
|
+
|
3
|
+
module SFPark
|
4
|
+
# Defines constants and methods related to configuration
|
5
|
+
module Configuration
|
6
|
+
# An array of valid keys in the options hash when configuring a {SfPark::API}
|
7
|
+
VALID_OPTIONS_KEYS = [
|
8
|
+
:adapter,
|
9
|
+
:endpoint,
|
10
|
+
:proxy,
|
11
|
+
:response,
|
12
|
+
:user_agent,
|
13
|
+
:faraday_options].freeze
|
14
|
+
|
15
|
+
# The adapter that will be used to connect if none is set
|
16
|
+
DEFAULT_ADAPTER = :net_http
|
17
|
+
|
18
|
+
# The endpoint that will be used to connect if none is set
|
19
|
+
DEFAULT_ENDPOINT = 'http://api.sfpark.org/sfpark/rest'.freeze
|
20
|
+
|
21
|
+
# The response format appended to the path and sent in the 'Accept' header if none is set
|
22
|
+
#
|
23
|
+
# @note JSON is preferred over XML because it is more concise and faster to parse.
|
24
|
+
DEFAULT_RESPONSE = :json
|
25
|
+
|
26
|
+
# By default, don't use a proxy server
|
27
|
+
DEFAULT_PROXY = nil
|
28
|
+
|
29
|
+
# The value sent in the 'User-Agent' header if none is set
|
30
|
+
DEFAULT_USER_AGENT = "SFPark Ruby Gem #{SFPark::VERSION}".freeze
|
31
|
+
|
32
|
+
DEFAULT_FARADAY_OPTIONS = {}.freeze
|
33
|
+
|
34
|
+
# @private
|
35
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
36
|
+
|
37
|
+
# When this module is extended, set all configuration options to their default values
|
38
|
+
def self.extended(base)
|
39
|
+
base.reset
|
40
|
+
end
|
41
|
+
|
42
|
+
# Convenience method to allow configuration options to be set in a block
|
43
|
+
def configure
|
44
|
+
yield self
|
45
|
+
end
|
46
|
+
|
47
|
+
# Create a hash of options and their values
|
48
|
+
def options
|
49
|
+
options = {}
|
50
|
+
VALID_OPTIONS_KEYS.each{|k| options[k] = send(k)}
|
51
|
+
options
|
52
|
+
end
|
53
|
+
|
54
|
+
# Reset all configuration options to defaults
|
55
|
+
def reset
|
56
|
+
self.adapter = DEFAULT_ADAPTER
|
57
|
+
self.endpoint = DEFAULT_ENDPOINT
|
58
|
+
self.proxy = DEFAULT_PROXY
|
59
|
+
self.user_agent = DEFAULT_USER_AGENT
|
60
|
+
self.response = DEFAULT_RESPONSE
|
61
|
+
self.faraday_options = DEFAULT_FARADAY_OPTIONS
|
62
|
+
self
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'faraday_middleware'
|
2
|
+
|
3
|
+
module SFPark
|
4
|
+
module Connection
|
5
|
+
private
|
6
|
+
|
7
|
+
def connection(options={})
|
8
|
+
merged_options = faraday_options.merge({
|
9
|
+
:headers => {
|
10
|
+
'Accept' => "application/#{response}",
|
11
|
+
'User-Agent' => user_agent
|
12
|
+
},
|
13
|
+
:ssl => {:verify => false},
|
14
|
+
:url => endpoint
|
15
|
+
})
|
16
|
+
|
17
|
+
Faraday.new(merged_options) do |builder|
|
18
|
+
builder.use Faraday::Request::UrlEncoded
|
19
|
+
builder.use Faraday::Response::RaiseError
|
20
|
+
builder.use Faraday::Response::Rashify
|
21
|
+
builder.use Faraday::Response::Mashify
|
22
|
+
builder.use Faraday::Response::ParseJson
|
23
|
+
builder.adapter(Faraday.default_adapter)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module SFPark
|
2
|
+
module Request
|
3
|
+
def get(path, options={})
|
4
|
+
request(:get, path, options)
|
5
|
+
end
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def request(method, path, options)
|
10
|
+
response = connection.send(method) do |request|
|
11
|
+
request.url(path, options)
|
12
|
+
request.params['response'] = 'json'
|
13
|
+
end
|
14
|
+
response.body
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/sfpark.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path('../lib/sfpark/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.add_dependency 'faraday', '~> 0.7.4'
|
6
|
+
gem.add_dependency 'faraday_middleware', '~> 0.7.0'
|
7
|
+
gem.add_dependency 'hashie', '~> 1.1.0'
|
8
|
+
gem.add_dependency 'multi_json', '~> 1.0.2'
|
9
|
+
gem.add_dependency 'rash', '~> 0.3.0'
|
10
|
+
gem.add_development_dependency 'rake', '~> 0.9'
|
11
|
+
gem.add_development_dependency 'rdiscount', '~> 1.6'
|
12
|
+
gem.add_development_dependency 'rspec', '~> 2.6'
|
13
|
+
gem.add_development_dependency 'simplecov', '~> 0.4'
|
14
|
+
gem.add_development_dependency 'webmock', '~> 1.7'
|
15
|
+
gem.add_development_dependency 'yard', '~> 0.7'
|
16
|
+
gem.author = "Ryan Resella"
|
17
|
+
gem.description = %q{Ruby Wrapper for the SF Park API}
|
18
|
+
gem.email = 'ryan@codeforamerica.org'
|
19
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
|
20
|
+
gem.files = `git ls-files`.split("\n")
|
21
|
+
gem.homepage = ''
|
22
|
+
gem.name = 'sfpark'
|
23
|
+
gem.require_paths = ['lib']
|
24
|
+
gem.summary = gem.description
|
25
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
26
|
+
gem.version = SFPark::VERSION
|
27
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Faraday::Response do
|
4
|
+
before do
|
5
|
+
@client = SFPark::Client.new
|
6
|
+
end
|
7
|
+
|
8
|
+
{
|
9
|
+
400 => Faraday::Error::ClientError,
|
10
|
+
401 => Faraday::Error::ClientError,
|
11
|
+
403 => Faraday::Error::ClientError,
|
12
|
+
404 => Faraday::Error::ResourceNotFound,
|
13
|
+
406 => Faraday::Error::ClientError,
|
14
|
+
500 => Faraday::Error::ClientError,
|
15
|
+
501 => Faraday::Error::ClientError,
|
16
|
+
502 => Faraday::Error::ClientError,
|
17
|
+
503 => Faraday::Error::ClientError,
|
18
|
+
}.each do |status, exception|
|
19
|
+
context "when HTTP status is #{status}" do
|
20
|
+
|
21
|
+
before do
|
22
|
+
stub_get("/availabilityservice?response=json").
|
23
|
+
to_return(:status => status, :body => fixture("availability.json"))
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should raise #{exception.name} error" do
|
27
|
+
lambda do
|
28
|
+
@client.availability
|
29
|
+
end.should raise_error exception
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
{"STATUS":"SUCCESS","NUM_RECORDS":"25","MESSAGE":"25 records found","AVAILABILITY_UPDATED_TIMESTAMP":"2011-10-27T14:08:11.378-07:00","AVAILABILITY_REQUEST_TIMESTAMP":"2011-10-27T14:08:11.292-07:00","AVL":[{"TYPE":"OFF","OSPID":"931","NAME":"Civic Center Garage","DESC":"355 McAllister Street","INTER":"McAllister between Larkin & Polk","TEL":"(415) 863-1537","OPHRS":{"OPS":[{"FROM":"Monday","TO":"Friday","BEG":"6:00 AM","END":"12:00 AM"},{"FROM":"Saturday","BEG":"8:00 AM","END":"12:00 AM"},{"FROM":"Sunday","BEG":"9:00 AM","END":"10:00 PM"}]},"OCC":"608","OPER":"843","PTS":"1","LOC":"-122.4177671135,37.7802465669"},{"TYPE":"ON","BFID":"640011","NAME":"Redwood St (101-199)","OCC":"3","OPER":"4","PTS":"2","LOC":"-122.4192828405,37.7806708912,-122.4201217059,37.7805642728"},{"TYPE":"ON","BFID":"442061","NAME":"Golden Gate Ave (601-699)","OCC":"15","OPER":"16","PTS":"2","LOC":"-122.4206608328,37.7809344196,-122.4218356468,37.7807855562"},{"TYPE":"ON","BFID":"542022","NAME":"Larkin St (200-298)","OCC":"1","OPER":"3","PTS":"2","LOC":"-122.4167139409,37.7798410783,-122.4167913901,37.7802293301"},{"TYPE":"ON","BFID":"419042","NAME":"Franklin St (400-598)","OCC":"6","OPER":"6","PTS":"2","LOC":"-122.4214765641,37.7782428083,-122.4216354858,37.7790283645"},{"TYPE":"ON","BFID":"419051","NAME":"Franklin St (501-599)","OCC":"10","OPER":"12","PTS":"2","LOC":"-122.4218175417,37.7790474754,-122.4219603701,37.779757594"},{"TYPE":"ON","BFID":"701042","NAME":"Van Ness Ave (300-498)","OCC":"6","OPER":"6","PTS":"2","LOC":"-122.4199114866,37.7792134379,-122.4200020117,37.7796640515"},{"TYPE":"ON","BFID":"701052","NAME":"Van Ness Ave (500-598)","OCC":"7","OPER":"7","PTS":"2","LOC":"-122.4201267351,37.7802806276,-122.4202504526,37.7808901629"},{"TYPE":"ON","BFID":"701031","NAME":"Van Ness Ave (301-499)","OCC":"3","OPER":"8","PTS":"2","LOC":"-122.4201589217,37.7785515993,-122.4201981493,37.7790243412"},{"TYPE":"ON","BFID":"701032","NAME":"Van Ness Ave (300-498)","OCC":"5","OPER":"6","PTS":"2","LOC":"-122.4198189499,37.7787557835,-122.4199014283,37.7791641521"},{"TYPE":"ON","BFID":"612032","NAME":"Polk St (300-398)","OCC":"10","OPER":"12","PTS":"2","LOC":"-122.4183011467,37.7794659022,-122.4184238584,37.7800704084"},{"TYPE":"ON","BFID":"419052","NAME":"Franklin St (466-598)","OCC":"3","OPER":"7","PTS":"2","LOC":"-122.4216807483,37.7792536713,-122.4217873667,37.7797777107"},{"TYPE":"ON","BFID":"442072","NAME":"Golden Gate Ave (700-798)","OCC":"8","OPER":"17","PTS":"2","LOC":"-122.4222450211,37.7808690404,-122.4235083484,37.780708107"},{"TYPE":"ON","BFID":"442062","NAME":"Golden Gate Ave (600-698)","OCC":"11","OPER":"13","PTS":"2","LOC":"-122.4207402937,37.7810601489,-122.4218507343,37.7809193321"},{"TYPE":"ON","BFID":"563042","NAME":"Mcallister St (400-498)","OCC":"12","OPER":"13","PTS":"2","LOC":"-122.419091732,37.780308791,-122.4200211225,37.7801901026"},{"TYPE":"ON","BFID":"563032","NAME":"Mcallister St (300-398)","OCC":"6","OPER":"7","PTS":"2","LOC":"-122.4174542346,37.7805169986,-122.4184771676,37.780387246"},{"TYPE":"ON","BFID":"701041","NAME":"Van Ness Ave (301-499)","OCC":"5","OPER":"5","PTS":"2","LOC":"-122.4202253068,37.7791571112,-122.4203791994,37.7796399115"},{"TYPE":"ON","BFID":"563031","NAME":"Mcallister St (301-399)","OCC":"13","OPER":"16","PTS":"2","LOC":"-122.4171685778,37.7803480185,-122.4177942064,37.7802675518"},{"TYPE":"ON","BFID":"563051","NAME":"Mcallister St (501-599)","OCC":"8","OPER":"10","PTS":"2","LOC":"-122.4205019111,37.7800040233,-122.4217109234,37.7798501308"},{"TYPE":"ON","BFID":"563052","NAME":"Mcallister St (500-598)","OCC":"3","OPER":"15","PTS":"2","LOC":"-122.4207986321,37.7800915309,-122.4217742909,37.7799668075"},{"TYPE":"ON","BFID":"542021","NAME":"Larkin St (201-299)","OCC":"7","OPER":"7","PTS":"2","LOC":"-122.4169814927,37.779933615,-122.4170207202,37.7801307584"},{"TYPE":"ON","BFID":"419041","NAME":"Franklin St (401-499)","OCC":"4","OPER":"9","PTS":"2","LOC":"-122.4216395092,37.7781683766,-122.4217521625,37.7787276202"},{"TYPE":"ON","BFID":"701051","NAME":"Van Ness Ave (501-599)","OCC":"10","OPER":"11","PTS":"2","LOC":"-122.4204455844,37.7802454235,-122.4205703078,37.7808619996"},{"TYPE":"ON","BFID":"542011","NAME":"Larkin St (101-199)","OCC":"7","OPER":"14","PTS":"2","LOC":"-122.4167682559,37.7788654194,-122.4168587809,37.7793200563"},{"TYPE":"ON","BFID":"442071","NAME":"Golden Gate Ave (701-799)","OCC":"2","OPER":"11","PTS":"2","LOC":"-122.4222550795,37.780732247,-122.4235234359,37.7805703078"}]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"STATUS":"SUCCESS","NUM_RECORDS":"67","MESSAGE":"67 records found","AVAILABILITY_UPDATED_TIMESTAMP":"2011-10-27T14:07:41.749-07:00","AVAILABILITY_REQUEST_TIMESTAMP":"2011-10-27T14:07:41.655-07:00","AVL":[{"TYPE":"OFF","OSPID":"934","NAME":"Golden Gateway Garage","DESC":"250 Clay Street","INTER":"Clay between Front & Davis","TEL":"(415) 433-4722","OPHRS":{"OPS":[{"FROM":"Monday","TO":"Friday","BEG":"4:00 AM","END":"10:00 PM"},{"FROM":"Saturday","BEG":"7:00 AM","END":"10:00 PM"},{"FROM":"Sunday","BEG":"9:00 AM","END":"10:00 PM"}]},"OCC":"1054","OPER":"1095","PTS":"1","LOC":"-122.3986032,37.79544154"},{"TYPE":"ON","BFID":"651001","NAME":"Sansome St (1-99)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.4007030779,37.790581372,-122.4007936029,37.7910219272"},{"TYPE":"ON","BFID":"380002","NAME":"Davis St (2-98)","OCC":"1","OPER":"3","PTS":"2","LOC":"-122.3973757795,37.792760008,-122.3974994971,37.7933584792"},{"TYPE":"ON","BFID":"650011","NAME":"Sacramento St (101-199)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3967843492,37.7945222289,-122.397572923,37.7944216455"},{"TYPE":"ON","BFID":"606011","NAME":"Pine St (101-199)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3986944277,37.792336552,-122.3995503923,37.7922289278"},{"TYPE":"ON","BFID":"568003","NAME":"Mission St (35-99)","OCC":"7","OPER":"10","PTS":"2","LOC":"-122.393262925,37.7930637699,-122.3938030577,37.7926352847"},{"TYPE":"ON","BFID":"380001","NAME":"Davis St (1-99)","OCC":"2","OPER":"4","PTS":"2","LOC":"-122.3975186079,37.7926704888,-122.3976483605,37.793299135"},{"TYPE":"ON","BFID":"380022","NAME":"Davis St (200-398)","OCC":"0","OPER":"1","PTS":"2","LOC":"-122.3977318447,37.7945564273,-122.3978585798,37.7951810501"},{"TYPE":"ON","BFID":"651012","NAME":"Sansome St (100-198)","OCC":"1","OPER":"1","PTS":"2","LOC":"-122.4007131362,37.7914031382,-122.4007875679,37.7917632267"},{"TYPE":"ON","BFID":"568002","NAME":"Mission St (2-34)","OCC":"1","OPER":"1","PTS":"2","LOC":"-122.3928002414,37.7936552002,-122.3931090324,37.7934087709"},{"TYPE":"ON","BFID":"422021","NAME":"Front St (201-299)","OCC":"2","OPER":"3","PTS":"2","LOC":"-122.3989307986,37.7936883927,-122.3990062362,37.7941762221"},{"TYPE":"ON","BFID":"665012","NAME":"Steuart St (100-198)","OCC":"11","OPER":"17","PTS":"2","LOC":"-122.393068799,37.793032589,-122.3918446993,37.7920559244"},{"TYPE":"ON","BFID":"324032","NAME":"Battery St (300-398)","OCC":"0","OPER":"2","PTS":"2","LOC":"-122.4001046067,37.7943049688,-122.4002162543,37.7948481191"},{"TYPE":"ON","BFID":"380031","NAME":"Davis St (301-399)","OCC":"9","OPER":"11","PTS":"2","LOC":"-122.3980818749,37.7954475961,-122.3982035808,37.796047073"},{"TYPE":"ON","BFID":"606031","NAME":"Pine St (301-399)","OCC":"7","OPER":"10","PTS":"2","LOC":"-122.4011265339,37.7920297727,-122.4024381412,37.7918628043"},{"TYPE":"ON","BFID":"561002","NAME":"Main St (2-98)","OCC":"2","OPER":"3","PTS":"2","LOC":"-122.3964272782,37.7929330115,-122.3951579159,37.7919201368"},{"TYPE":"ON","BFID":"568004","NAME":"Mission St (36-98)","OCC":"6","OPER":"8","PTS":"2","LOC":"-122.3939800845,37.7926986522,-122.3934148059,37.7931472541"},{"TYPE":"ON","BFID":"661001","NAME":"Stevenson St (1-37)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3987688594,37.7903832227,-122.3992053913,37.7900382217"},{"TYPE":"ON","BFID":"324021","NAME":"Battery St (201-299)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.4000673909,37.7933393683,-122.4002001609,37.793983102"},{"TYPE":"ON","BFID":"386022","NAME":"Drumm St (200-298)","OCC":"4","OPER":"5","PTS":"2","LOC":"-122.3966596258,37.7956276403,-122.3967752967,37.7962180648"},{"TYPE":"ON","BFID":"665011","NAME":"Steuart St (101-199)","OCC":"1","OPER":"7","PTS":"2","LOC":"-122.392966204,37.7931754174,-122.3916908067,37.7921575136"},{"TYPE":"ON","BFID":"359012","NAME":"Clay St (100-198)","OCC":"12","OPER":"13","PTS":"2","LOC":"-122.3970046268,37.7954828002,-122.3978314222,37.7953771877"},{"TYPE":"ON","BFID":"324022","NAME":"Battery St (200-298)","OCC":"0","OPER":"2","PTS":"2","LOC":"-122.3999064575,37.7933433917,-122.4000432509,37.7940112653"},{"TYPE":"ON","BFID":"650041","NAME":"Sacramento St (401-499)","OCC":"2","OPER":"2","PTS":"2","LOC":"-122.4003480185,37.7940625629,-122.4011607322,37.793958962"},{"TYPE":"ON","BFID":"651022","NAME":"Sansome St (200-298)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.4008951921,37.7922802253,-122.4010309797,37.7929370348"},{"TYPE":"ON","BFID":"460021","NAME":"Halleck St (101-149)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.4013840274,37.7935013076,-122.4015520016,37.7934801851"},{"TYPE":"ON","BFID":"386011","NAME":"Drumm St (101-199)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3967179642,37.7946710923,-122.3968074834,37.7951146651"},{"TYPE":"ON","BFID":"606002","NAME":"Pine St (2-98)","OCC":"5","OPER":"6","PTS":"2","LOC":"-122.3976644538,37.7925900221,-122.3984671092,37.7924874271"},{"TYPE":"ON","BFID":"420001","NAME":"Fremont St (1-99)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3975528063,37.7912502515,-122.3967773084,37.7906326695"},{"TYPE":"ON","BFID":"201001","NAME":"1st St (1-99)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3989076645,37.7909273788,-122.3976322671,37.7899245625"},{"TYPE":"ON","BFID":"666001","NAME":"Sutter St (51-99)","OCC":"0","OPER":"1","PTS":"2","LOC":"-122.4007825387,37.7901649567,-122.4020478777,37.7900030175"},{"TYPE":"ON","BFID":"328002","NAME":"Beale St (2-98)","OCC":"3","OPER":"4","PTS":"2","LOC":"-122.3972812311,37.7922017703,-122.396047073,37.7912180648"},{"TYPE":"ON","BFID":"651021","NAME":"Sansome St (201-299)","OCC":"2","OPER":"2","PTS":"2","LOC":"-122.4010440555,37.7922420036,-122.4011748139,37.7928766848"},{"TYPE":"ON","BFID":"422032","NAME":"Front St (300-398)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3989187286,37.7944669081,-122.3990474754,37.7950985717"},{"TYPE":"ON","BFID":"386001","NAME":"Drumm St (7-99)","OCC":"4","OPER":"7","PTS":"2","LOC":"-122.3965379199,37.7937869644,-122.3966686783,37.7944276805"},{"TYPE":"ON","BFID":"328001","NAME":"Beale St (1-99)","OCC":"9","OPER":"9","PTS":"2","LOC":"-122.3970891169,37.7922751961,-122.3958911688,37.7913367532"},{"TYPE":"ON","BFID":"568001","NAME":"Mission St (1-33)","OCC":"3","OPER":"3","PTS":"2","LOC":"-122.3927398914,37.7934781734,-122.3930094548,37.7932649366"},{"TYPE":"ON","BFID":"422011","NAME":"Front St (101-199)","OCC":"0","OPER":"1","PTS":"2","LOC":"-122.3986873868,37.7925005029,-122.3988372561,37.7932247033"},{"TYPE":"ON","BFID":"359011","NAME":"Clay St (101-199)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3975568296,37.795338966,-122.397729833,37.7953178435"},{"TYPE":"ON","BFID":"422002","NAME":"Front St (2-98)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3984842084,37.7922892778,-122.3984701267,37.7922208811"},{"TYPE":"ON","BFID":"422012","NAME":"Front St (100-198)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3985405351,37.7925598471,-122.3986813518,37.7932438141"},{"TYPE":"ON","BFID":"606012","NAME":"Pine St (100-198)","OCC":"2","OPER":"2","PTS":"2","LOC":"-122.398734661,37.7924421646,-122.3996509757,37.7923264937"},{"TYPE":"ON","BFID":"380011","NAME":"Davis St (101-199)","OCC":"4","OPER":"8","PTS":"2","LOC":"-122.3977690606,37.7938915711,-122.3978525448,37.7942848521"},{"TYPE":"ON","BFID":"386012","NAME":"Drumm St (100-198)","OCC":"2","OPER":"2","PTS":"2","LOC":"-122.3964765641,37.7947254074,-122.3966073225,37.7953701469"},{"TYPE":"ON","BFID":"420002","NAME":"Fremont St (2-98)","OCC":"2","OPER":"3","PTS":"2","LOC":"-122.397735868,37.7911929189,-122.3968638101,37.7904968819"},{"TYPE":"ON","BFID":"650021","NAME":"Sacramento St (201-299)","OCC":"0","OPER":"1","PTS":"2","LOC":"-122.3980114665,37.7943663247,-122.3987799236,37.794267753"},{"TYPE":"ON","BFID":"422001","NAME":"Front St (1-99)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3985566284,37.7918607926,-122.3986391068,37.7922711728"},{"TYPE":"ON","BFID":"386021","NAME":"Drumm St (201-299)","OCC":"5","OPER":"5","PTS":"2","LOC":"-122.3969020318,37.7955773486,-122.3970348019,37.7962321464"},{"TYPE":"ON","BFID":"569002","NAME":"Market St (2-198)","OCC":"3","OPER":"4","PTS":"2","LOC":"-122.3948551599,37.7945956548,-122.3949617783,37.7945161939"},{"TYPE":"ON","BFID":"380012","NAME":"Davis St (100-198)","OCC":"2","OPER":"3","PTS":"2","LOC":"-122.3975648763,37.7936793402,-122.3976976463,37.7943049688"},{"TYPE":"ON","BFID":"420021","NAME":"Fremont St (201-299)","OCC":"5","OPER":"6","PTS":"2","LOC":"-122.3949446791,37.7891882921,-122.3942295313,37.7886179843"},{"TYPE":"ON","BFID":"830001","NAME":"The Embarcadero (101-199)","OCC":"12","OPER":"16","PTS":"2","LOC":"-122.3944407564,37.7950170992,-122.3949829008,37.7958308187"},{"TYPE":"ON","BFID":"651011","NAME":"Sansome St (101-199)","OCC":"0","OPER":"2","PTS":"2","LOC":"-122.4008509354,37.7912965198,-122.4009847113,37.7919472943"},{"TYPE":"ON","BFID":"651032","NAME":"Sansome St (300-398)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.4010963589,37.7932578958,-122.4012311406,37.7939187286"},{"TYPE":"ON","BFID":"831001","NAME":"The Embarcadero (101-199)","OCC":"6","OPER":"9","PTS":"2","LOC":"-122.394091732,37.7946871857,-122.3935445584,37.7943301147"},{"TYPE":"ON","BFID":"665002","NAME":"Steuart St (2-78)","OCC":"2","OPER":"5","PTS":"2","LOC":"-122.3946157715,37.7942657413,-122.394043452,37.7938090927"},{"TYPE":"ON","BFID":"606001","NAME":"Pine St (1-99)","OCC":"4","OPER":"5","PTS":"2","LOC":"-122.3977318447,37.7924542346,-122.3984349226,37.7923647153"},{"TYPE":"ON","BFID":"359032","NAME":"Clay St (302-398)","OCC":"7","OPER":"10","PTS":"2","LOC":"-122.3993260913,37.7952353651,-122.4001619392,37.7951287467"},{"TYPE":"ON","BFID":"422031","NAME":"Front St (301-399)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3990897204,37.7944296922,-122.3992184671,37.795066385"},{"TYPE":"ON","BFID":"650031","NAME":"Sacramento St (301-399)","OCC":"0","OPER":"1","PTS":"2","LOC":"-122.3991711929,37.7942134379,-122.4000020117,37.7941078254"},{"TYPE":"ON","BFID":"606032","NAME":"Pine St (300-398)","OCC":"5","OPER":"5","PTS":"2","LOC":"-122.4011084289,37.7921384027,-122.4024441762,37.7919684168"},{"TYPE":"ON","BFID":"324031","NAME":"Battery St (301-399)","OCC":"2","OPER":"7","PTS":"2","LOC":"-122.4002474351,37.7942164554,-122.4003661235,37.7947917924"},{"TYPE":"ON","BFID":"201002","NAME":"1st St (2-98)","OCC":"4","OPER":"7","PTS":"2","LOC":"-122.3989941662,37.7907925971,-122.3978696439,37.7899084691"},{"TYPE":"ON","BFID":"422022","NAME":"Front St (200-298)","OCC":"1","OPER":"1","PTS":"2","LOC":"-122.3988322269,37.7939780728,-122.3987316435,37.7934992959"},{"TYPE":"ON","BFID":"380021","NAME":"Davis St (201-399)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.3979139006,37.7945755381,-122.3979973848,37.79498793"},{"TYPE":"ON","BFID":"651031","NAME":"Sansome St (343-399)","OCC":"0","OPER":"0","PTS":"2","LOC":"-122.4013216657,37.7935928385,-122.4013749749,37.7938523436"},{"TYPE":"ON","BFID":"359022","NAME":"Clay St (200-300)","OCC":"2","OPER":"2","PTS":"2","LOC":"-122.3981452424,37.7953862402,-122.3991098371,37.7952625226"}]}
|
data/spec/helper.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
$:.unshift File.expand_path('..', __FILE__)
|
2
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
3
|
+
require 'simplecov'
|
4
|
+
SimpleCov.start
|
5
|
+
require 'sfpark'
|
6
|
+
require 'rspec'
|
7
|
+
require 'webmock/rspec'
|
8
|
+
|
9
|
+
def a_get(url)
|
10
|
+
a_request(:get, sfpark_url(url))
|
11
|
+
end
|
12
|
+
|
13
|
+
def stub_get(url)
|
14
|
+
stub_request(:get, sfpark_url(url))
|
15
|
+
end
|
16
|
+
|
17
|
+
def fixture_path
|
18
|
+
File.expand_path("../fixtures", __FILE__)
|
19
|
+
end
|
20
|
+
|
21
|
+
def fixture(file)
|
22
|
+
File.new(fixture_path + '/' + file)
|
23
|
+
end
|
24
|
+
|
25
|
+
def sfpark_url(url)
|
26
|
+
"http://api.sfpark.org/sfpark/rest#{url}"
|
27
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe SFPark::Client::Availability do
|
4
|
+
before do
|
5
|
+
@client = SFPark.new
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "#availability" do
|
9
|
+
context "with no query parameters" do
|
10
|
+
before do
|
11
|
+
stub_get("/availabilityservice?response=json").
|
12
|
+
to_return(:status => 200, :body => fixture("availability.json"))
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return search the number of records available" do
|
16
|
+
search = @client.availability
|
17
|
+
search.num_records.should == "25"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "with query paramaters" do
|
22
|
+
before do
|
23
|
+
stub_get("/availabilityservice?lat=37.792275&long=-122.397089&radius=0.25&uom=mile&response=json").
|
24
|
+
to_return(:status => 200, :body => fixture("availability_params.json"))
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return the num of records available" do
|
28
|
+
search = @client.availability(:lat => 37.792275,:long => -122.397089,:radius => 0.25, :uom => 'mile')
|
29
|
+
search.num_records.should == "67"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
data/spec/sfpark_spec.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe SFPark do
|
4
|
+
after do
|
5
|
+
SFPark.reset
|
6
|
+
end
|
7
|
+
|
8
|
+
describe ".respond_to?" do
|
9
|
+
it "should be true if method exists" do
|
10
|
+
SFPark.respond_to?(:new, true).should be_true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe ".new" do
|
15
|
+
it "should be a SFPark::Client" do
|
16
|
+
SFPark.new.should be_a SFPark::Client
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe ".delegate" do
|
21
|
+
it "should delegate missing methods to SFPark::Client" do
|
22
|
+
stub_get("/availabilityservice?response=json").
|
23
|
+
to_return(:status => 200, :body => fixture("availability.json"))
|
24
|
+
records = SFPark.availability
|
25
|
+
records.num_records.should == "25"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,194 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sfpark
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ryan Resella
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-10-28 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: faraday
|
16
|
+
requirement: &70135710220620 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.7.4
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70135710220620
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: faraday_middleware
|
27
|
+
requirement: &70135710220120 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.7.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70135710220120
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: hashie
|
38
|
+
requirement: &70135710219660 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.1.0
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70135710219660
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: multi_json
|
49
|
+
requirement: &70135710219200 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.2
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70135710219200
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rash
|
60
|
+
requirement: &70135710218740 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.3.0
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70135710218740
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: &70135710218280 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0.9'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70135710218280
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rdiscount
|
82
|
+
requirement: &70135710217820 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '1.6'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70135710217820
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: rspec
|
93
|
+
requirement: &70135710217360 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '2.6'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70135710217360
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: simplecov
|
104
|
+
requirement: &70135710216900 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0.4'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *70135710216900
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: webmock
|
115
|
+
requirement: &70135710247900 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ~>
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '1.7'
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *70135710247900
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: yard
|
126
|
+
requirement: &70135710247440 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ~>
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0.7'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *70135710247440
|
135
|
+
description: Ruby Wrapper for the SF Park API
|
136
|
+
email: ryan@codeforamerica.org
|
137
|
+
executables: []
|
138
|
+
extensions: []
|
139
|
+
extra_rdoc_files: []
|
140
|
+
files:
|
141
|
+
- .gemtest
|
142
|
+
- .gitignore
|
143
|
+
- .rspec
|
144
|
+
- .travis.yml
|
145
|
+
- .yardopts
|
146
|
+
- Gemfile
|
147
|
+
- LICENSE.md
|
148
|
+
- README.md
|
149
|
+
- Rakefile
|
150
|
+
- lib/sfpark.rb
|
151
|
+
- lib/sfpark/client.rb
|
152
|
+
- lib/sfpark/client/availability.rb
|
153
|
+
- lib/sfpark/configuration.rb
|
154
|
+
- lib/sfpark/connection.rb
|
155
|
+
- lib/sfpark/request.rb
|
156
|
+
- lib/sfpark/version.rb
|
157
|
+
- sfpark.gemspec
|
158
|
+
- spec/faraday/response_spec.rb
|
159
|
+
- spec/fixtures/availability.json
|
160
|
+
- spec/fixtures/availability_params.json
|
161
|
+
- spec/helper.rb
|
162
|
+
- spec/sfpark/availability_spec.rb
|
163
|
+
- spec/sfpark_spec.rb
|
164
|
+
homepage: ''
|
165
|
+
licenses: []
|
166
|
+
post_install_message:
|
167
|
+
rdoc_options: []
|
168
|
+
require_paths:
|
169
|
+
- lib
|
170
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
requirements: []
|
183
|
+
rubyforge_project:
|
184
|
+
rubygems_version: 1.8.6
|
185
|
+
signing_key:
|
186
|
+
specification_version: 3
|
187
|
+
summary: Ruby Wrapper for the SF Park API
|
188
|
+
test_files:
|
189
|
+
- spec/faraday/response_spec.rb
|
190
|
+
- spec/fixtures/availability.json
|
191
|
+
- spec/fixtures/availability_params.json
|
192
|
+
- spec/helper.rb
|
193
|
+
- spec/sfpark/availability_spec.rb
|
194
|
+
- spec/sfpark_spec.rb
|