multicity 1.0.0 → 1.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.
- data/lib/multicity/multicity_agent.rb +25 -5
- data/lib/multicity/multicity_car.rb +44 -14
- data/lib/multicity/version.rb +1 -1
- data/lib/multicity.rb +1 -0
- metadata +19 -5
@@ -5,17 +5,37 @@ module Multicity
|
|
5
5
|
:url_list => 'https://kunden.multicity-carsharing.de/kundenbuchung/hal2ajax_process.php?zoom=10&lng1=&lat1=&lng2=&lat2=&stadtCache=&mapstation_id=&mapstadt_id=&verwaltungfirma=¢erLng=13.382322739257802¢erLat=52.50734843957503&searchmode=buchanfrage&with_staedte=false&buchungsanfrage=N&lat=52.50734843957503&lng=13.382322739257802&instant_access=J&open_end=J&objectname=multicitymarker&ignore_virtual_stations=J&before=null&after=null&ajxmod=hal2map&callee=getMarker',
|
6
6
|
:url_area => 'https://www.multicity-carsharing.de/wp-content/plugins/multicity_map/geschaeftsbereich.kml'
|
7
7
|
}
|
8
|
-
|
9
|
-
def
|
10
|
-
agent = Mechanize.new
|
11
|
-
|
12
|
-
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@agent = Mechanize.new
|
11
|
+
end
|
12
|
+
|
13
|
+
# Gets all cars in Berlin
|
14
|
+
# Returns an array of Multicity:Car
|
15
|
+
def get_cars
|
16
|
+
data = @agent.get(@@options[:url_list], headers).body
|
13
17
|
marker = data.scan(/"marker":\[(.*?)\],"/).first
|
14
18
|
marker = marker.to_s.gsub(' ', ' ')
|
15
19
|
marker = JSON.parse("[#{marker}]")
|
16
20
|
marker.map { |item| Car.new(item) }
|
17
21
|
end
|
18
22
|
|
23
|
+
# Gets the Operation Area for Berlin
|
24
|
+
# Returns an Array of coordinate-Arrays that creates a Polygon
|
25
|
+
# Example: [ [13.405852,52.464874], [13.425508,52.466625], ... ]
|
26
|
+
def get_operation_area
|
27
|
+
data = @agent.get(@@options[:url_area], headers).body
|
28
|
+
data = XmlSimple.xml_in(data)
|
29
|
+
coordinates = data["Document"].first["Placemark"].first["Polygon"].first["outerBoundaryIs"].first["LinearRing"].first["coordinates"].first
|
30
|
+
coords = []
|
31
|
+
coordinates.strip.split("\n").each do |coordinate|
|
32
|
+
coordinate = coordinate.split ","
|
33
|
+
coords << [ coordinate[0].to_f, coordinate[1].to_f ]
|
34
|
+
end
|
35
|
+
|
36
|
+
coords
|
37
|
+
end
|
38
|
+
|
19
39
|
private
|
20
40
|
|
21
41
|
def headers
|
@@ -1,25 +1,55 @@
|
|
1
1
|
module Multicity
|
2
|
+
# Multicity Car represents a has these attributes
|
3
|
+
# * position: Hash with Keys :lat and :lon with the coordinates
|
4
|
+
# * license_plate: License plate, e.g. B-MC 1234
|
5
|
+
# * id: internal id
|
6
|
+
# * model: normally "Citroen C-Zero"
|
2
7
|
class Car
|
3
8
|
attr_reader :json
|
4
9
|
attr_accessor :position, :license_plate, :id, :model
|
5
10
|
|
11
|
+
# Creates a new Car object. The hash can be set to a value from the Multicity-API.
|
12
|
+
# If the hash is nil, the car will not have any data
|
6
13
|
# Example hash
|
7
|
-
# {
|
8
|
-
|
14
|
+
# {
|
15
|
+
# "lat" => "52.5359483",
|
16
|
+
# "iconName" => "carIcon",
|
17
|
+
# "iconNameSelected" => "carIconSelected",
|
18
|
+
# "lng" => "13.4432250",
|
19
|
+
# "hal2option" => {
|
20
|
+
# "mouseout" => "hideToolTip",
|
21
|
+
# "maxZoom" => "",
|
22
|
+
# "clustername" => "multicitycluster",
|
23
|
+
# "click" => "showMarkerInfos",
|
24
|
+
# "id" => "284964",
|
25
|
+
# "minZoom" => "4",
|
26
|
+
# "tooltip" => "'Citroën C-Zero (B-MC 1694)'",
|
27
|
+
# "bende" => "1359122400",
|
28
|
+
# "StationInfoTyp" => "HM_AUTO_INFO",
|
29
|
+
# "rclick" => false,
|
30
|
+
# "dblclick" => false,
|
31
|
+
# "objecttyp" => "carpos",
|
32
|
+
# "objectname" => "multicitymarker",
|
33
|
+
# "draggable" => false,
|
34
|
+
# "mouseover" => "showToolTip",
|
35
|
+
# "openinfo" => "showMarkerInfos",
|
36
|
+
# "banfang" => "1359118800"
|
37
|
+
# }
|
38
|
+
# }
|
39
|
+
def initialize hash = nil
|
9
40
|
@json = hash
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
self.model = "Citroën C-Zero"
|
41
|
+
unless hash.nil?
|
42
|
+
tooltip = json["hal2option"]["tooltip"].gsub "'", ""
|
43
|
+
if tooltip != "false"
|
44
|
+
self.position = { :lat => json["lat"], :lon => json["lng"] }
|
45
|
+
self.id = json["hal2option"]["id"]
|
46
|
+
tips = tooltip.split(" ")
|
47
|
+
if (tips.count == 2)
|
48
|
+
self.model = tips[0]
|
49
|
+
self.license_plate = tips[1].to_s.gsub("(", "").gsub(")", "")
|
50
|
+
end
|
21
51
|
end
|
22
|
-
end
|
52
|
+
end
|
23
53
|
end
|
24
54
|
end
|
25
55
|
end
|
data/lib/multicity/version.rb
CHANGED
data/lib/multicity.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multicity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 1.0.0
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Simon Woker
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-01-
|
18
|
+
date: 2013-01-28 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
prerelease: false
|
@@ -48,7 +48,7 @@ dependencies:
|
|
48
48
|
type: :runtime
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
prerelease: false
|
51
|
-
name:
|
51
|
+
name: xml-simple
|
52
52
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
@@ -59,6 +59,20 @@ dependencies:
|
|
59
59
|
- 0
|
60
60
|
version: "0"
|
61
61
|
requirement: *id003
|
62
|
+
type: :runtime
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
prerelease: false
|
65
|
+
name: rake
|
66
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
requirement: *id004
|
62
76
|
type: :development
|
63
77
|
description: Wraps the Multicity JSON to use it nicely in your own environment. You can use this Gem to read all cars that are available.
|
64
78
|
email: github@simonwoker.de
|