mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-04-19 03:27:29 +02:00
Version 3.0.364
This commit is contained in:
parent
91d42552c7
commit
0b9196a78d
91 changed files with 3452 additions and 555 deletions
139
TestFramework/Repository/CopriCallsCacheMemory.cs
Normal file
139
TestFramework/Repository/CopriCallsCacheMemory.cs
Normal file
|
@ -0,0 +1,139 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
|
||||
using TINK.Model.Connector;
|
||||
using TINK.Model.Device;
|
||||
using TINK.Model.Services.CopriApi;
|
||||
using TINK.Repository;
|
||||
using TINK.Repository.Request;
|
||||
using TINK.Repository.Response;
|
||||
using TINK.Repository.Response.Stations;
|
||||
using static TINK.Repository.CopriCallsMemory;
|
||||
|
||||
namespace TestFramework.Repository
|
||||
{
|
||||
/// <summary> Allows use of memory for retrieving defined responses.</summary>
|
||||
public class CopriCallsCacheMemory : ICopriCache
|
||||
{
|
||||
private CopriCallsMemory server;
|
||||
|
||||
public CopriCallsCacheMemory(
|
||||
string merchantId,
|
||||
SampleSets? sampleSet = null,
|
||||
int? index = null,
|
||||
string sessionCookie = null)
|
||||
{
|
||||
server = new CopriCallsMemory(merchantId, sampleSet, index, sessionCookie);
|
||||
}
|
||||
|
||||
public bool IsStationsExpired => true;
|
||||
|
||||
public bool IsBikesAvailableExpired => true;
|
||||
|
||||
public bool IsBikesOccupiedExpired => true;
|
||||
|
||||
public bool IsConnected => server.IsConnected;
|
||||
|
||||
public string SessionCookie => server.SessionCookie;
|
||||
|
||||
public string MerchantId => server.MerchantId;
|
||||
|
||||
public void AddToCache(StationsAvailableResponse stations)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public void AddToCache(BikesAvailableResponse bikes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public void AddToCache(BikesReservedOccupiedResponse bikes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public Task<AuthorizationResponse> DoAuthorizationAsync(string p_strMailAddress, string p_strPassword, string p_strDeviceId)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<AuthorizationoutResponse> DoAuthoutAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> DoReserveAsync(string bikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationCancelReturnResponse> DoCancelReservationAsync(string p_iBikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> CalculateAuthKeysAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotSupportedException();
|
||||
|
||||
public Task<ResponseBase> StartReturningBike(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> UpdateLockingStateAsync(
|
||||
string bikeId,
|
||||
lock_state state,
|
||||
Uri operatorUri,
|
||||
LocationDto geolocation,
|
||||
double batteryPercentage,
|
||||
IVersionInfo versionInfo)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> DoBookAsync(Uri operatorUri, string bikeId, Guid guid, double batteryPercentage, LockingAction? nextAction = null)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookAvailableAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookReservedAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> DoReturn(string bikeId, LocationDto location, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Returns a bike and starts closing. </summary>
|
||||
/// <param name="bikeId">Id of the bike to return.</param>
|
||||
/// <param name="smartDevice">Provides info about hard and software.</param>
|
||||
/// <param name="operatorUri">Holds the uri of the operator or null, in case of single operator setup.</param>
|
||||
/// <returns>Response on returning request.</returns>
|
||||
public Task<DoReturnResponse> ReturnAndStartClosingAsync(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> throw new Exception("Rückgabe mit mit Schloss schließen Befehl Offlinemodus nicht möglich!");
|
||||
|
||||
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, int? currentChargeBars, string message, bool isBikeBroken, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Submits mini survey to copri server. </summary>
|
||||
/// <param name="answers">Collection of answers.</param>
|
||||
public Task<ResponseBase> DoSubmitMiniSurvey(IDictionary<string, string> answers)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<BikesAvailableResponse> GetBikesAvailableAsync()
|
||||
{
|
||||
return server.GetBikesAvailableAsync();
|
||||
}
|
||||
|
||||
public Task<BikesReservedOccupiedResponse> GetBikesOccupiedAsync()
|
||||
{
|
||||
return server.GetBikesOccupiedAsync();
|
||||
}
|
||||
|
||||
public Task<StationsAvailableResponse> GetStationsAsync()
|
||||
{
|
||||
return server.GetStationsAsync();
|
||||
}
|
||||
}
|
||||
}
|
127
TestFramework/Repository/CopriCallsCacheMemory001.cs
Normal file
127
TestFramework/Repository/CopriCallsCacheMemory001.cs
Normal file
|
@ -0,0 +1,127 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
|
||||
using TINK.Model.Connector;
|
||||
using TINK.Model.Services.CopriApi;
|
||||
using TINK.Repository.Request;
|
||||
using TINK.Repository.Response;
|
||||
using TINK.Repository.Response.Stations;
|
||||
|
||||
namespace TestFramework.Repository
|
||||
{
|
||||
/// <summary> Allows use of memory for retrieving defined responses.</summary>
|
||||
public class CopriCallsCacheMemory001 : ICopriCache
|
||||
{
|
||||
private CopriCallsMemory001 server;
|
||||
|
||||
public CopriCallsCacheMemory001(string sessionCookie = null)
|
||||
{
|
||||
server = new CopriCallsMemory001(sessionCookie);
|
||||
}
|
||||
|
||||
public bool IsStationsExpired => true;
|
||||
|
||||
public bool IsBikesAvailableExpired => true;
|
||||
|
||||
public bool IsBikesOccupiedExpired => true;
|
||||
|
||||
public bool IsConnected => server.IsConnected;
|
||||
|
||||
public string SessionCookie => server.SessionCookie;
|
||||
|
||||
public string MerchantId => server.MerchantId;
|
||||
|
||||
public void AddToCache(StationsAvailableResponse stations)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public void AddToCache(BikesAvailableResponse bikes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public void AddToCache(BikesReservedOccupiedResponse bikes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public Task<AuthorizationResponse> DoAuthorizationAsync(string p_strMailAddress, string p_strPassword, string p_strDeviceId)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<AuthorizationoutResponse> DoAuthoutAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> DoReserveAsync(string bikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationCancelReturnResponse> DoCancelReservationAsync(string p_iBikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> CalculateAuthKeysAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotSupportedException();
|
||||
|
||||
public Task<ResponseBase> StartReturningBike(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<ReservationBookingResponse> UpdateLockingStateAsync(
|
||||
string bikeId,
|
||||
lock_state state,
|
||||
Uri operatorUri,
|
||||
LocationDto geolocation,
|
||||
double batteryPercentage,
|
||||
IVersionInfo versionInfo)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> DoBookAsync(Uri operatorUri, string bikeId, Guid guid, double batteryPercentage, LockingAction? nextAction = null)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookAvailableAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookReservedAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> DoReturn(string bikeId, LocationDto location, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> ReturnAndStartClosingAsync(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, int? currentChargeBars, string message, bool isBikeBroken, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Submits mini survey to copri server. </summary>
|
||||
/// <param name="answers">Collection of answers.</param>
|
||||
public Task<ResponseBase> DoSubmitMiniSurvey(IDictionary<string, string> answers)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<BikesAvailableResponse> GetBikesAvailableAsync()
|
||||
{
|
||||
return server.GetBikesAvailableAsync();
|
||||
}
|
||||
|
||||
public Task<BikesReservedOccupiedResponse> GetBikesOccupiedAsync()
|
||||
{
|
||||
return server.GetBikesOccupiedAsync();
|
||||
}
|
||||
|
||||
public Task<StationsAvailableResponse> GetStationsAsync()
|
||||
{
|
||||
return server.GetStationsAsync();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,126 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
|
||||
using TINK.Model.Connector;
|
||||
using TINK.Repository.Request;
|
||||
using TINK.Repository.Response.Stations;
|
||||
using TINK.Repository.Response;
|
||||
using TINK.Model.Services.CopriApi;
|
||||
|
||||
namespace TestFramework.Repository
|
||||
{
|
||||
public class CopriCallsCacheMemory001v2NotLoggedIn : ICopriCache
|
||||
{
|
||||
private CopriCallsMemory001v2NotLoggedIn server;
|
||||
|
||||
public CopriCallsCacheMemory001v2NotLoggedIn(string sessionCookie = null)
|
||||
{
|
||||
server = new CopriCallsMemory001v2NotLoggedIn(sessionCookie);
|
||||
}
|
||||
|
||||
public bool IsStationsExpired => true;
|
||||
|
||||
public bool IsBikesAvailableExpired => true;
|
||||
|
||||
public bool IsBikesOccupiedExpired => true;
|
||||
|
||||
public bool IsConnected => server.IsConnected;
|
||||
|
||||
public string SessionCookie => server.SessionCookie;
|
||||
|
||||
public string MerchantId => server.MerchantId;
|
||||
|
||||
public void AddToCache(StationsAvailableResponse stations)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public void AddToCache(BikesAvailableResponse bikes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public void AddToCache(BikesReservedOccupiedResponse bikes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public Task<AuthorizationResponse> DoAuthorizationAsync(string p_strMailAddress, string p_strPassword, string p_strDeviceId)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<AuthorizationoutResponse> DoAuthoutAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> DoReserveAsync(string bikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationCancelReturnResponse> DoCancelReservationAsync(string p_iBikeId, Uri operatorUri)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public Task<ReservationBookingResponse> CalculateAuthKeysAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotSupportedException();
|
||||
|
||||
public Task<ResponseBase> StartReturningBike(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> null;
|
||||
|
||||
public Task<ReservationBookingResponse> UpdateLockingStateAsync(
|
||||
string bikeId,
|
||||
lock_state state,
|
||||
Uri operatorUri,
|
||||
LocationDto geolocation,
|
||||
double batteryPercentage,
|
||||
IVersionInfo versionInfo)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> DoBookAsync(Uri operatorUri, string bikeId, Guid guid, double batteryPercentage, LockingAction? nextAction = null)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookAvailableAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<ReservationBookingResponse> BookReservedAndStartOpeningAsync(string bikeId, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> DoReturn(string bikeId, LocationDto location, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<DoReturnResponse> ReturnAndStartClosingAsync(
|
||||
string bikeId,
|
||||
Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, int? currentChargeBars, string message, bool isBikeBroken, Uri operatorUri)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
/// <summary> Submits mini survey to copri server. </summary>
|
||||
/// <param name="answers">Collection of answers.</param>
|
||||
public Task<ResponseBase> DoSubmitMiniSurvey(IDictionary<string, string> answers)
|
||||
=> throw new NotImplementedException();
|
||||
|
||||
public Task<BikesAvailableResponse> GetBikesAvailableAsync()
|
||||
{
|
||||
return server.GetBikesAvailableAsync();
|
||||
}
|
||||
|
||||
public Task<BikesReservedOccupiedResponse> GetBikesOccupiedAsync()
|
||||
{
|
||||
return server.GetBikesOccupiedAsync();
|
||||
}
|
||||
|
||||
public Task<StationsAvailableResponse> GetStationsAsync()
|
||||
{
|
||||
return server.GetStationsAsync();
|
||||
}
|
||||
}
|
||||
}
|
23
TestFramework/Repository/CopriCallsMemory001v2.cs
Normal file
23
TestFramework/Repository/CopriCallsMemory001v2.cs
Normal file
|
@ -0,0 +1,23 @@
|
|||
using TINK.Repository;
|
||||
|
||||
namespace TestFramework.Repository
|
||||
{
|
||||
/// <summary>
|
||||
/// Holds some COPRI responses for testing purposes.
|
||||
/// </summary>
|
||||
/// <remarks> Holds some demo Mein konrad and LastenradBayern bikes
|
||||
/// </remarks>
|
||||
public class CopriCallsMemory001v2NotLoggedIn : CopriCallMemoryBase, ICopriServer
|
||||
{
|
||||
public CopriCallsMemory001v2NotLoggedIn(string sessionCookie = null, string merchantId = null) : base(
|
||||
bikesAvailableResponseResource: "TestFramework.Repository.CopriCallsMemory001v2NotLoggedIn.BikesAvailableResponse.json",
|
||||
bikesOccupiedResponseResoure: "TestFramework.Repository.CopriCallsMemory001v2NotLoggedIn.BikesOccupiedResponse.json",
|
||||
authResponseResource: "TestFramework.Repository.CopriCallsMemory001v2NotLoggedIn.AuthorizationResponse.json",
|
||||
authOutResponseResource: "TestFramework.Repository.CopriCallsMemory001v2NotLoggedIn.AuthoutResponse.json",
|
||||
stationsResponseResource: "TestFramework.Repository.CopriCallsMemory001v2NotLoggedIn.StationsAvailable.json",
|
||||
sessionCookie: sessionCookie,
|
||||
merchantId: merchantId)
|
||||
{ }
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"clearing_cache": "0",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"user_id": "javaminister@gmail.com",
|
||||
"impress_html": "site/impress.html",
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"lang": "DE",
|
||||
"last_used_operator": {
|
||||
"operator_name": "sharee.bike | TeilRad GmbH",
|
||||
"operator_hours": "B<>rozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_phone": "+49 761 45370097",
|
||||
"operator_email": "hotline@sharee.bike",
|
||||
"operator_color": "#009699"
|
||||
},
|
||||
"response": "authorization",
|
||||
"agb_checked": "0",
|
||||
"agb_html": "site/agb.html",
|
||||
"response_text": "Herzlich willkommen im Fahrradmietsystem",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"debuglevel": "1",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu",
|
||||
"response_state": "OK, nothing todo",
|
||||
"new_authcoo": "1",
|
||||
"user_tour": [],
|
||||
"authcookie": "6103_112e96b36ba33de245943c5ffaf369cd_oiF2kahH",
|
||||
"copri_version": "4.1.8.21",
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"user_group": []
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"copri_version": "4.1.8.21",
|
||||
"authcookie": "1",
|
||||
"user_tour": [],
|
||||
"user_group": null,
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"debuglevel": "1",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"response_state": "OK, logout",
|
||||
"new_authcoo": "0",
|
||||
"lang": "DE",
|
||||
"last_used_operator": {
|
||||
"operator_hours": "Bürozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_name": "sharee.bike | TeilRad GmbH",
|
||||
"operator_email": "hotline@sharee.bike",
|
||||
"operator_phone": "+49 761 45370097",
|
||||
"operator_color": "#009699"
|
||||
},
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"impress_html": "site/impress.html",
|
||||
"response_text": "Auf Wiedersehen.",
|
||||
"agb_html": "site/agb.html",
|
||||
"response": "authout",
|
||||
"agb_checked": "0",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"clearing_cache": "0",
|
||||
"user_id": "javaminister@gmail.com"
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,270 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"agb_checked": "1",
|
||||
"response": "bikes_available",
|
||||
"agb_html": "site/agb.html",
|
||||
"impress_html": "site/impress.html",
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"lang": "DE",
|
||||
"last_used_operator": {
|
||||
"operator_color": "#008dd2",
|
||||
"operator_email": "hotline@lastenraddemo.bayern",
|
||||
"operator_phone": "+49 089 / 111111111",
|
||||
"operator_name": "Lastenrad Bayern",
|
||||
"operator_hours": "Bürozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_logo": ""
|
||||
},
|
||||
"user_id": "ohauff@posteo.de",
|
||||
"clearing_cache": "0",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"bikes": {
|
||||
// Entry manually created (copy-paste). Might contain dupe entries (2021-11-12).
|
||||
"FR9999": {
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255321",
|
||||
"latitude": "47.9767121"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-cc141a6f68bb",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1543": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"max_eur_per_day": "10.00"
|
||||
},
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"station": "FR103",
|
||||
"description": "Quest Carbon",
|
||||
"Ilockit_ID": "ISHAREIT-9999999",
|
||||
"authed": "1",
|
||||
"bike": "FR9999",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu"
|
||||
},
|
||||
// Entry manually created (copy-paste). Might contain dupe entries (2021-11-12).
|
||||
"FR9998": {
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255321",
|
||||
"latitude": "47.9767121"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-cc141a6f68bb",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Bacchetta Giro",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1543": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"max_eur_per_day": "10.00"
|
||||
},
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"station": "FR103",
|
||||
"description": "Quest Carbon",
|
||||
"Ilockit_ID": "ISHAREIT-9999999",
|
||||
"authed": "1",
|
||||
"bike": "FR9998",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu"
|
||||
},
|
||||
"FR1543": {
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255321",
|
||||
"latitude": "47.9767121"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-cc141a6f68bb",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1543": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"max_eur_per_day": "10.00"
|
||||
},
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"station": "FR101",
|
||||
"description": "Contributor-bike Dominik",
|
||||
"Ilockit_ID": "ISHAREIT-2200543",
|
||||
"authed": "1",
|
||||
"bike": "FR1543",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu"
|
||||
},
|
||||
"FR1003": {
|
||||
"bike": "FR1003",
|
||||
"authed": "1",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"bike_group": [
|
||||
"FR300101"
|
||||
],
|
||||
"Ilockit_ID": "ISHAREIT-2200545",
|
||||
"station": "FR101",
|
||||
"description": "Stadtrad",
|
||||
"tariff_description": {
|
||||
"max_eur_per_day": "10.00",
|
||||
"number": "5491",
|
||||
"eur_per_hour": "2.00",
|
||||
"1003": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"free_hours": "0.50",
|
||||
"name": "Vauban Basic"
|
||||
},
|
||||
"state": "available",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-e38bf9d32234",
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8255772",
|
||||
"latitude": "47.9765188"
|
||||
},
|
||||
"lock_state": "locked"
|
||||
},
|
||||
"FR1540": {
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"Ilockit_ID": "ISHAREIT-2200540",
|
||||
"description": "Contributor-bike Dieter",
|
||||
"station": "FR101",
|
||||
"bike": "FR1540",
|
||||
"authed": "1",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-fc3c002a2add",
|
||||
"system": "Ilockit",
|
||||
"gps": {
|
||||
"longitude": "7.8256267",
|
||||
"latitude": "47.976803"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"tariff_description": {
|
||||
"1540": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic",
|
||||
"max_eur_per_day": "10.00",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494"
|
||||
},
|
||||
"state": "available"
|
||||
},
|
||||
"FR1002": {
|
||||
"bike_group": [
|
||||
"FR300101"
|
||||
],
|
||||
"description": "Lasten-Dreirad",
|
||||
"station": "FR101",
|
||||
"Ilockit_ID": "ISHAREIT-2200539",
|
||||
"authed": "1",
|
||||
"bike": "FR1002",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"gps": {
|
||||
"latitude": "47.976552",
|
||||
"longitude": "7.8255068"
|
||||
},
|
||||
"system": "Ilockit",
|
||||
"lock_state": "locked",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-f0b4a692e169",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"max_eur_per_day": "10.00",
|
||||
"1002": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"eur_per_hour": "2.00",
|
||||
"number": "5491",
|
||||
"free_hours": "0.50",
|
||||
"name": "Vauban Basic"
|
||||
}
|
||||
},
|
||||
"FR1538": {
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"authed": "1",
|
||||
"bike": "FR1538",
|
||||
"station": "FR105",
|
||||
"description": "Contributor-bike Rainer",
|
||||
"Ilockit_ID": "ISHAREIT-2200538",
|
||||
"bike_group": [
|
||||
"FR300103"
|
||||
],
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"max_eur_per_day": "10.00",
|
||||
"eur_per_hour": "3.00",
|
||||
"number": "5494",
|
||||
"1538": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
},
|
||||
"free_hours": "0.50",
|
||||
"name": "Tester Basic"
|
||||
},
|
||||
"gps": {
|
||||
"latitude": "47.9275957",
|
||||
"longitude": "7.973976"
|
||||
},
|
||||
"lock_state": "locked",
|
||||
"system": "Ilockit",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-db0319a2555b"
|
||||
},
|
||||
"FR1001": {
|
||||
"bike_group": [
|
||||
"FR300101"
|
||||
],
|
||||
"station": "FR101",
|
||||
"description": "Lastenrad",
|
||||
"Ilockit_ID": "ISHAREIT-2200536",
|
||||
"authed": "1",
|
||||
"bike": "FR1001",
|
||||
"uri_operator": "https://shareeapp-fr01.copri.eu",
|
||||
"lock_state": "locked",
|
||||
"gps": {
|
||||
"latitude": "47.9765091",
|
||||
"longitude": "7.8255631"
|
||||
},
|
||||
"system": "Ilockit",
|
||||
"Ilockit_GUID": "00000000-0000-0000-0000-caa87760e53e",
|
||||
"state": "available",
|
||||
"tariff_description": {
|
||||
"free_hours": "0.50",
|
||||
"name": "Vauban Basic",
|
||||
"eur_per_hour": "2.00",
|
||||
"number": "5491",
|
||||
"max_eur_per_day": "10.00",
|
||||
"1001": {
|
||||
"operator_agb": "Mit der Mietrad Anmietung wird folgender Betreiber <a href='https://shareeapp-fr01.copri.eu/site/agb.html'>AGB</a> zugestimmt (als Demo sharee AGB)."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user_group": [
|
||||
"FR300103",
|
||||
"FR300101"
|
||||
],
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"user_tour": [],
|
||||
"authcookie": "6103_112e96b36ba33de245943c5ffaf369cd_oiF2kahH",
|
||||
"copri_version": "4.1.8.21",
|
||||
"response_state": "OK, nothing todo",
|
||||
"new_authcoo": "0",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"debuglevel": "1",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"shareejson": {
|
||||
"authcookie": "6103_112e96b36ba33de245943c5ffaf369cd_oiF2kahH",
|
||||
"copri_version": "4.1.8.21",
|
||||
"user_tour": [],
|
||||
"user_group": [
|
||||
"FR300103",
|
||||
"FR300101"
|
||||
],
|
||||
"bikes_occupied": {
|
||||
},
|
||||
"apiserver": "https://shareeapp-fr01.copri.eu",
|
||||
"uri_primary": "https://shareeapp-primary.copri.eu",
|
||||
"debuglevel": "1",
|
||||
"bike_info_html": "site/bike_info.html",
|
||||
"new_authcoo": "0",
|
||||
"response_state": "OK, nothing todo",
|
||||
"last_used_operator": {
|
||||
"operator_color": "#008dd2",
|
||||
"operator_phone": "+49 089 / 111111111",
|
||||
"operator_email": "hotline@lastenraddemo.bayern",
|
||||
"operator_hours": "B<>rozeiten: Montag, Mittwoch, Freitag 9-12 Uhr",
|
||||
"operator_name": "Lastenrad Bayern",
|
||||
"operator_logo": ""
|
||||
},
|
||||
"lang": "DE",
|
||||
"impress_html": "site/impress.html",
|
||||
"tariff_info_html": "site/tariff_info_1.html",
|
||||
"agb_html": "site/agb.html",
|
||||
"response": "user_bikes_occupied",
|
||||
"agb_checked": "1",
|
||||
"privacy_html": "site/privacy.html",
|
||||
"clearing_cache": "0",
|
||||
"user_id": "ohauff@posteo.de"
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue