-
-
Save saschagehlich/36d3584ea3812e59abdb9a2de05b9be0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'faraday_middleware' | |
ACCOUNT_BASE_URL = 'https://account.niu.com' | |
API_BASE_URL = 'https://app-api.niu.com' | |
class NiuApiService | |
def initialize(token = nil) | |
@token = token | |
@account_connection = Faraday.new(url: ACCOUNT_BASE_URL) do |faraday| | |
faraday.request :json | |
faraday.response :json, content_type: /\bjson$/ | |
faraday.adapter Faraday.default_adapter | |
end | |
@account_connection.headers['Accept-Language'] = 'en-US' | |
@api_connection = Faraday.new(url: API_BASE_URL) do |faraday| | |
faraday.request :json | |
faraday.response :json, content_type: /\bjson$/ | |
faraday.adapter Faraday.default_adapter | |
end | |
@api_connection.headers['Accept-Language'] = 'en-US' | |
unless @token.nil? | |
@api_connection.headers['token'] = @token | |
end | |
end | |
def login(params) | |
post_data = params.slice(:account, :countryCode, :password) | |
.to_unsafe_h | |
.map {|k, v| [k, v.to_s]}.to_h | |
response = @account_connection.post('/appv2/login', post_data) | |
raise ApplicationController::NotAuthorized unless response.status == 200 | |
raise ApiAuthenticationError.new(response.body['desc']) unless response.body['status'] == 0 | |
return response.body['data'] | |
end | |
def get_vehicles | |
response = @api_connection.post('/motoinfo/list', {}) | |
raise ApiError.new(response.body['desc']) unless response.body['status'] == 0 | |
return response.body['data'] | |
end | |
def get_motor_info(serial_number) | |
response = @api_connection.get('/v3/motor_data/index_info?sn=' + serial_number) | |
raise ApiError.new(response.body['desc']) unless response.body['status'] == 0 | |
return response.body['data'] | |
end | |
def get_overall_tally(serial_number) | |
response = @api_connection.post('/motoinfo/overallTally', { sn: serial_number }) | |
raise ApiError.new(response.body['desc']) unless response.body['status'] == 0 | |
return response.body['data'] | |
end | |
def get_battery_info(serial_number) | |
response = @api_connection.get('/v3/motor_data/battery_info?sn=' + serial_number) | |
raise ApiError.new(response.body['desc']) unless response.body['status'] == 0 | |
return response.body['data'] | |
end | |
def get_tracks(serial_number, index, limit) | |
response = @api_connection.post('/v3/motor_data/track', { | |
sn: serial_number, | |
index: index, | |
pagesize: limit.to_s | |
}) | |
raise ApiError.new(response.body['desc']) unless response.body['status'] == 0 | |
return response.body['data'] | |
end | |
def get_track_details(serial_number, track_id, track_date) | |
response = @api_connection.post('/motoinfo/track/detail', { | |
date: track_date, | |
sn: serial_number, | |
trackId: track_id | |
}) | |
raise ApiError.new(response.body['desc']) unless response.body['status'] == 0 | |
return response.body['data'] | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment