Files
eqn.ios/Sources/Earthquake Network/Server Requests/EQNGeneratoreURLServer.m
T
Andrea Busi a9f16bca4a refactor: Reorganise code related to background monitoring
- Move to Models folder
- Improve code and nullability notation
- Rename class with typo in name
2020-12-07 09:46:43 +01:00

274 lines
13 KiB
Objective-C

//
// EQNGeneratoreURLServer.m
// Earthquake Network
//
// Created by Luca Beretta on 19/09/18.
// Copyright © 2018 Luca Beretta. All rights reserved.
//
#import "EQNGeneratoreURLServer.h"
#import "Costanti.h"
#import "EQNUser.h"
#import "EQNCalibrazione.h"
#import "EQNRilevamento.h"
#import "EQNNotificheSegnalazioniUtente.h"
#import "EQNNotificheReteSismiche.h"
#import "EQNAllertaSismica.h"
#import <MapKit/MapKit.h>
@implementation EQNGeneratoreURLServer
#pragma mark - Public
+ (NSURL *)urlDownloadDati
{
NSString *stringUrl = [NSString stringWithFormat:@"%@",EQNServerUrlDownloadSmartphoneNetwork];
return [NSURL URLWithString:stringUrl];
}
+ (NSURL *)urlRegistrazione
{
NSString *primaRegistrazione = @"0";
if ([EQNUser defaultUser].registrato) {
primaRegistrazione = @"1";
}
NSString *stringUrl = [NSString stringWithFormat:@"%@?u_id=%@&r_id=%@&lat=%f&lon=%f&ios=1", EQNServerUrlRegistration, primaRegistrazione, [EQNUser defaultUser].tokenUser, [EQNUser defaultUser].lastPosition.coordinate.latitude, [EQNUser defaultUser].lastPosition.coordinate.longitude];
return [NSURL URLWithString:stringUrl];
}
+ (NSURL *)urlPosizione
{
NSString *stringUrl = [NSString stringWithFormat:@"%@?u_id=%@&lat=%f&lon=%f", EQNServerUrlUserLocation, [EQNUser defaultUser].user_ID, [EQNUser defaultUser].lastPosition.coordinate.latitude, [EQNUser defaultUser].lastPosition.coordinate.longitude];
return [NSURL URLWithString:stringUrl];
}
+ (NSURL *)urlMessagioStatoSmartPhone:(EQNCalibrazione *)calibrazione rilevamento:(EQNRilevamento *)rilevamento
{
NSString *e_t = @"0";
NSString *a_max = @"0";
if (rilevamento.rilievo == EQNRilevamentoSogliaPositivo){
e_t = @"1";
a_max =[NSString stringWithFormat:@"%f",rilevamento.maxAssoluto];
}
NSString *u_id = [EQNUser defaultUser].user_ID;
NSString *lat = [NSString stringWithFormat:@"%f", [EQNUser defaultUser].lastPosition.coordinate.latitude];
NSString *lon = [NSString stringWithFormat:@"%f", [EQNUser defaultUser].lastPosition.coordinate.longitude];
NSString *acc = @"10";
NSString *d_not = @"0";
NSString *calib = @"0";
if (calibrazione.stato == calibrato) {
calib = @"1";
}
NSString *ch = @"0";
if ([EQNUser defaultUser].inCarica) {
ch = @"1";
}
NSString *s_on = @"0";
if ([EQNUser defaultUser].monitorOn) {
s_on = @"1";
}
NSString *tru = @"0";
NSString *upd = @"0";
if ([EQNUser defaultUser].distanza > DISTANZA_METRI_SEGNALAZIONE) {
upd = @"1";
}
NSString *ver = [self ottieniVersioneComeIntero];
NSString *os = @"1";
NSString *stringUrl = [NSString stringWithFormat:@"%@?e_t=%@&u_id=%@&lat=%@&lon=%@&acc=%@&a_max=%@&d_not=%@&cal=%@&ch=%@&s_on=%@&tru=%@&upd=%@&ver=%@&os=%@", EQNServerUrlCalibration,e_t,u_id,lat,lon,acc,a_max,d_not,calib,ch,s_on,tru,upd,ver,os];
return [NSURL URLWithString:stringUrl];
}
+ (NSString *)ottieniVersioneComeIntero
{
NSNumber * versone = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
int versioneItero = [versone intValue];
return [NSString stringWithFormat:@"%i", versioneItero];
}
+ (NSURL *)urlInvioMessagioTerremoto:(NSInteger )magnitudo withAdress:(NSString *)address
{
NSString *lat = [NSString stringWithFormat:@"%f", [EQNUser defaultUser].lastPosition.coordinate.latitude];
NSString *lon = [NSString stringWithFormat:@"%f", [EQNUser defaultUser].lastPosition.coordinate.longitude];
NSDate *date = [NSDate date];
NSDateFormatter *formatOre = [[NSDateFormatter alloc] init];
[formatOre setDateFormat:@"HH"];
NSString *ora = [formatOre stringFromDate:date];
NSString *stringUrl = [NSString stringWithFormat:@"%@?u_id=%@&lat=%@&lon=%@&mag=%ld&address=%@&hod=%@", EQNServerUrlSendUserReport, [EQNUser defaultUser].user_ID, lat, lon, (long)magnitudo, address, ora];
NSURL *url = [NSURL URLWithString:stringUrl];
if (url) {
return url;
}
stringUrl = [NSString stringWithFormat:@"%@?u_id=%@&lat=%@&lon=%@&mag=%ld&hod=%@", EQNServerUrlSendUserReport, [EQNUser defaultUser].user_ID, lat, lon, (long)magnitudo, ora];
return [NSURL URLWithString:stringUrl];
}
+ (NSURL *)urlInvioCommentoTerremoto:(NSString *)commento codeMessage:(NSString *)code
{
NSString *codeEscaped = [code stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet ]];
NSString *commentEscaped = [commento stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet ]];
NSString *stringUrl = [NSString stringWithFormat:@"%@?u_id=%@&e_code=%@&message=%@", EQNServerUrlSendUserReportMessage, [EQNUser defaultUser].user_ID, codeEscaped, commentEscaped];
return [NSURL URLWithString: stringUrl];
}
+ (NSURL *)urlInvioImpostazioniNotifiche
{
NSString *n_e = [NSString stringWithFormat:@"&n_e=%i",[EQNAllertaSismica sharedInstance].isAbilitato];
NSString *n_m = [NSString stringWithFormat:@"&n_m=%i",[EQNNotificheSegnalazioniUtente sharedInstance].isAbilitato];
NSString *n_o = [NSString stringWithFormat:@"&n_o=%i",[EQNNotificheReteSismiche sharedInstance].isAbilitato];
NSString *n_o_near = [NSString stringWithFormat:@"&n_o_near=%i",[EQNNotificheReteSismiche sharedInstance].isAbilitaVicini];
NSString *n_o_mag = [NSString stringWithFormat:@"&n_o_mag=%@",[EQNNotificheReteSismiche sharedInstance].energiaSisma];
NSString *n_o_usgs = @"&n_o_usgs=0";
NSString *n_o_emsc = @"&n_o_emsc=0";
NSString *n_o_ingv = @"&n_o_ingv=0";
NSString *n_o_ign = @"&n_o_ign=0";
NSString *n_o_csi = @"&n_o_csi=0";
NSString *n_o_jma = @"&n_o_jma=0";
NSString *n_o_ineter = @"&n_o_ineter=0";
NSString *n_o_ssn = @"&n_o_ssn=0";
NSString *n_o_sgc = @"&n_o_sgc=0";
NSString *n_o_rsn = @"&n_o_rsn=0";
NSString *n_o_csn = @"&n_o_csn=0";
NSString *n_o_funvisis = @"&n_o_funvisis=0";
NSString *n_o_geonet = @"&n_o_geonet=0";
NSString *n_o_inpres = @"&n_o_inpres=0";
NSString *n_o_igepn = @"&n_o_igepn=0";
NSString *n_o_phivolcs = @"&n_o_phivolcs=0";
NSString *n_o_igp = @"&n_o_igp=0";
NSString *n_o_uasd = @"&n_o_uasd=0";
NSString *n_o_rspr = @"&n_o_rspr=0";
NSString *n_o_bdtim = @"&n_o_bdtim=0";
NSString *n_o_ncs = @"&n_o_ncs=0";
for (NSString *ente in [EQNNotificheReteSismiche sharedInstance].listaEnti) {
if ([ente isEqualToString:@"USGS"]) {
n_o_usgs = @"&n_o_usgs=1";
} else if ([ente isEqualToString:@"EMSC"]) {
n_o_emsc = @"&n_o_emsc=1";
} else if ([ente isEqualToString:@"INGV"]) {
n_o_ingv = @"&n_o_ingv=1";
} else if ([ente isEqualToString:@"IGN"]) {
n_o_ign = @"&n_o_ign=1";
} else if ([ente isEqualToString:@"CSI"]) {
n_o_csi = @"&n_o_csi=1";
} else if ([ente isEqualToString:@"JMA"]) {
n_o_jma = @"&n_o_jma=1";
} else if ([ente isEqualToString:@"Ineter"]) {
n_o_ineter = @"&n_o_ineter=1";
} else if ([ente isEqualToString:@"SSN"]) {
n_o_ssn = @"&n_o_ssn=1";
} else if ([ente isEqualToString:@"SGC"]) {
n_o_sgc = @"&n_o_sgc=1";
} else if ([ente isEqualToString:@"RSN"]) {
n_o_rsn = @"&n_o_rsn=1";
} else if ([ente isEqualToString:@"CSN"]) {
n_o_csn = @"&n_o_csn=1";
} else if ([ente isEqualToString:@"FUNVISIS"]) {
n_o_funvisis = @"&n_o_funvisis=1";
} else if ([ente isEqualToString:@"GeoNet"]) {
n_o_geonet = @"&n_o_geonet=1";
} else if ([ente isEqualToString:@"INPRES"]) {
n_o_inpres = @"&n_o_inpres=1";
} else if ([ente isEqualToString:@"IGEPN"]) {
n_o_igepn = @"&n_o_igepn=1";
} else if ([ente isEqualToString:@"PHIVOLCS"]) {
n_o_phivolcs = @"&n_o_phivolcs=1";
} else if ([ente isEqualToString:@"IGP"]) {
n_o_igp = @"&n_o_igp=1";
} else if ([ente isEqualToString:@"UASD"]) {
n_o_uasd = @"&n_o_uasd=1";
} else if ([ente isEqualToString:@"RSPR"]) {
n_o_rspr = @"&n_o_rspr=1";
} else if ([ente isEqualToString:@"BDTIM"]) {
n_o_bdtim = @"&n_o_bdtim=1";
} else if ([ente isEqualToString:@"NCS"]) {
n_o_ncs = @"&n_o_ncs=1";
}
}
NSString *enti = [NSString stringWithFormat:@"%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@", n_o_usgs, n_o_emsc, n_o_ingv, n_o_ign, n_o_csi, n_o_jma, n_o_ineter, n_o_ssn, n_o_sgc, n_o_rsn, n_o_csn, n_o_funvisis, n_o_geonet, n_o_inpres, n_o_igepn, n_o_phivolcs, n_o_igp, n_o_uasd, n_o_rspr, n_o_bdtim, n_o_ncs];
NSString *n_o_strong = [NSString stringWithFormat:@"&n_o_strong=%i",[EQNNotificheReteSismiche sharedInstance].isTerremortiForti];
// andrea.busi - 27/09/2020: manteniamo il controllo su eventuali valori "Qualsiasi intensità/distanza" salvati
// non sembrano servire, perchè i valori sono salvati come 100.000 anche nelle versioni prcedenti alla 2.0
// per sicurezza, però, teniamo i controlli
NSString *n_o_strmag = [NSString stringWithFormat:@"&n_o_strmag=%@", [EQNNotificheReteSismiche sharedInstance].energiaTerremotiForti];
if ([[EQNAllertaSismica sharedInstance].sismiDaNotificare isEqualToString:NSLocalizedString(@"Qualsiasi intensità", @"")]) {
n_o_strmag = @"&n_o_strmag=0";
}
NSString *r_e_mild = [NSString stringWithFormat:@"&r_e_mild=%@", [EQNAllertaSismica sharedInstance].raggioSismiLievi];
if ([[EQNAllertaSismica sharedInstance].raggioSismiLievi isEqualToString:NSLocalizedString(@"Qualsiasi distanza", @"")]) {
r_e_mild = @"&r_e_mild=100000";
}
NSString *r_e_strong = [NSString stringWithFormat:@"&r_e_strong=%@", [EQNAllertaSismica sharedInstance].raggioSismiForti];
if ([[EQNAllertaSismica sharedInstance].raggioSismiForti isEqualToString:NSLocalizedString(@"Qualsiasi distanza", @"")]) {
r_e_strong = @"&r_e_strong=100000";
}
NSString *r_m = [NSString stringWithFormat:@"&r_m=%@", [EQNNotificheSegnalazioniUtente sharedInstance].distanzaPosizione];
if ([[EQNNotificheSegnalazioniUtente sharedInstance].distanzaPosizione isEqualToString:NSLocalizedString(@"Qualsiasi distanza", @"")]) {
r_m = @"&r_m=100000";
}
NSString *r_o = [NSString stringWithFormat:@"&r_o=%@", [EQNNotificheReteSismiche sharedInstance].distanzaPosizione];
if ([[EQNNotificheReteSismiche sharedInstance].distanzaPosizione isEqualToString:NSLocalizedString(@"Qualsiasi distanza", @"")]) {
r_o = @"&r_o=100000";
}
NSString *n_e_type = [NSString stringWithFormat:@"&n_e_type=%@", [EQNAllertaSismica sharedInstance].sismiDaNotificare];
NSString *stringUrl = [NSString stringWithFormat:@"%@?u_id=%@&lat=%f&lon=%f%@%@%@%@%@%@%@%@%@%@%@%@%@", EQNServerUrlUploadSettings, [EQNUser defaultUser].user_ID, [EQNUser defaultUser].lastPosition.coordinate.latitude, [EQNUser defaultUser].lastPosition.coordinate.longitude, n_e, n_m, n_o, n_o_near,n_o_mag, enti, n_o_strong, n_e_type, n_o_strmag, r_e_mild, r_e_strong, r_m, r_o];
return [NSURL URLWithString:stringUrl];
}
+ (NSURL *)urlDownloadOfferTimeRemaining
{
NSString *stringUrl = [NSString stringWithFormat:@"%@?u_id=%@", EQNServerUrlOfferTimeRemaining, [EQNUser defaultUser].user_ID];
return [NSURL URLWithString:stringUrl];
}
+ (NSURL *)urlRegisterSubscriptionForProductId:(NSString *)productId transactionId:(NSString *)transactionId
{
NSString *walletSub = @""; // codice associato all'acquisto che conosce anche l'utente (se esiste)
NSString *stringUrl = [NSString stringWithFormat:@"%@?u_id=%@&token_sub=%@&wallet_sub=%@&sku=%@&ios=1", EQNServerUrlRegisterSubscription, [EQNUser defaultUser].user_ID, transactionId, walletSub, productId];
return [NSURL URLWithString:stringUrl];
}
+ (NSURL *)urlAlertPushTest
{
EQNGenericValue *radius = [EQNData raggioSismaFor:[EQNAllertaSismica sharedInstance].raggioSismiLievi];
CLLocationCoordinate2D lastPosition = [EQNUser defaultUser].lastPosition.coordinate;
NSString *stringUrl = [NSString stringWithFormat:@"%@?u_id=%@&radius=%@&lat=%f&lon=%f", EQNServerUrlTestAlarm, [EQNUser defaultUser].user_ID, radius.value, lastPosition.latitude, lastPosition.longitude ];
return [NSURL URLWithString:stringUrl];
}
+ (NSURL *)urlAlertSimulator
{
CLLocationCoordinate2D userLastPosition = [EQNUser defaultUser].lastPosition.coordinate;
CLLocationDistance distance = 100;
NSInteger top10k = EQNPurchaseUtility.isTop10kEnabled ? 1 : 0;
NSInteger top100k = EQNPurchaseUtility.isTop100kEnabled ? 1 : 0;
NSString *stringUrl = [NSString stringWithFormat:@"%@?lat=%f&lon=%f&dis=%f&top10k=%lu&top100k=%lu", EQNServerUrlAlertSimulator, userLastPosition.latitude, userLastPosition.longitude, distance, (long)top10k, (long)top100k];
return [NSURL URLWithString:stringUrl];
}
@end