citi_bike_directions 0.0.0 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/lib/citi_bike_directions/distance_matrix_helper.rb +1 -1
- data/lib/citi_bike_directions/gmaps_biking_directions.rb +24 -0
- data/lib/citi_bike_directions/gmaps_walking_directions.rb +24 -0
- data/lib/citi_bike_directions/helper_methods.rb +4 -1
- data/lib/citi_bike_directions.rb +20 -1
- metadata +6 -16
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NzcxNDcwMWU1ZWI3ZGU2NTZhOGE2MDJmYjFhMGU3Y2JjMWVmODgxOQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OGIzODQxMWYwYWVkYzAwY2IwMDVlNWI4NGNjMzRmN2JkZjE1NzY1MA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZDEzNmNmMWIxY2NkMGQ4YTczOGIyMzMyZTQ3Y2FmOTVkYjgzOGUzNGM3Mjhk
|
10
|
+
YzdlMmUxNjMxYTUxMGQwYTBjZjU2OGUxZjk4ZGI3ZjcwN2JjNDMxODdkNDgy
|
11
|
+
YTVmYTJhNThiODUzYmFkNTliNDJkMmE0NWM0ZDAzOTMyMDI4ZmE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NzY1Zjk1MDVhN2JhMTM2MWNiOWMxYjM2NWY1MzQ2MWZiYTc4NDkwZjkxNDk3
|
14
|
+
YTI2NDY3YmFkYmIxMDRmMmIyMmIxMDRmMTcyZGVhMGZiMzljYTgxZTM5Njcw
|
15
|
+
MGI1MTBhNDZjYmUwY2RkZWQ1MzMxMzk1NGUwOTdmMWNkOGFhZTM=
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module GmapsBikingDirections
|
2
|
+
|
3
|
+
def get_biking_directions(coord1, coord2)
|
4
|
+
#coordinates should be in '12.2345, 56,6789' format
|
5
|
+
url = Addressable::URI.new(
|
6
|
+
scheme: "http",
|
7
|
+
host: "maps.googleapis.com",
|
8
|
+
path: "maps/api/directions/json",
|
9
|
+
query_values: {
|
10
|
+
origin: coord1,
|
11
|
+
destination: coord2,
|
12
|
+
sensor: false,
|
13
|
+
mode: "bicycling"
|
14
|
+
}
|
15
|
+
).to_s
|
16
|
+
|
17
|
+
result = JSON.parse(RestClient.get(url))
|
18
|
+
|
19
|
+
|
20
|
+
result['routes'].first['legs']
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module GmapsWalkingDirections
|
2
|
+
|
3
|
+
def get_walking_directions_with_waypoints(coord1, waypoint1, waypoint2, coord2)
|
4
|
+
#coordinates/waypoints should be in '12.2345, 56,6789' format
|
5
|
+
#ex. '40.7136487, -74.0087126', '40.709329, -74.0131196', '40.6998433, -74.0072436', '40.7038704, -74.0138541'
|
6
|
+
url = Addressable::URI.new(
|
7
|
+
scheme: "http",
|
8
|
+
host: "maps.googleapis.com",
|
9
|
+
path: "maps/api/directions/json",
|
10
|
+
query_values: {
|
11
|
+
origin: coord1,
|
12
|
+
destination: coord2,
|
13
|
+
sensor: false,
|
14
|
+
mode: "walking",
|
15
|
+
waypoints: "#{waypoint1}|#{waypoint2}"
|
16
|
+
}
|
17
|
+
).to_s
|
18
|
+
|
19
|
+
result = JSON.parse(RestClient.get(url))
|
20
|
+
|
21
|
+
result['routes'].first['legs']
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/lib/citi_bike_directions.rb
CHANGED
@@ -5,11 +5,15 @@ require 'rest-client'
|
|
5
5
|
require 'geocoder'
|
6
6
|
require 'citi_bike_directions/helper_methods'
|
7
7
|
require 'citi_bike_directions/distance_matrix_helper'
|
8
|
+
require 'citi_bike_directions/gmaps_biking_directions'
|
9
|
+
require 'citi_bike_directions/gmaps_walking_directions'
|
8
10
|
|
9
11
|
class CitiBikeDirections
|
10
12
|
include HelperMethods
|
11
13
|
include DistanceMatrixHelper
|
12
|
-
|
14
|
+
include GmapsBikingDirections
|
15
|
+
include GmapsWalkingDirections
|
16
|
+
|
13
17
|
attr_reader :client, :stations, :avail_bike_stations, :avail_dock_stations
|
14
18
|
|
15
19
|
def initialize(user_agent, availability_tolerance = 5)
|
@@ -40,6 +44,21 @@ class CitiBikeDirections
|
|
40
44
|
find_nearest_avail(coords, :dock)
|
41
45
|
end
|
42
46
|
|
47
|
+
def find_total_directions(start_address, finish_address)
|
48
|
+
nearest_bike = find_nearest_avail_bike(start_address)
|
49
|
+
nearest_dock = find_nearest_avail_dock(finish_address)
|
50
|
+
|
51
|
+
walking_directions = get_walking_directions_with_waypoints(start_address, "#{nearest_bike['latitude']},#{nearest_bike['longitude']}",
|
52
|
+
"#{nearest_dock['latitude']},#{nearest_dock['longitude']}", finish_address)
|
53
|
+
biking_directions = get_biking_directions("#{nearest_bike['latitude']},#{nearest_bike['longitude']}",
|
54
|
+
"#{nearest_dock['latitude']},#{nearest_dock['longitude']}")
|
55
|
+
|
56
|
+
walking_directions[1] = biking_directions
|
57
|
+
|
58
|
+
walking_directions
|
59
|
+
|
60
|
+
end
|
61
|
+
|
43
62
|
private
|
44
63
|
|
45
64
|
def station_locations_with_ids(stations)
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: citi_bike_directions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jin Park
|
@@ -15,7 +14,6 @@ dependencies:
|
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: citibikenyc
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
18
|
- - ! '>='
|
21
19
|
- !ruby/object:Gem::Version
|
@@ -23,7 +21,6 @@ dependencies:
|
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
25
|
- - ! '>='
|
29
26
|
- !ruby/object:Gem::Version
|
@@ -31,7 +28,6 @@ dependencies:
|
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: json
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
32
|
- - ! '>='
|
37
33
|
- !ruby/object:Gem::Version
|
@@ -39,7 +35,6 @@ dependencies:
|
|
39
35
|
type: :runtime
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
39
|
- - ! '>='
|
45
40
|
- !ruby/object:Gem::Version
|
@@ -47,7 +42,6 @@ dependencies:
|
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: addressable
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
46
|
- - ! '>='
|
53
47
|
- !ruby/object:Gem::Version
|
@@ -55,7 +49,6 @@ dependencies:
|
|
55
49
|
type: :runtime
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
53
|
- - ! '>='
|
61
54
|
- !ruby/object:Gem::Version
|
@@ -63,7 +56,6 @@ dependencies:
|
|
63
56
|
- !ruby/object:Gem::Dependency
|
64
57
|
name: rest-client
|
65
58
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
59
|
requirements:
|
68
60
|
- - ! '>='
|
69
61
|
- !ruby/object:Gem::Version
|
@@ -71,7 +63,6 @@ dependencies:
|
|
71
63
|
type: :runtime
|
72
64
|
prerelease: false
|
73
65
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
66
|
requirements:
|
76
67
|
- - ! '>='
|
77
68
|
- !ruby/object:Gem::Version
|
@@ -79,7 +70,6 @@ dependencies:
|
|
79
70
|
- !ruby/object:Gem::Dependency
|
80
71
|
name: geocoder
|
81
72
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
73
|
requirements:
|
84
74
|
- - ! '>='
|
85
75
|
- !ruby/object:Gem::Version
|
@@ -87,7 +77,6 @@ dependencies:
|
|
87
77
|
type: :runtime
|
88
78
|
prerelease: false
|
89
79
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
80
|
requirements:
|
92
81
|
- - ! '>='
|
93
82
|
- !ruby/object:Gem::Version
|
@@ -101,29 +90,30 @@ files:
|
|
101
90
|
- lib/citi_bike_directions.rb
|
102
91
|
- lib/citi_bike_directions/helper_methods.rb
|
103
92
|
- lib/citi_bike_directions/distance_matrix_helper.rb
|
93
|
+
- lib/citi_bike_directions/gmaps_biking_directions.rb
|
94
|
+
- lib/citi_bike_directions/gmaps_walking_directions.rb
|
104
95
|
homepage: http://rubygems.org/gems/citi_bike_directions
|
105
96
|
licenses:
|
106
97
|
- MIT
|
98
|
+
metadata: {}
|
107
99
|
post_install_message:
|
108
100
|
rdoc_options: []
|
109
101
|
require_paths:
|
110
102
|
- lib
|
111
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
112
|
-
none: false
|
113
104
|
requirements:
|
114
105
|
- - ! '>='
|
115
106
|
- !ruby/object:Gem::Version
|
116
107
|
version: '0'
|
117
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
-
none: false
|
119
109
|
requirements:
|
120
110
|
- - ! '>='
|
121
111
|
- !ruby/object:Gem::Version
|
122
112
|
version: '0'
|
123
113
|
requirements: []
|
124
114
|
rubyforge_project:
|
125
|
-
rubygems_version:
|
115
|
+
rubygems_version: 2.0.3
|
126
116
|
signing_key:
|
127
|
-
specification_version:
|
117
|
+
specification_version: 4
|
128
118
|
summary: Get citibike directions with Google maps!
|
129
119
|
test_files: []
|