mirror of
https://gitlab.com/t6353/sharee.bike.git
synced 2025-02-23 04:06:27 +01:00
sigo client api init
This commit is contained in:
parent
d67f354bb4
commit
709521c892
5 changed files with 193 additions and 19 deletions
|
@ -875,8 +875,8 @@ sub booking_update(){
|
||||||
#6 = "canceled"|3 = "occupied"|1 = "available"
|
#6 = "canceled"|3 = "occupied"|1 = "available"
|
||||||
if($state && $state =~ /$dbt->{copri_conf}->{bike_state}->{6}|$dbt->{copri_conf}->{bike_state}->{3}|$dbt->{copri_conf}->{bike_state}->{1}/ && $record_pos->{cc_id} && $record_pos->{cc_id} > 0){
|
if($state && $state =~ /$dbt->{copri_conf}->{bike_state}->{6}|$dbt->{copri_conf}->{bike_state}->{3}|$dbt->{copri_conf}->{bike_state}->{1}/ && $record_pos->{cc_id} && $record_pos->{cc_id} > 0){
|
||||||
|
|
||||||
#set rent state if lock_system 2=Ilockit
|
#set rent state if lock_system 2=Ilockit || 3=sigo
|
||||||
if($record_pos->{int11} eq "2"){
|
if($record_pos->{int11} && ($record_pos->{int11} == 2 || $record_pos->{int11} == 3)){
|
||||||
my $update_pos = {
|
my $update_pos = {
|
||||||
table => "contenttranspos",
|
table => "contenttranspos",
|
||||||
#int10 => "$state_key",
|
#int10 => "$state_key",
|
||||||
|
@ -1061,7 +1061,7 @@ sub booking_update(){
|
||||||
$update_cc->{txt17} = $Ilockit_GUID if($Ilockit_GUID);
|
$update_cc->{txt17} = $Ilockit_GUID if($Ilockit_GUID);
|
||||||
|
|
||||||
}
|
}
|
||||||
#end Ilockit
|
#end Ilockit || sigo
|
||||||
}else{
|
}else{
|
||||||
$bw->log("smartlock type not defined, int11:",$record_pos->{int11},"");
|
$bw->log("smartlock type not defined, int11:",$record_pos->{int11},"");
|
||||||
}
|
}
|
||||||
|
@ -1390,7 +1390,7 @@ sub rentals(){
|
||||||
my $bike_id = $return->{$id}->{bike};
|
my $bike_id = $return->{$id}->{bike};
|
||||||
$bike_id = $1 if($bike_id =~ /(\d+)/);
|
$bike_id = $1 if($bike_id =~ /(\d+)/);
|
||||||
#generate always new keys. keep in mind, keys saved in contenttranspos are overwritten
|
#generate always new keys. keep in mind, keys saved in contenttranspos are overwritten
|
||||||
if($withkey && $record->{$id}->{int11} && $record->{$id}->{int11} eq "2"){
|
if($withkey && $record->{$id}->{int11} && $record->{$id}->{int11} == 2){
|
||||||
my @K_select = ();
|
my @K_select = ();
|
||||||
@K_select = `cd /var/www/copri4/main/src/scripts && export CLASSPATH='.:/usr/share/java:/usr/share/java/postgresql.jar' && java Ilockauth $varenv{dbname} $bike_id`;
|
@K_select = `cd /var/www/copri4/main/src/scripts && export CLASSPATH='.:/usr/share/java:/usr/share/java/postgresql.jar' && java Ilockauth $varenv{dbname} $bike_id`;
|
||||||
$bw->log("rentals java Ilockauth $bike_id | syshost:$varenv{syshost}",\@K_select,"");
|
$bw->log("rentals java Ilockauth $bike_id | syshost:$varenv{syshost}",\@K_select,"");
|
||||||
|
@ -1469,21 +1469,25 @@ sub bikes_available(){
|
||||||
$return->{$id}->{description} = Encode::encode('utf-8', Encode::decode('iso-8859-1', $record->{$id}->{txt01}));
|
$return->{$id}->{description} = Encode::encode('utf-8', Encode::decode('iso-8859-1', $record->{$id}->{txt01}));
|
||||||
$return->{$id}->{state} = "$dbt->{copri_conf}->{bike_state}->{$record->{$id}->{int10}}";
|
$return->{$id}->{state} = "$dbt->{copri_conf}->{bike_state}->{$record->{$id}->{int10}}";
|
||||||
$return->{$id}->{bike_charge} = "$record->{$id}->{int19}" if($record->{$id}->{int19});
|
$return->{$id}->{bike_charge} = "$record->{$id}->{int19}" if($record->{$id}->{int19});
|
||||||
$return->{$id}->{system} = "Ilockit";
|
$return->{$id}->{lock_state} = "locked" if($record->{$id}->{int20} == 1);
|
||||||
|
$return->{$id}->{lock_state} = "unlocked" if($record->{$id}->{int20} == 2);
|
||||||
|
$return->{$id}->{lock_state} = "locking" if($record->{$id}->{int20} == 3);
|
||||||
|
$return->{$id}->{bike_group} = ["$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$record->{$id}->{main_id}"];
|
||||||
|
|
||||||
if($record->{$id}->{int11} eq "2"){
|
if($record->{$id}->{int11} eq "2"){
|
||||||
$return->{$id}->{lock_state} = "locked" if($record->{$id}->{int20} == 1);
|
$return->{$id}->{system} = "Ilockit";
|
||||||
$return->{$id}->{lock_state} = "unlocked" if($record->{$id}->{int20} == 2);
|
|
||||||
$return->{$id}->{lock_state} = "locking" if($record->{$id}->{int20} == 3);
|
|
||||||
$return->{$id}->{Ilockit_GUID} = "$record->{$id}->{txt17}";
|
$return->{$id}->{Ilockit_GUID} = "$record->{$id}->{txt17}";
|
||||||
$return->{$id}->{Ilockit_ID} = "$record->{$id}->{txt18}";
|
$return->{$id}->{Ilockit_ID} = "$record->{$id}->{txt18}";
|
||||||
$return->{$id}->{bike_group} = ["$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$record->{$id}->{main_id}"];
|
|
||||||
#if($users_serviceapp->{int09})
|
#if($users_serviceapp->{int09})
|
||||||
#shareetool
|
#shareetool
|
||||||
if($q->param('authcookie') && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id} && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id} == 187 && scalar(@{$user_tour} >= 1)){
|
if($q->param('authcookie') && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id} && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id} == 187 && scalar(@{$user_tour} >= 1)){
|
||||||
my @service_code = split(/\s/,$record->{$id}->{txt23});
|
my @service_code = split(/\s/,$record->{$id}->{txt23});
|
||||||
$return->{$id}->{service_code} = [@service_code];
|
$return->{$id}->{service_code} = [@service_code];
|
||||||
}
|
}
|
||||||
|
}elsif($record->{$id}->{int11} eq "3"){
|
||||||
|
$return->{$id}->{system} = "sigo";
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ref($tariff_content) eq "HASH"){
|
if(ref($tariff_content) eq "HASH"){
|
||||||
foreach my $tid (sort { $tariff_content->{$a}->{barcode} <=> $tariff_content->{$b}->{barcode} } keys (%$tariff_content)){
|
foreach my $tid (sort { $tariff_content->{$a}->{barcode} <=> $tariff_content->{$b}->{barcode} } keys (%$tariff_content)){
|
||||||
$bw->log("bikes_available tariff_content tariff_description $tariff_content->{$tid}->{int12} && $auth->{txt30} =~ /$tariff_content->{$tid}->{barcode}/ BIKE:",$return->{$id}->{bike},"");
|
$bw->log("bikes_available tariff_content tariff_description $tariff_content->{$tid}->{int12} && $auth->{txt30} =~ /$tariff_content->{$tid}->{barcode}/ BIKE:",$return->{$id}->{bike},"");
|
||||||
|
@ -1575,19 +1579,22 @@ sub bikes_all(){
|
||||||
|
|
||||||
$return->{$id}->{state} = "$dbt->{copri_conf}->{bike_state}->{$record->{$id}->{int10}}";
|
$return->{$id}->{state} = "$dbt->{copri_conf}->{bike_state}->{$record->{$id}->{int10}}";
|
||||||
$return->{$id}->{service_state} = "0";
|
$return->{$id}->{service_state} = "0";
|
||||||
$return->{$id}->{system} = "Ilockit";
|
$return->{$id}->{lock_state} = "locked" if($record->{$id}->{int20} == 1);
|
||||||
|
$return->{$id}->{lock_state} = "unlocked" if($record->{$id}->{int20} == 2);
|
||||||
|
$return->{$id}->{lock_state} = "locking" if($record->{$id}->{int20} == 3);
|
||||||
|
$return->{$id}->{bike_group} = ["$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$record->{$id}->{main_id}"];
|
||||||
|
|
||||||
if($record->{$id}->{int11} eq "2"){
|
if($record->{$id}->{int11} eq "2"){
|
||||||
$return->{$id}->{lock_state} = "locked" if($record->{$id}->{int20} == 1);
|
$return->{$id}->{system} = "Ilockit";
|
||||||
$return->{$id}->{lock_state} = "unlocked" if($record->{$id}->{int20} == 2);
|
|
||||||
$return->{$id}->{lock_state} = "locking" if($record->{$id}->{int20} == 3);
|
|
||||||
$return->{$id}->{Ilockit_GUID} = "$record->{$id}->{txt17}";
|
$return->{$id}->{Ilockit_GUID} = "$record->{$id}->{txt17}";
|
||||||
$return->{$id}->{Ilockit_ID} = "$record->{$id}->{txt18}";
|
$return->{$id}->{Ilockit_ID} = "$record->{$id}->{txt18}";
|
||||||
$return->{$id}->{bike_group} = ["$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$record->{$id}->{main_id}"];
|
|
||||||
#shareetool
|
#shareetool
|
||||||
if($q->param('authcookie') && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id} && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id} == 187 && scalar(@{$user_tour} >= 1)){
|
if($q->param('authcookie') && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id} && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id} == 187 && scalar(@{$user_tour} >= 1)){
|
||||||
my @service_code = split(/\s/,$record->{$id}->{txt23});
|
my @service_code = split(/\s/,$record->{$id}->{txt23});
|
||||||
$return->{$id}->{service_code} = [@service_code];
|
$return->{$id}->{service_code} = [@service_code];
|
||||||
}
|
}
|
||||||
|
}elsif($record->{$id}->{int11} eq "3"){
|
||||||
|
$return->{$id}->{system} = "sigo";
|
||||||
}
|
}
|
||||||
$op_return->{$dbt->{operator}->{$varenv->{dbname}}->{oprefix} . $id} = $return->{$id};
|
$op_return->{$dbt->{operator}->{$varenv->{dbname}}->{oprefix} . $id} = $return->{$id};
|
||||||
}
|
}
|
||||||
|
|
131
copri4/main/src/Mod/APIsigoclient.pm
Executable file
131
copri4/main/src/Mod/APIsigoclient.pm
Executable file
|
@ -0,0 +1,131 @@
|
||||||
|
package APIsigoclient;
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||||
|
#
|
||||||
|
#Client for sigo
|
||||||
|
#
|
||||||
|
#use lib qw(/var/www/copri-bike/shareeapp-fr01/src);
|
||||||
|
use warnings;
|
||||||
|
use strict;
|
||||||
|
use POSIX;
|
||||||
|
use Exporter;
|
||||||
|
our @ISA = qw (Exporter);
|
||||||
|
|
||||||
|
use POSIX;
|
||||||
|
use CGI;
|
||||||
|
use JSON;
|
||||||
|
use LWP::UserAgent;
|
||||||
|
use DateTime;
|
||||||
|
use Time::Piece;
|
||||||
|
use Scalar::Util qw(looks_like_number);
|
||||||
|
use Config::General;
|
||||||
|
|
||||||
|
use Lib::Config;
|
||||||
|
use Mod::DBtank;
|
||||||
|
use Mod::Basework;
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
|
my $cf = new Config;
|
||||||
|
my $dbt = new DBtank;
|
||||||
|
my $bw = new Basework;
|
||||||
|
|
||||||
|
sub new {
|
||||||
|
my $class = shift;
|
||||||
|
my $self = {};
|
||||||
|
bless($self,$class);
|
||||||
|
return $self;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime;
|
||||||
|
|
||||||
|
my $api_file = "/var/www/copri4/shareeconf/apikeys.cfg";
|
||||||
|
my $aconf = Config::General->new($api_file);
|
||||||
|
my %apikeyconf = $aconf->getall;
|
||||||
|
|
||||||
|
my $ua = LWP::UserAgent->new;
|
||||||
|
$ua->agent("sharee sigo-client");
|
||||||
|
my $size = $ua->max_size;
|
||||||
|
my $bytes = 1000;
|
||||||
|
$ua->max_size( $bytes );
|
||||||
|
$ua->default_header( 'x-api-key' => $apikeyconf{sigo}->{api_key} );
|
||||||
|
|
||||||
|
my $json = JSON->new->allow_nonref;
|
||||||
|
my %varenv = $cf->envonline();
|
||||||
|
my $response_in = {};
|
||||||
|
my $dbh = "";
|
||||||
|
my $owner = 169;
|
||||||
|
|
||||||
|
open(FILE,">>$varenv{logdir}/APIsigo_client.log");
|
||||||
|
print FILE "\n*** $now_dt 'sigo client' \n";
|
||||||
|
|
||||||
|
sub get_bikes {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
my $endpoint = "https://sigo.dev.sigo.green/api/v1/bikes";
|
||||||
|
print "$endpoint\n";
|
||||||
|
|
||||||
|
my $rest_json = "";
|
||||||
|
my $ret_json = get_sigo("","$endpoint",$rest_json);
|
||||||
|
eval {
|
||||||
|
$response_in = decode_json($ret_json);
|
||||||
|
print "<--- get_bikes response_in:\n" . Dumper($response_in);
|
||||||
|
};
|
||||||
|
if ($@){
|
||||||
|
print "<--- failure get_bikes raw response_in:\n" . Dumper($ret_json) . "\n";
|
||||||
|
warn $@;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#main GET
|
||||||
|
sub get_sigo {
|
||||||
|
my $self = shift;
|
||||||
|
my $endpoint = shift || "";
|
||||||
|
my $rest_json = shift || "";
|
||||||
|
my $sigo_request = "$endpoint";
|
||||||
|
|
||||||
|
print FILE "===> GET sigo >> " . $sigo_request . "\n" . $rest_json . "\n";
|
||||||
|
|
||||||
|
my $req = HTTP::Request->new(GET => "$sigo_request");
|
||||||
|
$req->content_type('application/json');
|
||||||
|
|
||||||
|
$req->content($rest_json);
|
||||||
|
|
||||||
|
my $res = $ua->request($req);
|
||||||
|
if ($res->is_success) {
|
||||||
|
#print $res->content;
|
||||||
|
return $res->content;
|
||||||
|
print $res->status_line, "\n";
|
||||||
|
}else {
|
||||||
|
print $res->status_line, "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub post_sigo {
|
||||||
|
my $self = shift;
|
||||||
|
my $endpoint = shift || "";
|
||||||
|
my $rest_json = shift || "";
|
||||||
|
my $sigo_request = "$endpoint";
|
||||||
|
|
||||||
|
print FILE "===> POST sigo >> " . $sigo_request . "\n" . $rest_json . "\n";
|
||||||
|
|
||||||
|
my $req = HTTP::Request->new(POST => "$sigo_request");
|
||||||
|
$req->content_type('application/json');
|
||||||
|
|
||||||
|
$req->content($rest_json);
|
||||||
|
|
||||||
|
my $res = $ua->request($req);
|
||||||
|
if ($res->is_success) {
|
||||||
|
#print $res->content;
|
||||||
|
return $res->content;
|
||||||
|
print $res->status_line, "\n";
|
||||||
|
}else {
|
||||||
|
print $res->status_line, "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
close(FILE);
|
||||||
|
|
||||||
|
1;
|
|
@ -155,9 +155,10 @@ sub sharee_pricing(){
|
||||||
$return->{request_time} = "$ctpos->{itime}";
|
$return->{request_time} = "$ctpos->{itime}";
|
||||||
$return->{start_time} = "$ctpos->{start_time}";
|
$return->{start_time} = "$ctpos->{start_time}";
|
||||||
$return->{end_time} = "$computed_end_time";
|
$return->{end_time} = "$computed_end_time";
|
||||||
$return->{system} = "Ilockit" || "";#FIXME
|
$return->{system} = "Ilockit" if($ctpos->{int11} && $ctpos->{int11} == 2);
|
||||||
|
$return->{system} = "sigo" if($ctpos->{int11} && $ctpos->{int11} == 3);
|
||||||
|
|
||||||
if($ctpos->{int11} eq "2"){
|
if($ctpos->{int11}){
|
||||||
#$return->{gps} = "$ctpos->{txt06}";#end_gps
|
#$return->{gps} = "$ctpos->{txt06}";#end_gps
|
||||||
($return->{gps}->{latitude},$return->{gps}->{longitude}) = split(/,/,$ctpos->{txt06});
|
($return->{gps}->{latitude},$return->{gps}->{longitude}) = split(/,/,$ctpos->{txt06});
|
||||||
|
|
||||||
|
@ -172,8 +173,8 @@ sub sharee_pricing(){
|
||||||
$return->{tariff_description}->{track_info} = "Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!" if($ctpos->{int25});
|
$return->{tariff_description}->{track_info} = "Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!" if($ctpos->{int25});
|
||||||
$return->{tariff_description}->{operator_agb} = "Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt (als Demo sharee AGB)." if($ctpos->{ca_id} == 1842 || $ctpos->{ca_id} == 5781);
|
$return->{tariff_description}->{operator_agb} = "Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt (als Demo sharee AGB)." if($ctpos->{ca_id} == 1842 || $ctpos->{ca_id} == 5781);
|
||||||
|
|
||||||
$return->{Ilockit_GUID} = "$ctpos->{txt17}";
|
$return->{Ilockit_GUID} = "$ctpos->{txt17}" if($ctpos->{int11} == 2);
|
||||||
$return->{Ilockit_ID} = "$ctpos->{txt18}";
|
$return->{Ilockit_ID} = "$ctpos->{txt18}" if($ctpos->{int11} == 2);
|
||||||
#$return->{gps} = "$ctpos->{txt06}";#start_gps
|
#$return->{gps} = "$ctpos->{txt06}";#start_gps
|
||||||
($return->{gps}->{latitude},$return->{gps}->{longitude}) = split(/,/,$ctpos->{txt06});
|
($return->{gps}->{latitude},$return->{gps}->{longitude}) = split(/,/,$ctpos->{txt06});
|
||||||
$return->{lock_state} = "locked" if($ctpos->{int20} == 1);
|
$return->{lock_state} = "locked" if($ctpos->{int20} == 1);
|
||||||
|
|
|
@ -240,7 +240,7 @@ sub tpl(){
|
||||||
my ($key,$des,$size) = split /=/,$_;
|
my ($key,$des,$size) = split /=/,$_;
|
||||||
if($key =~ /time/){
|
if($key =~ /time/){
|
||||||
$size="10px";
|
$size="10px";
|
||||||
print $q->textfield(-id=>'datepicker1',-class=>'etxt',-name=>"start_$key",-default=>"$start_date_time",-size=>"$size",-maxlength=>20), "-", $q->textfield(-id=>'datepicker2',-class=>'etxt',-name=>"end_$key",-default=>"$end_date_time",-size=>"$size",-maxlength=>20),"\n";
|
print $q->textfield(-id=>'datepicker1',-class=>'etxt',-name=>"start_$key",-override=>'1', -default=>"$start_date_time",-size=>"$size",-maxlength=>20), "-", $q->textfield(-id=>'datepicker2',-class=>'etxt',-name=>"end_$key",-override=>'1',-default=>"$end_date_time",-size=>"$size",-maxlength=>20),"\n";
|
||||||
}
|
}
|
||||||
elsif($key =~ /owner/){
|
elsif($key =~ /owner/){
|
||||||
print $but->selector_class("$key","eselect","width:80px;",$R::owner,@_users),"\n";
|
print $but->selector_class("$key","eselect","width:80px;",$R::owner,@_users),"\n";
|
||||||
|
|
35
copri4/main/src/scripts/sigo_client.pl
Executable file
35
copri4/main/src/scripts/sigo_client.pl
Executable file
|
@ -0,0 +1,35 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||||
|
#
|
||||||
|
# sudo su www-data -c "./src/scripts/sigo_client.pl shareedms-fr01 get_bikes"
|
||||||
|
#
|
||||||
|
use vars qw($syshost);
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
$syshost = $ARGV[0] || die 'syshost not defined';
|
||||||
|
}
|
||||||
|
|
||||||
|
use lib "/var/www/copri-bike/$syshost/src";
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use POSIX;
|
||||||
|
use CGI;
|
||||||
|
use Mod::APIsigoclient;
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
|
my $q = new CGI;
|
||||||
|
my $cf = new Config;
|
||||||
|
my $si = new APIsigoclient;
|
||||||
|
my $bw = new Basework;
|
||||||
|
my $lang = "de";
|
||||||
|
my $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime;
|
||||||
|
|
||||||
|
my $todo = $ARGV[1];
|
||||||
|
|
||||||
|
|
||||||
|
if($todo eq "get_bikes"){
|
||||||
|
$si->get_bikes();
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue