opencellid-client 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +5 -0
- data/Gemfile +1 -1
- data/README.md +4 -0
- data/Rakefile +7 -1
- data/lib/opencellid/bbox.rb +4 -4
- data/lib/opencellid/cell.rb +3 -3
- data/lib/opencellid/error.rb +2 -2
- data/lib/opencellid/measure.rb +3 -3
- data/lib/opencellid/opencellid.rb +11 -11
- data/lib/opencellid/version.rb +1 -1
- data/opencellid-client.gemspec +3 -0
- data/spec/lib/opencellid_spec.rb +17 -17
- metadata +79 -9
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
OpenCellID Client Library
|
2
2
|
=========================
|
3
3
|
|
4
|
+
|
5
|
+
[](https://travis-ci.org/nessche/opencellid-client)
|
6
|
+
|
7
|
+
|
4
8
|
`opencellid-client` is a ruby gem that aims at simplifying the usage of the APIs provided by opencellid.org to transform cell IDs into coordinates.
|
5
9
|
|
6
10
|
Installing
|
data/Rakefile
CHANGED
data/lib/opencellid/bbox.rb
CHANGED
@@ -11,10 +11,10 @@ module Opencellid
|
|
11
11
|
# @param latmax [Float] latmax the latitude of the NE corner of the box
|
12
12
|
# @param lonmax [Float] lonmax the longitude of the NE corner of the box
|
13
13
|
def initialize(latmin, lonmin, latmax, lonmax)
|
14
|
-
raise ArgumentError,
|
15
|
-
raise ArgumentError,
|
16
|
-
raise ArgumentError,
|
17
|
-
raise ArgumentError,
|
14
|
+
raise ArgumentError, 'latmin must not be nil' unless latmin
|
15
|
+
raise ArgumentError, 'lonmin must not be nil' unless lonmin
|
16
|
+
raise ArgumentError, 'latmax must not be nil' unless latmax
|
17
|
+
raise ArgumentError, 'lonmax must not be nil' unless lonmax
|
18
18
|
@latmin = latmin
|
19
19
|
@lonmin = lonmin
|
20
20
|
@latmax = latmax
|
data/lib/opencellid/cell.rb
CHANGED
@@ -27,8 +27,8 @@ module Opencellid
|
|
27
27
|
# @return [Cell] the Cell object obtained by parsing the XML
|
28
28
|
def self.from_element(element)
|
29
29
|
return nil unless element
|
30
|
-
raise ArgumentError,
|
31
|
-
raise ArgumentError,
|
30
|
+
raise ArgumentError, 'element must be of type XEXML::Element' unless element.is_a? REXML::Element
|
31
|
+
raise ArgumentError, 'element must be a <cell>' unless element.name == 'cell'
|
32
32
|
attrs = element.attributes
|
33
33
|
|
34
34
|
result = Cell.new(::Opencellid.to_i_or_nil(attrs['cellId']), ::Opencellid.to_i_or_nil(attrs['mnc']),
|
@@ -59,7 +59,7 @@ module Opencellid
|
|
59
59
|
# with the library cell querying functions
|
60
60
|
# @return [Hash] a hash object containing the non nil parameters which can be used in while querying for cells
|
61
61
|
def to_query_hash
|
62
|
-
{cellid: id, mnc: mnc, mcc: mcc, lac: lac}.delete_if {|
|
62
|
+
{cellid: id, mnc: mnc, mcc: mcc, lac: lac}.delete_if {|_,v| v.nil?}
|
63
63
|
end
|
64
64
|
|
65
65
|
# Returns an array containing the longitude and latitude of the cell, this method makes the Cell
|
data/lib/opencellid/error.rb
CHANGED
@@ -20,8 +20,8 @@ module Opencellid
|
|
20
20
|
# @return [Error] the error object created by parsing the XML element
|
21
21
|
def self.from_element(element)
|
22
22
|
return nil unless element
|
23
|
-
raise ArgumentError,
|
24
|
-
raise ArgumentError,
|
23
|
+
raise ArgumentError, 'element must be of type XEXML::Element' unless element.is_a? REXML::Element
|
24
|
+
raise ArgumentError, 'element must be an <err>' unless element.name == 'err'
|
25
25
|
attrs = element.attributes
|
26
26
|
return Error.new(::Opencellid.to_i_or_nil(attrs['code']),attrs['info'])
|
27
27
|
end
|
data/lib/opencellid/measure.rb
CHANGED
@@ -7,7 +7,7 @@ module Opencellid
|
|
7
7
|
|
8
8
|
# The format used by the OpenCellId API to pass date/time information
|
9
9
|
# @private
|
10
|
-
DATE_FORMAT =
|
10
|
+
DATE_FORMAT = '%a %b %d %H:%M:%S %z %Y'
|
11
11
|
|
12
12
|
attr_accessor :lat, :lon, :taken_by, :taken_on, :id, :signal
|
13
13
|
|
@@ -26,8 +26,8 @@ module Opencellid
|
|
26
26
|
# @return [Measure] the Measure object obtained by parsing the XML
|
27
27
|
def self.from_element(element)
|
28
28
|
return nil unless element
|
29
|
-
raise ArgumentError,
|
30
|
-
raise ArgumentError,
|
29
|
+
raise ArgumentError, 'element must be of type XEXML::Element' unless element.is_a? REXML::Element
|
30
|
+
raise ArgumentError, 'element must be a <measure>' unless element.name == 'measure'
|
31
31
|
attrs = element.attributes
|
32
32
|
date = attrs['takenOn']
|
33
33
|
date ||= attrs['measured_at']
|
@@ -15,7 +15,7 @@ module Opencellid
|
|
15
15
|
|
16
16
|
private
|
17
17
|
#the default URI used in all requests
|
18
|
-
DEFAULT_URI =
|
18
|
+
DEFAULT_URI = 'http://www.opencellid.org'
|
19
19
|
|
20
20
|
# the list of parameters allowed in the options for get_cells_in_area
|
21
21
|
GET_IN_AREA_ALLOWED_PARAMS = [:limit, :mcc, :mnc]
|
@@ -32,7 +32,7 @@ module Opencellid
|
|
32
32
|
# @param[Cell] cell the object containing the parameters to be used in searching the database
|
33
33
|
# the result received from the server
|
34
34
|
def get_cell(cell)
|
35
|
-
query_cell_info
|
35
|
+
query_cell_info '/cell/get', cell
|
36
36
|
end
|
37
37
|
|
38
38
|
# Retrieves the cell information and the measures used to calculate its position based on the parameters
|
@@ -40,7 +40,7 @@ module Opencellid
|
|
40
40
|
# @param[Cell] cell the object containing the parameters used to search the cell database
|
41
41
|
# @return[Response] the result received from the server
|
42
42
|
def get_cell_measures(cell)
|
43
|
-
query_cell_info
|
43
|
+
query_cell_info '/cell/getMeasures', cell
|
44
44
|
end
|
45
45
|
|
46
46
|
# Retrieves all the cells located inside the bounding box and whose parameters match the ones specified in the options
|
@@ -49,11 +49,11 @@ module Opencellid
|
|
49
49
|
# of results), `:mnc` specifying the mnc value of the desired cells and `:mcc` specifying the mcc value of the desired cells
|
50
50
|
# @return [Response] the result received from the server
|
51
51
|
def get_cells_in_area(bbox, options = {})
|
52
|
-
raise ArgumentError,
|
53
|
-
raise ArgumentError,
|
52
|
+
raise ArgumentError, 'options must be a Hash' unless options.is_a? Hash
|
53
|
+
raise ArgumentError, 'bbox must be of type BBox' unless bbox.is_a? BBox
|
54
54
|
params = {bbox: bbox.to_s, fmt: 'xml'}
|
55
55
|
params.merge!(options.reject { |key| !GET_IN_AREA_ALLOWED_PARAMS.include? key})
|
56
|
-
|
56
|
+
exec_req_and_parse_response '/cell/getInArea', params
|
57
57
|
end
|
58
58
|
|
59
59
|
# Adds a measure (specified by the measure object) to a given cell (specified by the cell object). In case of
|
@@ -71,13 +71,13 @@ module Opencellid
|
|
71
71
|
params[:lon] = measure.lon
|
72
72
|
params[:signal] = measure.signal if measure.signal
|
73
73
|
params[:measured_at] = measure.taken_on if measure.taken_on
|
74
|
-
|
74
|
+
exec_req_and_parse_response "/measure/add", params
|
75
75
|
end
|
76
76
|
|
77
77
|
# List the measures added with a given API key.
|
78
78
|
# @return [Response] the result received from the server
|
79
79
|
def list_measures
|
80
|
-
|
80
|
+
exec_req_and_parse_response "/measure/list"
|
81
81
|
end
|
82
82
|
|
83
83
|
# Deletes a measure previously added with the same API key.
|
@@ -85,7 +85,7 @@ module Opencellid
|
|
85
85
|
# @return [Response] the result received from the server
|
86
86
|
def delete_measure(measure_id)
|
87
87
|
raise ArgumentError,"measure_id cannot be nil" unless measure_id
|
88
|
-
|
88
|
+
exec_req_and_parse_response "/measure/delete", {id: measure_id}
|
89
89
|
end
|
90
90
|
|
91
91
|
protected
|
@@ -93,10 +93,10 @@ module Opencellid
|
|
93
93
|
def query_cell_info(path, cell)
|
94
94
|
raise ArgumentError, "cell must be a Cell" unless cell.is_a? Cell
|
95
95
|
params = cell.to_query_hash
|
96
|
-
|
96
|
+
exec_req_and_parse_response path, params
|
97
97
|
end
|
98
98
|
|
99
|
-
def
|
99
|
+
def exec_req_and_parse_response(path, params = {})
|
100
100
|
params[:key] = @key if @key
|
101
101
|
uri = URI(DEFAULT_URI + path)
|
102
102
|
uri.query = URI.encode_www_form params if params.count > 0
|
data/lib/opencellid/version.rb
CHANGED
data/opencellid-client.gemspec
CHANGED
@@ -23,5 +23,8 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_development_dependency "rspec"
|
24
24
|
s.add_development_dependency "webmock"
|
25
25
|
s.add_development_dependency "simplecov"
|
26
|
+
s.add_development_dependency "rake"
|
27
|
+
s.add_development_dependency "yard"
|
28
|
+
s.add_development_dependency "redcarpet"
|
26
29
|
# s.add_runtime_dependency "rest-client"
|
27
30
|
end
|
data/spec/lib/opencellid_spec.rb
CHANGED
@@ -13,46 +13,46 @@ module Opencellid
|
|
13
13
|
Response.stub(:from_xml).and_return(@response)
|
14
14
|
end
|
15
15
|
|
16
|
-
describe
|
16
|
+
describe 'exec_req_and_parse_response' do
|
17
17
|
|
18
18
|
before do
|
19
|
-
@method = @oci.method(:
|
19
|
+
@method = @oci.method(:exec_req_and_parse_response)
|
20
20
|
|
21
21
|
end
|
22
22
|
|
23
|
-
context
|
23
|
+
context 'when the api key is specified' do
|
24
24
|
|
25
25
|
before do
|
26
|
-
@oci = Opencellid.new
|
27
|
-
@method = @oci.method(:
|
26
|
+
@oci = Opencellid.new 'myapikey'
|
27
|
+
@method = @oci.method(:exec_req_and_parse_response)
|
28
28
|
end
|
29
29
|
|
30
|
-
it
|
30
|
+
it 'should add it to the parameters' do
|
31
31
|
@method.call("/")
|
32
|
-
WebMock.should have_requested(:get,
|
33
|
-
.with(query: {
|
32
|
+
WebMock.should have_requested(:get, 'www.opencellid.org/')
|
33
|
+
.with(query: { 'key' => 'myapikey'})
|
34
34
|
end
|
35
35
|
|
36
36
|
end
|
37
37
|
|
38
|
-
context
|
38
|
+
context 'when the api key is not specified' do
|
39
39
|
|
40
|
-
it
|
41
|
-
@method.call(
|
42
|
-
WebMock.should have_requested(:get,
|
40
|
+
it 'should not add it to the parameters' do
|
41
|
+
@method.call('/')
|
42
|
+
WebMock.should have_requested(:get, 'www.opencellid.org/')
|
43
43
|
end
|
44
44
|
|
45
45
|
end
|
46
46
|
|
47
|
-
it
|
47
|
+
it 'should add the params as query params' do
|
48
48
|
|
49
|
-
@method.call(
|
50
|
-
WebMock.should have_requested(:get,
|
49
|
+
@method.call('/',{"a" => "10", "b" => "20", "c" => "30"})
|
50
|
+
WebMock.should have_requested(:get, 'www.opencellid.org/')
|
51
51
|
.with(query: {"a" => "10", "b" => "20", "c" => "30"})
|
52
52
|
end
|
53
53
|
|
54
|
-
it
|
55
|
-
@method.call(
|
54
|
+
it 'should set the path correctly' do
|
55
|
+
@method.call('/mypath')
|
56
56
|
WebMock.should have_requested(:get, "www.opencellid.org/mypath")
|
57
57
|
end
|
58
58
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opencellid-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: webmock
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,47 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: simplecov
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rake
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: yard
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
39
81
|
none: false
|
40
82
|
requirements:
|
41
83
|
- - ! '>='
|
@@ -43,7 +85,28 @@ dependencies:
|
|
43
85
|
version: '0'
|
44
86
|
type: :development
|
45
87
|
prerelease: false
|
46
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: redcarpet
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
47
110
|
description: A Ruby client for OpenCellID API
|
48
111
|
email:
|
49
112
|
- nessche@gmail.com
|
@@ -53,6 +116,7 @@ extra_rdoc_files: []
|
|
53
116
|
files:
|
54
117
|
- .gitignore
|
55
118
|
- .simplecov
|
119
|
+
- .travis.yml
|
56
120
|
- .yardopts
|
57
121
|
- Gemfile
|
58
122
|
- License.txt
|
@@ -94,15 +158,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
158
|
- - ! '>='
|
95
159
|
- !ruby/object:Gem::Version
|
96
160
|
version: '0'
|
161
|
+
segments:
|
162
|
+
- 0
|
163
|
+
hash: 868652574644727038
|
97
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
165
|
none: false
|
99
166
|
requirements:
|
100
167
|
- - ! '>='
|
101
168
|
- !ruby/object:Gem::Version
|
102
169
|
version: '0'
|
170
|
+
segments:
|
171
|
+
- 0
|
172
|
+
hash: 868652574644727038
|
103
173
|
requirements: []
|
104
174
|
rubyforge_project:
|
105
|
-
rubygems_version: 1.8.
|
175
|
+
rubygems_version: 1.8.24
|
106
176
|
signing_key:
|
107
177
|
specification_version: 3
|
108
178
|
summary: A Ruby client for OpenCellID API
|