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 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=
@@ -15,7 +15,7 @@ module DistanceMatrixHelper
15
15
  orig_str = coords.join(",")
16
16
  { destinations: dest_str,
17
17
  origins: orig_str,
18
- sensor: false,
18
+ sensor: false,
19
19
  mode: "walking" }
20
20
  end
21
21
 
@@ -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
@@ -1,4 +1,5 @@
1
1
  module HelperMethods
2
+
2
3
  def address_to_lat_lng(address)
3
4
  result = Geocoder.search(address)
4
5
  lat = result.first.data['geometry']['location']['lat']
@@ -6,4 +7,6 @@ module HelperMethods
6
7
 
7
8
  [lat, lng]
8
9
  end
9
- end
10
+
11
+ end
12
+
@@ -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.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: 1.8.25
115
+ rubygems_version: 2.0.3
126
116
  signing_key:
127
- specification_version: 3
117
+ specification_version: 4
128
118
  summary: Get citibike directions with Google maps!
129
119
  test_files: []