25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/opendata-api.rb', line 25
def self.run(args)
api_requests = []
args.each do |arg|
case arg[:api_name]
when 'traffic_volume_counts'
uri_traffic_volume_counts_api = URI.parse(
OpenDataAPI::Constants::TrafficVolumeCountsAPI::BASE_URL +
OpenDataAPI::Constants::TrafficVolumeCountsAPI::API_ENDPOINT +
OpenDataAPI::Constants::TrafficVolumeCountsAPI.query_string_params(arg[:format], arg[:table], arg[:limit])
)
request_for_traffic_volume_counts_api = {
api_name: arg[:api_name],
api_instance: OpenDataAPIRequest.new(OpenDataAPIRequest.http_base, uri_traffic_volume_counts_api, OpenDataAPIRequest.api_key)
}
api_requests << request_for_traffic_volume_counts_api
when 'trip_planner'
uri_trip_planner_api = URI.parse(
OpenDataAPI::Constants::TripPlannerAPI::BASE_URL +
OpenDataAPI::Constants::TripPlannerAPI::API_ENDPOINT +
OpenDataAPI::Constants::TripPlannerAPI.query_string_params(arg[:format], arg[:coord_lat], arg[:coord_long], arg[:coord_radius])
)
request_for_trip_planner_api = {
api_name: arg[:api_name],
api_instance: OpenDataAPIRequest.new(OpenDataAPIRequest.http_base, uri_trip_planner_api, OpenDataAPIRequest.api_key)
}
api_requests << request_for_trip_planner_api
else
raise ArgumentError.new("Invalid API Name")
end
end
begin
Net::HTTP.start(OpenDataAPIRequest.uri_base.hostname, OpenDataAPIRequest.uri_base.port,
:use_ssl => OpenDataAPIRequest.uri_base.scheme == 'https') do |http_session|
puts http_session.use_ssl? ? "OpenData API HTTPS Session" : "OpenData API HTTP Session"
http_session.verify_mode = OpenSSL::SSL::VERIFY_NONE
http_session.read_timeout = OpenDataAPI::Constants::READ_TIMEOUT
response = {}
api_requests.each do |request|
_res = request[:api_instance].fetch(http_session, request[:api_instance].request, OpenDataAPI::Constants::REQUEST_LIMIT)
response[request[:api_name].to_sym] = _res.body
end
response
end
rescue Exception => e
raise "Exception opening TCP connection: #{e}"
end
end
|