coordsafe_api 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTIwYWU3NGY4OGQ0NWY3YzAxOGQ0MmQ4NmY4Y2I3OWE2ZmRhZjczZQ==
5
+ data.tar.gz: !binary |-
6
+ MzlkZWEyNGViNDc3ZDNhOTliZjQ2MmE1OWU2OWNmZmEyYjIwNjYxMw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NmYxOGIxYjhjMmFhYmQ5ZjNlNDI1ZGJlOWRjOGFjMDVhMTI2OGY5NDdkYzUw
10
+ ZDMyZjQ4YjIxYjhiNjA2NWYzYWUxMWYyN2Q3YThiYjYxYjc5NjA5MTk3ZTQ4
11
+ NTY2NjdiYmIyZjdiODhkMDkyZjZhMzI4YWQzZDdmOTNlM2EyNWU=
12
+ data.tar.gz: !binary |-
13
+ Y2Y1NmRhZDQ4MGQ0MTdkYWNlZmZhYTJiYmU4OTM0MWEzODM3NDExOTAyNGRh
14
+ ZDM3ZDQ5ZDk2MTM1Nzg3N2Y4MDJmMjMzN2Y0MmFiNjE3MWNlYWQ1OTE1ZTE3
15
+ OTgyZmRkYzg1ZGIwMzIxMGVmOGQ2Yjk4MjFkYzA3ZDY4YjQ0ZWU=
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format nested
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.3"
4
+ script: bundle exec rake
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'coveralls', require: false
4
+
5
+ # Specify your gem's dependencies in coordsafe_api.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,59 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ coordsafe_api (0.1.0)
5
+ httparty
6
+ yajl-ruby
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ addressable (2.3.5)
12
+ colorize (0.5.8)
13
+ coveralls (0.6.7)
14
+ colorize
15
+ multi_json (~> 1.3)
16
+ rest-client
17
+ simplecov (>= 0.7)
18
+ thor
19
+ crack (0.4.0)
20
+ safe_yaml (~> 0.9.0)
21
+ diff-lcs (1.2.4)
22
+ httparty (0.11.0)
23
+ multi_json (~> 1.0)
24
+ multi_xml (>= 0.5.2)
25
+ mime-types (1.23)
26
+ multi_json (1.7.7)
27
+ multi_xml (0.5.4)
28
+ rake (10.1.0)
29
+ rest-client (1.6.7)
30
+ mime-types (>= 1.16)
31
+ rspec (2.13.0)
32
+ rspec-core (~> 2.13.0)
33
+ rspec-expectations (~> 2.13.0)
34
+ rspec-mocks (~> 2.13.0)
35
+ rspec-core (2.13.1)
36
+ rspec-expectations (2.13.0)
37
+ diff-lcs (>= 1.1.3, < 2.0)
38
+ rspec-mocks (2.13.1)
39
+ safe_yaml (0.9.3)
40
+ simplecov (0.7.1)
41
+ multi_json (~> 1.0)
42
+ simplecov-html (~> 0.7.1)
43
+ simplecov-html (0.7.1)
44
+ thor (0.18.1)
45
+ webmock (1.13.0)
46
+ addressable (>= 2.2.7)
47
+ crack (>= 0.3.2)
48
+ yajl-ruby (1.1.0)
49
+
50
+ PLATFORMS
51
+ ruby
52
+
53
+ DEPENDENCIES
54
+ bundler (~> 1.3)
55
+ coordsafe_api!
56
+ coveralls
57
+ rake
58
+ rspec (~> 2.6)
59
+ webmock
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Vincent Paca
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,7 @@
1
+ Coordsafe Api
2
+ =============
3
+ [![Build Status](https://travis-ci.org/EdeyaLabs/coordsafe_api.png?branch=master)](https://travis-ci.org/EdeyaLabs/coordsafe_api)
4
+ [![Code Climate](https://codeclimate.com/github/EdeyaLabs/coordsafe_api.png)](https://codeclimate.com/github/EdeyaLabs/coordsafe_api)
5
+ [![Coverage Status](https://coveralls.io/repos/EdeyaLabs/coordsafe_api/badge.png?branch=master)](https://coveralls.io/r/EdeyaLabs/coordsafe_api?branch=master)
6
+
7
+ Ruby wrapper for the Coordsafe locator API
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake"
3
+ require "rspec"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec) do |s|
7
+ s.pattern = "spec/**/*_spec.rb"
8
+ end
9
+
10
+ task :default => :spec
@@ -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 'coordsafe_api/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "coordsafe_api"
8
+ spec.version = CoordsafeApi::VERSION
9
+ spec.authors = ["Vincent Paca"]
10
+ spec.email = ["vincent.paca@gmail.com"]
11
+ spec.description = %q{A ruby wrapper for the Coordsafe locator API}
12
+ spec.summary = %q{Wrapper for the Coordsafe 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.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec", "~> 2.6"
24
+ spec.add_development_dependency "webmock"
25
+
26
+ spec.add_dependency "httparty"
27
+ spec.add_dependency "yajl-ruby"
28
+ end
@@ -0,0 +1,43 @@
1
+ module CoordsafeApi
2
+ module Configuration
3
+ VALID_CONNECTION_KEYS = [:locator_endpoint, :history_endpoint, :single_history_endpoint, :user_agent, :method].freeze
4
+ VALID_OPTIONS_KEYS = [:secret, :company_name, :format].freeze
5
+ VALID_CONFIG_KEYS = VALID_CONNECTION_KEYS + VALID_OPTIONS_KEYS
6
+
7
+ DEFAULT_LOCATOR_ENDPOINT = "http://www.coordsafe.com.sg/CoordSafePortalApp/locators/lc/company"
8
+ DEFAULT_HISTORY_ENDPOINT = "http://www.coordsafe.com.sg/CoordSafePortalApp/locators/lc/history"
9
+ DEFAULT_SINGLE_HISTORY_ENDPOINT = "http://www.coordsafe.com.sg/CoordSafePortalApp/locators/lc/location"
10
+ DEFAULT_METHOD = :get
11
+ DEFAULT_USER_AGENT = "CoordsafeApi Ruby Gem #{CoordsafeApi::VERSION}".freeze
12
+
13
+ DEFAULT_KEY = nil
14
+ DEFAULT_COMPANY_NAME = nil
15
+ DEFAULT_FORMAT = :json
16
+
17
+ attr_accessor *VALID_CONFIG_KEYS
18
+
19
+ def self.extended(base)
20
+ base.reset
21
+ end
22
+
23
+ def configure
24
+ yield self
25
+ end
26
+
27
+ def reset
28
+ self.locator_endpoint = DEFAULT_LOCATOR_ENDPOINT
29
+ self.history_endpoint = DEFAULT_HISTORY_ENDPOINT
30
+ self.single_history_endpoint = DEFAULT_SINGLE_HISTORY_ENDPOINT
31
+ self.method = DEFAULT_METHOD
32
+ self.user_agent = DEFAULT_USER_AGENT
33
+
34
+ self.secret = DEFAULT_KEY
35
+ self.company_name = DEFAULT_COMPANY_NAME
36
+ self.format = DEFAULT_FORMAT
37
+ end
38
+
39
+ def options
40
+ Hash[ * VALID_CONFIG_KEYS.map { |key| [key, send(key)] }.flatten ]
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,40 @@
1
+ module CoordsafeApi
2
+ class Locator
3
+ include HTTParty
4
+
5
+ attr_accessor *Configuration::VALID_CONFIG_KEYS
6
+
7
+ def initialize(options={})
8
+ merged_options = CoordsafeApi.options.merge(options)
9
+
10
+ Configuration::VALID_CONFIG_KEYS.each do |key|
11
+ send("#{key}=", merged_options[key])
12
+ end
13
+ end
14
+
15
+ def locate
16
+ response = self.class.get("#{locator_endpoint}/#{URI.escape(company_name)}?key=#{secret}")
17
+ Response.new(response)
18
+ end
19
+
20
+ # opts: locator_id, date_from, date_to
21
+ # If only date_from exists,
22
+ def locate_history(locator_id, date_from, date_to=nil)
23
+ if date_to.nil?
24
+ response = self.class.get("#{single_history_endpoint}/#{locator_id}/#{Locator.parameterize(date_from)}?key=#{secret}")
25
+ Response.new(response)
26
+ else
27
+ response = self.class.get("#{history_endpoint}/#{locator_id}/#{Locator.parameterize(date_from, date_to)}?key=#{secret}")
28
+ Response.new(response)
29
+ end
30
+ end
31
+
32
+ def self.parameterize(date_from, date_to=nil)
33
+ unless date_to.nil?
34
+ URI.escape("#{date_from.strftime("%m-%d-%Y %H:%M")},#{date_to.strftime("%m-%d-%Y %H:%M")}")
35
+ else
36
+ URI.escape(date_from.strftime("%m-%d-%Y %H:%M"))
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,22 @@
1
+ module CoordsafeApi
2
+ class Response
3
+ attr_accessor :success, :body
4
+
5
+ def initialize(request)
6
+ @status, @body = request.response, request.response.body
7
+ end
8
+
9
+ def success
10
+ if @status.class == Net::HTTPOK
11
+ true
12
+ else
13
+ false
14
+ end
15
+ end
16
+
17
+ def body
18
+ JSON.parse @body
19
+ end
20
+ end
21
+ end
22
+
@@ -0,0 +1,3 @@
1
+ module CoordsafeApi
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,13 @@
1
+ require 'httparty'
2
+ require 'json'
3
+
4
+ require "coordsafe_api/version"
5
+ require "coordsafe_api/configuration"
6
+ require "coordsafe_api/locator"
7
+ require "coordsafe_api/response"
8
+
9
+ module CoordsafeApi
10
+ extend Configuration
11
+ end
12
+
13
+
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe CoordsafeApi::Configuration do
4
+ describe "when setting the configuration" do
5
+ after do
6
+ CoordsafeApi.reset
7
+ end
8
+
9
+ it "should set the configuration keys" do
10
+ CoordsafeApi.configure do |config|
11
+ config.secret = "qwerty"
12
+ config.company_name = "EdeyaLabs"
13
+ end
14
+
15
+ CoordsafeApi.secret.should eq "qwerty"
16
+ CoordsafeApi.company_name.should eq "EdeyaLabs"
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,149 @@
1
+ require 'spec_helper'
2
+
3
+ describe CoordsafeApi::Locator do
4
+ context "on utilizing the API" do
5
+ before(:each) do
6
+ @api = CoordsafeApi::Locator.new({:company_name => "Sypher Labs Pte. Ltd.", :key => "test-1234qwer"})
7
+ stub_request(:get, "http://www.coordsafe.com.sg/CoordSafePortalApp/locators/lc/company/Sypher%20Labs%20Pte.%20Ltd.?key=").to_return(
8
+ :body => '[ {"location":null,"imeiCode":"353301057336682","gpsLocation":{"time":0,"accuracy":0.0,"altitude":0.0,"bearing":0.0,
9
+ "distance":0.0,"hasAccuracy":false,"hasAltitude":false,"hasBearing":false,"hasSpeed":false,"initialBearing":0.0,"latitude":1.5296516666666666,
10
+ "longitude":103.77401,"speed":0.0},"deviceStatus":{"isGpsOn":false,"imei":"","isGsmOn":false,"networkAvailability":0,"ip":"","batteryLeft":0},
11
+ "create":false,"assignedTo":"Sypher Labs Pte. Ltd.","id":35,"type":"CS","status":null,"madeBy":null,"madeDate":1423065600000,"model":"BBT-01",
12
+ "label":"PDN399","lastLocationUpdate":1373096366341,"ownerId":"CS","lastStatusUpdate":1369535434914} ]',
13
+ :headers => { "Content-Type" => 'application/json', "Transfer-Encoding" => 'chunked' })
14
+ stub_request(:get, "http://www.coordsafe.com.sg/CoordSafePortalApp/locators/lc/location/18/01-27-2013%2009:30?key=").to_return(
15
+ :body => '[ {"id":209588,"accuracy":0.0,"altitude":0.0,"bearing":164.39999389648438,"distance":0.0,"speed":65.5,"lat":1.3918833333333334,
16
+ "lng":103.75420666666668,"location_time":1359248454818,"locator_id":18},{"id":209589,"accuracy":0.0,"altitude":0.0,"bearing":165.35000610351562,
17
+ "distance":0.0,"speed":64.5999984741211,"lat":1.3910783333333332,"lng":103.75441166666666,"location_time":1359248454862,"locator_id":18} ]',
18
+ :content_type => 'application/json')
19
+ stub_request(:get, "http://www.coordsafe.com.sg/CoordSafePortalApp/locators/lc/history/18/01-27-2013%2009:00,01-27-2013%2010:00?key=").to_return(
20
+ :body => ' {"id":209869,"accuracy":0.0,"altitude":0.0,"bearing":178.89999389648438,"distance":0.0,"speed":37.900001525878906,
21
+ "lat":1.3253249999999999,"lng":103.76431833333332,"location_time":1359250196802,"locator_id":18}',
22
+ :content_type => 'application/json')
23
+ end
24
+
25
+ it "should respond with the CoordsafeApi::Response object on #locate" do
26
+ request = @api.locate
27
+ request.class.should eq(CoordsafeApi::Response)
28
+ end
29
+
30
+ it "should respond with an Array of JSON on #locate" do
31
+ request = @api.locate
32
+ results = request.body
33
+ results.class.should eq(Array)
34
+ results.each do |r|
35
+ r.class.should eq(Hash)
36
+ end
37
+ end
38
+
39
+ it "should return true for success" do
40
+ request = @api.locate
41
+ request.success.should be_true
42
+ end
43
+
44
+ it "should respond with the CoordsafeApi::Response object on #locate_history with date_from" do
45
+ request = @api.locate_history(18, DateTime.parse("2013-01-27 09:30"))
46
+ request.class.should eq(CoordsafeApi::Response)
47
+ end
48
+
49
+ it "should respond with JSON on #locate_history with date_from" do
50
+ request = @api.locate_history(18, DateTime.parse("2013-01-27 09:30"))
51
+ results = request.body
52
+ results.class.should eq(Array)
53
+ results.each do |r|
54
+ r.class.should eq(Hash)
55
+ end
56
+ end
57
+
58
+ it "should return true for success" do
59
+ request = @api.locate_history(18, DateTime.parse("2013-01-27 09:30"))
60
+ request.success.should be_true
61
+ end
62
+
63
+ it "should respond with the CoordsafeApi::Response object on #locate_history with date_from and date_to" do
64
+ request = @api.locate_history(18, DateTime.parse("2013-01-27 09:00"), DateTime.parse("2013-01-27 10:00"))
65
+ request.class.should eq(CoordsafeApi::Response)
66
+ end
67
+
68
+ it "should respond with JSON on #locate_history with date_from and date_to" do
69
+ request = @api.locate_history(18, DateTime.parse("2013-01-27 09:00"), DateTime.parse("2013-01-27 10:00"))
70
+ results = request.body
71
+ results.class.should eq(Hash)
72
+ end
73
+
74
+ it "should return true for success" do
75
+ request = @api.locate_history(18, DateTime.parse("2013-01-27 09:00"), DateTime.parse("2013-01-27 10:00"))
76
+ request.success.should be_true
77
+ end
78
+
79
+
80
+ it "should parameterize date_from on #paramemterize" do
81
+ CoordsafeApi::Locator.parameterize(DateTime.parse("2013-07-06 9:30")).should eq("07-06-2013%2009:30")
82
+ end
83
+
84
+ it "should parameterize dates on #parameterize" do
85
+ CoordsafeApi::Locator.parameterize(DateTime.parse("2013-07-06 9:30"), DateTime.parse("2013-07-08 5:00")).should eq("07-06-2013%2009:30,07-08-2013%2005:00")
86
+ end
87
+ end
88
+
89
+ context "on configuration" do
90
+ before do
91
+ @keys = CoordsafeApi::Configuration::VALID_CONFIG_KEYS
92
+ end
93
+
94
+ describe "with module configuration" do
95
+ before do
96
+ CoordsafeApi.configure do |config|
97
+ @keys.each do |key|
98
+ config.send("#{key}=", key)
99
+ end
100
+ end
101
+ end
102
+
103
+ after do
104
+ CoordsafeApi.reset
105
+ end
106
+
107
+ it "should inherit module configuration" do
108
+ api = CoordsafeApi::Locator.new
109
+ @keys.each do |key|
110
+ api.send(key).should eq(key)
111
+ end
112
+ end
113
+
114
+ describe "with class configuration" do
115
+ before do
116
+ @config = {
117
+ :secret => "qwerty",
118
+ :company_name => "qwerty",
119
+ :format => "test",
120
+ :locator_endpoint => "test",
121
+ :history_endpoint => "test",
122
+ :single_history_endpoint => "test",
123
+ :user_agent => "qwerty",
124
+ :method => "test",
125
+ }
126
+ end
127
+
128
+ it "should ovverride module configuration" do
129
+ api = CoordsafeApi::Locator.new(@config)
130
+ @keys.each do |key|
131
+ api.send(key).should eq @config[key]
132
+ end
133
+ end
134
+
135
+ it "should override module configuration after" do
136
+ api = CoordsafeApi::Locator.new
137
+
138
+ @config.each do |key, value|
139
+ api.send("#{key}=", value)
140
+ end
141
+
142
+ @keys.each do |key|
143
+ api.send("#{key}").should eq @config[key]
144
+ end
145
+ end
146
+ end
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+
4
+ require 'rspec'
5
+ require 'coveralls'
6
+ require 'coordsafe_api'
7
+ require 'webmock/rspec'
8
+
9
+ Coveralls.wear!
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: coordsafe_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Vincent Paca
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-08 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.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
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: '2.6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
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: httparty
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
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: yajl-ruby
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: A ruby wrapper for the Coordsafe locator API
98
+ email:
99
+ - vincent.paca@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - .gitignore
105
+ - .rspec
106
+ - .travis.yml
107
+ - Gemfile
108
+ - Gemfile.lock
109
+ - LICENSE.txt
110
+ - README.md
111
+ - Rakefile
112
+ - coordsafe_api.gemspec
113
+ - lib/coordsafe_api.rb
114
+ - lib/coordsafe_api/configuration.rb
115
+ - lib/coordsafe_api/locator.rb
116
+ - lib/coordsafe_api/response.rb
117
+ - lib/coordsafe_api/version.rb
118
+ - spec/coordsafe_api/configuration_spec.rb
119
+ - spec/coordsafe_api/locator_spec.rb
120
+ - spec/spec_helper.rb
121
+ homepage: ''
122
+ licenses:
123
+ - MIT
124
+ metadata: {}
125
+ post_install_message:
126
+ rdoc_options: []
127
+ require_paths:
128
+ - lib
129
+ required_ruby_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ requirements: []
140
+ rubyforge_project:
141
+ rubygems_version: 2.0.3
142
+ signing_key:
143
+ specification_version: 4
144
+ summary: Wrapper for the Coordsafe API
145
+ test_files:
146
+ - spec/coordsafe_api/configuration_spec.rb
147
+ - spec/coordsafe_api/locator_spec.rb
148
+ - spec/spec_helper.rb