blink_api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6497e979696c761be235d661f090df52577d9760
4
+ data.tar.gz: ff315f0652f3b7a7d2034ced5b21fcb3cdaaefd8
5
+ SHA512:
6
+ metadata.gz: 27d212d07839d9bae4a510f2e37fea0face27c0aafaef3e136fff999acd23a8ddb8615e0b7551a051cd295bf03248d4fbf072b8e76442f6e86b9ef706c91a985
7
+ data.tar.gz: a7a157c3cb32211069ff8ef393ef95c5a2b5703d28e6046dbbaf5fa97a26c53deb545b58dff0aec922b818b28768da88741a48ad936809095e6241c35653e257
data/.gitignore ADDED
@@ -0,0 +1,19 @@
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
18
+ .rbenv-gemsets
19
+ .ruby-version
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.0
6
+ - 2.1.1
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in blink_api.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Kyle Conarro
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,99 @@
1
+ # Blink API Client [![Build Status](https://travis-ci.org/kconarro14/blink_api.svg?branch=master)](https://travis-ci.org/kconarro14/blink_api) [![Code Climate](https://codeclimate.com/github/kconarro14/blink_api.png)](https://codeclimate.com/github/kconarro14/blink_api) [![Dependency Status](https://gemnasium.com/kconarro14/blink_api.svg)](https://gemnasium.com/kconarro14/blink_api)
2
+
3
+ A Ruby wrapper for the [Blink Network API](http://www.blinknetwork.com/developer.html)
4
+
5
+ ## Usage
6
+
7
+ Create a client with your API key
8
+
9
+ ```ruby
10
+ client = BlinkApi::Client.create(:api_key => 'mykey') # uses ENV['BLINK_API_KEY'] by default
11
+ ```
12
+
13
+ Find locations using the __Locations__ endpoint:
14
+
15
+ ```ruby
16
+ lat = 35
17
+ long = -85
18
+ lat_range = 5
19
+ long_range = 5
20
+
21
+ client.locations.find(lat, long, lat_range, long_range)
22
+ => [{"id"=>91316,
23
+ "latitude"=>35.903453,
24
+ "longitude"=>-84.116367,
25
+ "name"=>"Calhoun's Pelissippi",
26
+ "address1"=>"10020 Kingston Pike",
27
+ "address2"=>"",
28
+ "city"=>"Knoxville",
29
+ "state"=>"TN",
30
+ "zip"=>"37923",
31
+ "country"=>"US",
32
+ # ...
33
+ }]
34
+ ```
35
+
36
+ Search for stations by name using the __Search__ endpoint:
37
+
38
+ ```ruby
39
+ lat = 35
40
+ long = -85
41
+
42
+ client.search.query('City of Shelbyville', lat, long)
43
+ => [{"id"=>61186,
44
+ "latitude"=>35.483724,
45
+ "longitude"=>-86.461214,
46
+ "name"=>"City of Shelbyville",
47
+ "address1"=>"201 N Spring Street",
48
+ "address2"=>"",
49
+ "city"=>"Shelbyville",
50
+ "state"=>"TN",
51
+ "zip"=>"37160",
52
+ "country"=>"US",
53
+ # ...
54
+ }]
55
+ ```
56
+
57
+ Check the status of a specific location using the __Status__ endpoint:
58
+
59
+ ```ruby
60
+ location_id = 91316
61
+
62
+ client.status.for_location(location_id)
63
+ => {"id"=>91316,
64
+ "latitude"=>35.903453,
65
+ "longitude"=>-84.116367,
66
+ "name"=>"Calhoun's Pelissippi",
67
+ "address1"=>"10020 Kingston Pike",
68
+ "address2"=>"",
69
+ "city"=>"Knoxville",
70
+ "state"=>"TN",
71
+ "zip"=>"37923",
72
+ "country"=>"US",
73
+ # ...
74
+ }
75
+ ```
76
+
77
+ *For more details about the API endpoints, download Blink's [API docs](http://www.blinknetwork.com/file/17254/BLINK+API+MAP+20140128.1+.pdf).*
78
+
79
+ ## Installation
80
+
81
+ Add this line to your application's Gemfile:
82
+
83
+ gem 'blink_api'
84
+
85
+ And then execute:
86
+
87
+ $ bundle
88
+
89
+ Or install it yourself as:
90
+
91
+ $ gem install blink_api
92
+
93
+ ## Contributing
94
+
95
+ 1. Fork it ( http://github.com/<my-github-username>/blink_api/fork )
96
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
97
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
98
+ 4. Push to the branch (`git push origin my-new-feature`)
99
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
data/blink_api.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'blink_api/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "blink_api"
8
+ spec.version = BlinkApi::VERSION
9
+ spec.authors = ["Kyle Conarro"]
10
+ spec.email = ["kyle.conarro@gmail.com"]
11
+ spec.summary = %q{Ruby wrapper for the Blink Network charging station API}
12
+ spec.description = %q{Ruby wrapper for the Blink Network charging station API}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "vcr"
25
+ spec.add_development_dependency "webmock"
26
+
27
+ spec.add_runtime_dependency 'saddle'
28
+ end
@@ -0,0 +1,29 @@
1
+ module BlinkApi
2
+ class Client < Saddle::Client
3
+
4
+ def self.api_key
5
+ BlinkApi.configuration.api_key
6
+ end
7
+
8
+ def self.host
9
+ 'api.blinknetwork.com'
10
+ end
11
+
12
+ def self.path_prefix
13
+ 'map/v1'
14
+ end
15
+
16
+ def self.use_ssl
17
+ true
18
+ end
19
+
20
+ def self.default_options
21
+ super.merge(:api_key => api_key)
22
+ end
23
+
24
+ def self.additional_middlewares
25
+ [:klass => FaradayMiddleware::Request::ApiKey, :args => []]
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,10 @@
1
+ module BlinkApi
2
+ class Configuration
3
+ attr_accessor :api_key
4
+
5
+ def initialize
6
+ @api_key = ENV['BLINK_API_KEY']
7
+ end
8
+ end
9
+
10
+ end
@@ -0,0 +1,14 @@
1
+ require 'saddle/endpoint'
2
+
3
+
4
+ module BlinkApi
5
+ module Endpoints
6
+
7
+ class Locations < Saddle::TraversalEndpoint
8
+ def find lat, long, lat_range, long_range, options={}
9
+ get nil, {:lat => lat, :lng => long, :latd => lat_range, :lngd => long_range}.merge(options)
10
+ end
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ require 'saddle/endpoint'
2
+
3
+
4
+ module BlinkApi
5
+ module Endpoints
6
+
7
+ class Search < Saddle::TraversalEndpoint
8
+ def query query, lat, long, options={}
9
+ get nil, {:q => query, :lat => lat, :lng => long}.merge(options)
10
+ end
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ require 'saddle/endpoint'
2
+
3
+
4
+ module BlinkApi
5
+ module Endpoints
6
+
7
+ class Status < Saddle::TraversalEndpoint
8
+ def for_location location_id
9
+ get nil, :id => location_id
10
+ end
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ module BlinkApi
2
+ VERSION = "0.0.1"
3
+ end
data/lib/blink_api.rb ADDED
@@ -0,0 +1,24 @@
1
+ require 'saddle'
2
+ require 'faraday_middleware/request/api_key'
3
+
4
+ require "blink_api/version"
5
+ require "blink_api/client"
6
+ require "blink_api/configuration"
7
+
8
+ require "blink_api/endpoints/locations"
9
+ require "blink_api/endpoints/search"
10
+ require "blink_api/endpoints/status"
11
+
12
+ module BlinkApi
13
+ extend self
14
+
15
+ attr_accessor :configuration
16
+
17
+ def configuration
18
+ @configuration ||= Configuration.new
19
+ end
20
+
21
+ def configure
22
+ yield(configuration)
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ require 'faraday'
2
+
3
+ module FaradayMiddleware
4
+ module Request
5
+
6
+ # Public: Adds the api key as a url param if present
7
+
8
+ class ApiKey < Faraday::Middleware
9
+ def call(env)
10
+ api_key = env[:request][:client_options][:api_key]
11
+
12
+ if api_key
13
+ env[:url].query = env[:url].query ? "#{env[:url].query}&key=#{api_key}" : "key=#{api_key}"
14
+ end
15
+
16
+ @app.call env
17
+ end
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe BlinkApi::Client do
4
+
5
+ describe '.host' do
6
+ it "returns the blink api host" do
7
+ expect(BlinkApi::Client.host).to eql('api.blinknetwork.com')
8
+ end
9
+ end
10
+
11
+ describe '.path_prefix' do
12
+ it "returns the blink api prefix" do
13
+ expect(BlinkApi::Client.path_prefix).to eql('map/v1')
14
+ end
15
+ end
16
+
17
+ describe '.use_ssl' do
18
+ it "uses ssl" do
19
+ expect(BlinkApi::Client.use_ssl).to be_true
20
+ end
21
+ end
22
+
23
+ describe '.api_key' do
24
+ after { BlinkApi.configuration = BlinkApi::Configuration.new } # to reset api key
25
+
26
+ it "returns the " do
27
+ BlinkApi.configuration.api_key = 'mykey'
28
+ expect(BlinkApi::Client.api_key).to eql('mykey')
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe BlinkApi::Endpoints::Locations do
4
+
5
+ let(:client) { BlinkApi::Client.create }
6
+ let(:params) { {:lat => 33.83656, :long => -84.38846, :latd => 1, :lngd => 1} }
7
+
8
+ describe '#find' do
9
+ it 'gets a list of locations' do
10
+ VCR.use_cassette('endpoints/locations') do
11
+ response = client.locations.find(params[:lat], params[:long], params[:latd], params[:lngd])
12
+ expect(response).to be_an_instance_of(Array)
13
+ expect(response.first).to be_an_instance_of(Hash)
14
+ end
15
+ end
16
+
17
+ it 'fails without required params' do
18
+ expect { client.locations.find(params[:lat], params[:long]) }.to raise_error(ArgumentError)
19
+ end
20
+ end
21
+
22
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe BlinkApi::Endpoints::Search do
4
+
5
+ let(:client) { BlinkApi::Client.create }
6
+ let(:params) { {:lat => 33.83656, :long => -84.38846, :latd => 1, :lngd => 1} }
7
+
8
+ describe '#query' do
9
+ it 'gets a list of locations' do
10
+ VCR.use_cassette('endpoints/search') do
11
+ response = client.search.query('Atlanta Tech Village', params[:lat], params[:long], params)
12
+ expect(response).to be_an_instance_of(Array)
13
+ expect(response.first).to be_an_instance_of(Hash)
14
+ end
15
+ end
16
+
17
+ it 'fails without required params' do
18
+ expect { client.search.query('test', params[:lat]) }.to raise_error(ArgumentError)
19
+ end
20
+ end
21
+
22
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe BlinkApi::Endpoints::Status do
4
+
5
+ let(:client) { BlinkApi::Client.create }
6
+
7
+ describe '#for_location' do
8
+ it 'gets the status of a location' do
9
+ VCR.use_cassette('endpoints/status') do
10
+ response = client.status.for_location(132742)
11
+ expect(response).to be_an_instance_of(Hash)
12
+ end
13
+ end
14
+
15
+ it 'fails without required params' do
16
+ expect { client.status.for_location }.to raise_error(ArgumentError)
17
+ end
18
+ end
19
+
20
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe BlinkApi do
4
+
5
+ after do
6
+ BlinkApi.configuration = BlinkApi::Configuration.new # to reset api key
7
+ end
8
+
9
+ describe '#configure' do
10
+ it "configures the api key" do
11
+ BlinkApi.configure do |config|
12
+ config.api_key = 'mykey'
13
+ end
14
+ expect(BlinkApi::Client.api_key).to eql('mykey')
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,16 @@
1
+ require 'blink_api'
2
+ require 'webmock/rspec'
3
+ require 'vcr'
4
+
5
+ VCR.configure do |c|
6
+ c.allow_http_connections_when_no_cassette = true
7
+ # the directory where your cassettes will be saved
8
+ c.cassette_library_dir = 'spec/support/vcr'
9
+ # your HTTP request service. You can also use fakeweb, webmock, and more
10
+ c.hook_into :webmock
11
+ end
12
+
13
+ RSpec.configure do |config|
14
+ config.color_enabled = true # Use color in STDOUT
15
+ config.order = 'random'
16
+ end
@@ -0,0 +1,94 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.blinknetwork.com/map/v1/locations?lat=33.83656&latd=1&lng=-84.38846&lngd=1
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - BlinkApi::Client 0.0.1
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Fri, 04 Apr 2014 01:00:47 GMT
23
+ Server:
24
+ - Apache
25
+ Cache-Control:
26
+ - max-age=300, must-revalidate
27
+ Appserver:
28
+ - www3
29
+ Content-Type:
30
+ - application/json;charset=UTF-8
31
+ Transfer-Encoding:
32
+ - chunked
33
+ body:
34
+ encoding: UTF-8
35
+ string: '[{"id":111197,"encid":"MTExMTk3","latitude":33.841204,"longitude":-84.384574,"name":"Dorsey
36
+ Alston Realtors","address1":"100 W. Paces Ferry Road","address2":"","city":"Atlanta","state":"GA","zip":"30305","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":1,"offline":1,"units":{"2":{"25730":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"21158":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"}}},"levels":["2"],"models":["PE-30KICE40","PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":1,"portsOffline":1},{"id":97120,"encid":"OTcxMjA_3","latitude":34.10111,"longitude":-84.518066,"name":"Town
37
+ of Woodstock - Woodstock West","address1":"12453 Highway 92","address2":"","city":"Woodstock","state":"GA","zip":"30188","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":"street
38
+ parking; basic vicinity of the \nWoodstock West by Walton Apartments \nLeasing
39
+ Office\n","restricted":false,"chargers":3,"inuse":0,"avail":3,"offline":0,"units":{"2":{"25436":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"31648":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"25435":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE48","PE-30KICE60"],"portCount":3,"portsInUse":0,"portsAvail":3,"portsOffline":0},{"id":97121,"encid":"OTcxMjE_3","latitude":34.100486,"longitude":-84.519279,"name":"Town
40
+ of Woodstock - Main Street","address1":"12453 Highway 92","address2":"","city":"Woodstock","state":"GA","zip":"30188","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":"street
41
+ parking - 251 East Main Street \nWoodstock, GA 30188, near Freight \nKitchen
42
+ and Tap and an Acru ATM\n","restricted":false,"chargers":3,"inuse":0,"avail":1,"offline":2,"units":{"2":{"36657":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"22425":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"},"25433":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"}}},"levels":["2"],"models":["PE-30KICE40","PE-30KICE48","PE-30KICE60"],"portCount":3,"portsInUse":0,"portsAvail":1,"portsOffline":2},{"id":104693,"encid":"MTA0Njkz","latitude":34.067523,"longitude":-84.175344,"name":"Emory
43
+ Johns Creek Hospital","address1":"6325 Hospital Pkwy","address2":"","city":"Johns
44
+ Creek","state":"GA","zip":"30097","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":6,"inuse":0,"avail":6,"offline":0,"units":{"2":{"37244":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"26097":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"37240":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"16715":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"16716":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"16717":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE48","PE-30KICE60"],"portCount":6,"portsInUse":0,"portsAvail":6,"portsOffline":0},{"id":104690,"encid":"MTA0Njkw","latitude":33.941832,"longitude":-84.5292719,"name":"Marietta
45
+ Transfer Center Park \u0026 Ride","address1":"800 South Marietta Parkway","address2":"","city":"Marietta","state":"GA","zip":"30060","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":4,"inuse":0,"avail":4,"offline":0,"units":{"2":{"28169":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"31307":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"31277":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"44911":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE48","PE-30KICE60"],"portCount":4,"portsInUse":0,"portsAvail":4,"portsOffline":0},{"id":104689,"encid":"MTA0Njg5","latitude":34.029232,"longitude":-84.5699219,"name":"Busbee
46
+ Park and Ride","address1":"3221 Busbee Drive NW","address2":"","city":"Kennesaw","state":"GA","zip":"30144","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":4,"inuse":0,"avail":3,"offline":1,"units":{"2":{"31280":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"31281":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"35940":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"31282":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"}}},"levels":["2"],"models":["PE-30KICE48","PE-30KICE60"],"portCount":4,"portsInUse":0,"portsAvail":3,"portsOffline":1},{"id":84067,"encid":"ODQwNjc_3","latitude":33.7708024,"longitude":-84.3525419,"name":"Manuel\u0027s
47
+ Tavern Location 1","address1":"602 N Highland Avenue Northeast","address2":"","city":"Atlanta","state":"GA","zip":"30307","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":4,"inuse":0,"avail":3,"offline":1,"units":{"2":{"36208":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"45023":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"45008":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"},"45025":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE48","PE-30KICE60"],"portCount":4,"portsInUse":0,"portsAvail":3,"portsOffline":1},{"id":98168,"encid":"OTgxNjg_3","latitude":33.979337,"longitude":-84.426109,"name":"Kohl\u0027s
48
+ Store #444 Merchant\u0027s Walk","address1":"1289 Johnson Ferry Rd","address2":"","city":"Marrietta","state":"GA","zip":"30068","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":0.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"31594":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"31593":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE48"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":98167,"encid":"OTgxNjc_3","latitude":33.42112,"longitude":-84.191,"name":"Kohl\u0027s
49
+ Store #1123 McDonough","address1":"1570 Hwy 20","address2":"","city":"McDonough","state":"GA","zip":"30253","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":0.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"19433":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"36659":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE48","PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":98166,"encid":"OTgxNjY_3","latitude":34.1014799,"longitude":-84.270471,"name":"Kohl\u0027s
50
+ Store #1264 Milton","address1":"13097 Hwy 9 N","address2":"","city":"Milton","state":"GA","zip":"30004","country":"US","type":"COMMERCIAL","hours":{"1":["06002359"],"2":["06002359"],"3":["06002359"],"4":["06002359"],"5":["06002359"],"6":["06002359"],"7":["06002359"]},"l2Rate":0.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":1,"inuse":0,"avail":1,"offline":0,"units":{"2":{"21034":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40"],"portCount":1,"portsInUse":0,"portsAvail":1,"portsOffline":0},{"id":102478,"encid":"MTAyNDc4","latitude":33.791385,"longitude":-84.287719,"name":"Suburban
51
+ Plaza Shopping Center","address1":"2559 North Decatu Rd","address2":"","city":"Decator","state":"GA","zip":"30033","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"37251":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"37743":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40","PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":102479,"encid":"MTAyNDc5","latitude":33.758312,"longitude":-84.4178769,"name":"Lili
52
+ Properties","address1":"936 Mayson Turner Road","address2":"","city":"Atlanta","state":"GA","zip":"30314","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":1,"offline":1,"units":{"2":{"31284":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"31279":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":1,"portsOffline":1},{"id":113883,"encid":"MTEzODgz","latitude":34.2455859,"longitude":-84.471847,"name":"Piolax","address1":"139
53
+ Etowah Industrial Court","address2":"","city":"Canton","state":"GA","zip":"30114","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":4,"inuse":0,"avail":3,"offline":1,"units":{"2":{"113882":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"113880":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"},"113881":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"113879":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40","PE-30KICE60"],"portCount":4,"portsInUse":0,"portsAvail":3,"portsOffline":1},{"id":79273,"encid":"NzkyNzM_3","latitude":33.813602,"longitude":-84.4683901,"name":"Energy
54
+ \u0026 Environment LLC","address1":"2121-B Hollywood Rd NW","address2":"","city":"Atlanta","state":"GA","zip":"30318","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":1,"inuse":0,"avail":1,"offline":0,"units":{"2":{"25767":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":1,"portsInUse":0,"portsAvail":1,"portsOffline":0},{"id":95061,"encid":"OTUwNjE_3","latitude":33.773804,"longitude":-84.283141,"name":"Georgia
55
+ Sierra Club","address1":"743 E. College Ave","address2":"Suite B","city":"Decatur","state":"GA","zip":"30030","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":1,"inuse":0,"avail":1,"offline":0,"units":{"2":{"25926":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":1,"portsInUse":0,"portsAvail":1,"portsOffline":0},{"id":83545,"encid":"ODM1NDU_3","latitude":33.879396,"longitude":-84.47118,"name":"SEARS
56
+ - Store #1385 (Cumberland Mall)","address1":"1500 Cumberland Mall SE","address2":"","city":"Atlanta","state":"GA","zip":"30339","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"45085":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"25358":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE48","PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":74937,"encid":"NzQ5Mzc_3","latitude":33.845744,"longitude":-84.360335,"name":"The
57
+ Lenox Building","address1":"3399 Peachtree Rd NE","address2":"","city":"Atlanta","state":"GA","zip":"30326","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"25746":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"25700":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":125892,"encid":"MTI1ODky","latitude":33.788768,"longitude":-84.405158,"name":"IKEA
58
+ - Atlanta","address1":"441 16th Street NW","address2":"","city":"Atlanta","state":"GA","zip":"30363","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":1,"inuse":0,"avail":1,"offline":0,"units":{"2":{"33817":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE48"],"portCount":1,"portsInUse":0,"portsAvail":1,"portsOffline":0},{"id":132742,"encid":"MTMyNzQy","latitude":33.848655,"longitude":-84.373367,"name":"Atlanta
59
+ Tech Village","address1":"3423 Piedmont Rd","address2":"","city":"Atlanta","state":"GA","zip":"30305","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"132737":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"132734":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":110458,"encid":"MTEwNDU4","latitude":34.010307,"longitude":-84.753349,"name":"Kroger
60
+ Store #634 - Dallas - Dallas Acworth Hwy","address1":"8876 Dallas Acworth
61
+ Hwy","address2":"","city":"Dallas","state":"GA","zip":"30132","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"22433":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"20033":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":110459,"encid":"MTEwNDU5","latitude":33.999492,"longitude":-83.906561,"name":"Kroger
62
+ Store #635 - Dacula - Dacula Rd","address1":"505 Dacula Rd","address2":"","city":"Dacula","state":"GA","zip":"30019","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"25911":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"25909":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":110457,"encid":"MTEwNDU3","latitude":34.095358,"longitude":-84.27591799,"name":"Kroger
63
+ Store #495 - ALPHARETTA - STATE HIGHWAY 9","address1":"12870 STATE HIGHWAY
64
+ 9","address2":"","city":"ALPHARETTA","state":"GA","zip":"30004","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":true,"chargers":1,"inuse":0,"avail":1,"offline":0,"units":{"2":{"22430":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40"],"portCount":1,"portsInUse":0,"portsAvail":1,"portsOffline":0},{"id":110460,"encid":"MTEwNDYw","latitude":33.377098,"longitude":-84.754311,"name":"Kroger
65
+ Store #647 - Newnan - Newnan Crossing Blvd E","address1":"1751 Newnan Crossing
66
+ Blvd E","address2":"","city":"Newnan","state":"GA","zip":"30265","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"21378":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"21126":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":110419,"encid":"MTEwNDE5","latitude":33.566492,"longitude":-84.537203,"name":"Kroger
67
+ Store #247 - Union City - Jonesboro Rd","address1":"4550 Jonesboro Rd","address2":"","city":"Union
68
+ City","state":"GA","zip":"30291","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"21139":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"21377":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":81550,"encid":"ODE1NTA_3","latitude":33.912815,"longitude":-84.423484,"name":"ING
69
+ - Atlanta","address1":"5780 Powers Ferry Road NW","address2":"","city":"Atlanta","state":"GA","zip":"30327-4390","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":0.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"45259":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"45257":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":95880,"encid":"OTU4ODA_3","latitude":33.990618999,"longitude":-84.530265,"name":"ACE
70
+ Electrical","address1":"1631 Canton Road","address2":"","city":"Marietta","state":"GA","zip":"30066","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"22870":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"22868":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":113108,"encid":"MTEzMTA4","latitude":33.7522337,"longitude":-84.3869756,"name":"Georgia
71
+ State University - Collins Street Entrance","address1":"121 Collins Street","address2":"","city":"Atlanta","state":"GA","zip":"30303","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"17552":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"97890":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":113109,"encid":"MTEzMTA5","latitude":33.7537779,"longitude":-84.383984,"name":"Georgia
72
+ State University - Auditorium Place Entrance","address1":"33 Auditorium Place
73
+ SE","address2":"","city":"Atlanta","state":"GA","zip":"30305","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"17549":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"25684":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":110913,"encid":"MTEwOTEz","latitude":33.847848,"longitude":-84.363602,"name":"Lenox
74
+ Square Mall","address1":"3393 Peachtree Road NE","address2":"","city":"Atlanta","state":"GA","zip":"30326","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":"Chargers
75
+ on Level 1 of East Paces Ferry \nparking deck (next to Bloomingdale\u0027s
76
+ at \nfood court mall entrance).\n","restricted":false,"chargers":4,"inuse":0,"avail":4,"offline":0,"units":{"2":{"44064":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"13032":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"45179":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"15578":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE48","PE-30KICE60"],"portCount":4,"portsInUse":0,"portsAvail":4,"portsOffline":0},{"id":141144,"encid":"MTQxMTQ0","latitude":33.76488,"longitude":-84.3868,"name":"Georgia
77
+ Power - Southern Company Building","address1":"30 Ivan Allen Jr. Blvd","address2":"","city":"Atlanta","state":"GA","zip":"30308","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":"7am-7pm
78
+ Monday - Friday - Located on \n6th floor of parking garage\n","restricted":true,"chargers":6,"inuse":0,"avail":4,"offline":2,"units":{"2":{"109405":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":true,"state":"AVAIL"},"109406":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":true,"state":"AVAIL"},"109407":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["OFFLINE"],"restricted":true,"state":"OFFLINE"},"109410":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":true,"state":"AVAIL"},"109409":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["OFFLINE"],"restricted":true,"state":"OFFLINE"},"109408":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":true,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40"],"portCount":6,"portsInUse":0,"portsAvail":4,"portsOffline":2},{"id":141143,"encid":"MTQxMTQz","latitude":33.762378,"longitude":-84.379823,"name":"Georgia
79
+ Power - Employee Parking Deck","address1":"241 Ralph McGill Blvd","address2":"","city":"Atlanta","state":"GA","zip":"30308","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":"Daily
80
+ 7am-7pm\n","restricted":true,"chargers":6,"inuse":0,"avail":3,"offline":3,"units":{"2":{"25463":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":true,"state":"AVAIL"},"23017":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":true,"state":"AVAIL"},"25459":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":true,"state":"OFFLINE"},"23007":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":true,"state":"OFFLINE"},"23011":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":true,"state":"AVAIL"},"25464":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":true,"state":"OFFLINE"}}},"levels":["2"],"models":["PE-30KICE40","PE-30KICE60"],"portCount":6,"portsInUse":0,"portsAvail":3,"portsOffline":3},{"id":94062,"encid":"OTQwNjI_3","latitude":33.852314,"longitude":-84.367588,"name":"Highwoods
81
+ Property","address1":"3560 Lenox Road","address2":"","city":"Atlanta","state":"GA","zip":"30326","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":4,"inuse":0,"avail":4,"offline":0,"units":{"2":{"94044":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"94045":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"94046":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"94043":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40","PE-30KICE60"],"portCount":4,"portsInUse":0,"portsAvail":4,"portsOffline":0},{"id":96481,"encid":"OTY0ODE_3","latitude":33.763221,"longitude":-84.2683859,"name":"Avondale
82
+ Estates","address1":"10 Sutton Place","address2":"","city":"Avondale Estates","state":"GA","zip":"30002","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":0,"offline":2,"units":{"2":{"25893":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"},"21276":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"}}},"levels":["2"],"models":["PE-30KICE40","PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":0,"portsOffline":2},{"id":61794,"encid":"NjE3OTQ_3","latitude":33.761432,"longitude":-84.3968,"name":"Ventanas","address1":"275
83
+ Baker Street","address2":"","city":"Atlanta","state":"GA","zip":"30313","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":1,"inuse":1,"avail":0,"offline":0,"units":{"2":{"38351":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["INUSE"],"restricted":false,"state":"INUSE"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":1,"portsInUse":1,"portsAvail":0,"portsOffline":0},{"id":96502,"encid":"OTY1MDI_3","latitude":33.409476,"longitude":-84.73973,"name":"Yokogawa
84
+ Corp. of America","address1":"2 Dart Road","address2":"","city":"Newman","state":"GA","zip":"30265","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"25660":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"25669":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0},{"id":119042,"encid":"MTE5MDQy","latitude":33.80437,"longitude":-84.336707,"name":"Kroger
85
+ Store #655 - Atlanta - Briarcliff Rd NE","address1":"1799 Briarcliff Rd NE","address2":"","city":"Atlanta","state":"GA","zip":"30306","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":0,"offline":2,"units":{"2":{"21117":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"},"21140":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"}}},"levels":["2"],"models":["PE-30KICE40"],"portCount":2,"portsInUse":0,"portsAvail":0,"portsOffline":2},{"id":79078,"encid":"NzkwNzg_3","latitude":33.85289,"longitude":-84.379628,"name":"1-4
86
+ LLC","address1":"3565 Piedmont Rd","address2":"","city":"Atlanta","state":"GA","zip":"30305","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":1,"offline":1,"units":{"2":{"38350":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"},"38348":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":1,"portsOffline":1},{"id":75767,"encid":"NzU3Njc_3","latitude":34.048086,"longitude":-84.282878,"name":"Hilton
87
+ Garden Inn North Point","address1":"10975 Georgia Ln","address2":"","city":"Alpharetta","state":"GA","zip":"30022","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":0,"offline":2,"units":{"2":{"27304":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"},"27303":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":0,"portsOffline":2},{"id":79073,"encid":"NzkwNzM_3","latitude":33.852522,"longitude":-84.380658,"name":"15
88
+ LLC","address1":"3575 Piedmont Road","address2":"Building 15","city":"Atlanta","state":"GA","zip":"30305","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":1,"offline":1,"units":{"2":{"45180":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"45161":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["OFFLINE"],"restricted":false,"state":"OFFLINE"}}},"levels":["2"],"models":["PE-30KICE60"],"portCount":2,"portsInUse":0,"portsAvail":1,"portsOffline":1},{"id":122887,"encid":"MTIyODg3","latitude":33.499865,"longitude":-84.220239,"name":"Georgia
89
+ Power - Patrick Henry Pkwy","address1":"2500 Patrick Henry Pkwy","address2":"","city":"McDonough","state":"GA","zip":"30253","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":true,"chargers":3,"inuse":0,"avail":3,"offline":0,"units":{"2":{"23742":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":true,"state":"AVAIL"},"20361":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":true,"state":"AVAIL"},"23737":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":true,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40","PE-30KICE60"],"portCount":3,"portsInUse":0,"portsAvail":3,"portsOffline":0},{"id":75768,"encid":"NzU3Njg_3","latitude":34.069217,"longitude":-84.168299,"name":"Hilton
90
+ Garden Inn Johns Creek","address1":"11695 Medlock Bridge Road","address2":"","city":"Johns
91
+ Creek","state":"GA","zip":"30097","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":1,"avail":1,"offline":0,"units":{"2":{"25332":{"isSuppressed":false,"model":"PE-30KICE48","portStatus":["INUSE"],"restricted":false,"state":"INUSE"},"27301":{"isSuppressed":false,"model":"PE-30KICE60","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE48","PE-30KICE60"],"portCount":2,"portsInUse":1,"portsAvail":1,"portsOffline":0}]'
92
+ http_version:
93
+ recorded_at: Fri, 04 Apr 2014 01:01:00 GMT
94
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,39 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.blinknetwork.com/map/v1/search?lat=33.83656&latd=1&lng=-84.38846&lngd=1&long=-84.38846&q=Atlanta%20Tech%20Village
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - BlinkApi::Client 0.0.1
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Fri, 04 Apr 2014 01:14:52 GMT
23
+ Server:
24
+ - Apache
25
+ Cache-Control:
26
+ - max-age=300, must-revalidate
27
+ Content-Length:
28
+ - '848'
29
+ Appserver:
30
+ - www2
31
+ Content-Type:
32
+ - application/json;charset=UTF-8
33
+ body:
34
+ encoding: UTF-8
35
+ string: '[{"id":132742,"encid":"MTMyNzQy","latitude":33.848655,"longitude":-84.373367,"name":"Atlanta
36
+ Tech Village","address1":"3423 Piedmont Rd","address2":"","city":"Atlanta","state":"GA","zip":"30305","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"132737":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"132734":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0}]'
37
+ http_version:
38
+ recorded_at: Fri, 04 Apr 2014 01:14:50 GMT
39
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,39 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.blinknetwork.com/map/v1/status?id=132742
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - BlinkApi::Client 0.0.1
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Fri, 04 Apr 2014 01:13:29 GMT
23
+ Server:
24
+ - Apache
25
+ Cache-Control:
26
+ - max-age=300, must-revalidate
27
+ Content-Length:
28
+ - '846'
29
+ Appserver:
30
+ - www3
31
+ Content-Type:
32
+ - application/json;charset=UTF-8
33
+ body:
34
+ encoding: UTF-8
35
+ string: '{"id":132742,"encid":"MTMyNzQy","latitude":33.848655,"longitude":-84.373367,"name":"Atlanta
36
+ Tech Village","address1":"3423 Piedmont Rd","address2":"","city":"Atlanta","state":"GA","zip":"30305","country":"US","type":"COMMERCIAL","hours":{"1":["00002359"],"2":["00002359"],"3":["00002359"],"4":["00002359"],"5":["00002359"],"6":["00002359"],"7":["00002359"]},"l2Rate":2.0,"dcfcRate":null,"l2RateUnit":3600,"dcfcRateUnit":0,"description":null,"restricted":false,"chargers":2,"inuse":0,"avail":2,"offline":0,"units":{"2":{"132737":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"},"132734":{"isSuppressed":false,"model":"PE-30KICE40","portStatus":["AVAIL"],"restricted":false,"state":"AVAIL"}}},"levels":["2"],"models":["PE-30KICE40"],"portCount":2,"portsInUse":0,"portsAvail":2,"portsOffline":0}'
37
+ http_version:
38
+ recorded_at: Fri, 04 Apr 2014 01:13:27 GMT
39
+ recorded_with: VCR 2.8.0
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: blink_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kyle Conarro
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
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: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: vcr
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: webmock
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
+ - !ruby/object:Gem::Dependency
84
+ name: saddle
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Ruby wrapper for the Blink Network charging station API
98
+ email:
99
+ - kyle.conarro@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".travis.yml"
106
+ - Gemfile
107
+ - LICENSE.txt
108
+ - README.md
109
+ - Rakefile
110
+ - blink_api.gemspec
111
+ - lib/blink_api.rb
112
+ - lib/blink_api/client.rb
113
+ - lib/blink_api/configuration.rb
114
+ - lib/blink_api/endpoints/locations.rb
115
+ - lib/blink_api/endpoints/search.rb
116
+ - lib/blink_api/endpoints/status.rb
117
+ - lib/blink_api/version.rb
118
+ - lib/faraday_middleware/request/api_key.rb
119
+ - spec/blink_api/client_spec.rb
120
+ - spec/blink_api/endpoints/locations_spec.rb
121
+ - spec/blink_api/endpoints/search_spec.rb
122
+ - spec/blink_api/endpoints/status_spec.rb
123
+ - spec/blink_api_spec.rb
124
+ - spec/spec_helper.rb
125
+ - spec/support/vcr/endpoints/locations.yml
126
+ - spec/support/vcr/endpoints/search.yml
127
+ - spec/support/vcr/endpoints/status.yml
128
+ homepage: ''
129
+ licenses:
130
+ - MIT
131
+ metadata: {}
132
+ post_install_message:
133
+ rdoc_options: []
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ requirements: []
147
+ rubyforge_project:
148
+ rubygems_version: 2.2.2
149
+ signing_key:
150
+ specification_version: 4
151
+ summary: Ruby wrapper for the Blink Network charging station API
152
+ test_files:
153
+ - spec/blink_api/client_spec.rb
154
+ - spec/blink_api/endpoints/locations_spec.rb
155
+ - spec/blink_api/endpoints/search_spec.rb
156
+ - spec/blink_api/endpoints/status_spec.rb
157
+ - spec/blink_api_spec.rb
158
+ - spec/spec_helper.rb
159
+ - spec/support/vcr/endpoints/locations.yml
160
+ - spec/support/vcr/endpoints/search.yml
161
+ - spec/support/vcr/endpoints/status.yml