1/** 2 * @file MEGASdk.mm 3 * @brief Allows to control a MEGA account or a shared folder 4 * 5 * (c) 2013-2014 by Mega Limited, Auckland, New Zealand 6 * 7 * This file is part of the MEGA SDK - Client Access Engine. 8 * 9 * Applications using the MEGA API must present a valid application key 10 * and comply with the the rules set forth in the Terms of Service. 11 * 12 * The MEGA SDK is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 * 16 * @copyright Simplified (2-clause) BSD License. 17 * 18 * You should have received a copy of the license along with this 19 * program. 20 */ 21 22#import "MEGASdk.h" 23#import "megaapi.h" 24#import "MEGANode+init.h" 25#import "MEGAUser+init.h" 26#import "MEGATransfer+init.h" 27#import "MEGATransferList+init.h" 28#import "MEGANodeList+init.h" 29#import "MEGAUserList+init.h" 30#import "MEGAUserAlertList+init.h" 31#import "MEGAError+init.h" 32#import "MEGAShareList+init.h" 33#import "MEGAContactRequest+init.h" 34#import "MEGAContactRequestList+init.h" 35#import "MEGAChildrenLists+init.h" 36#import "MEGARecentActionBucket+init.h" 37#import "MEGABackgroundMediaUpload+init.h" 38#import "DelegateMEGARequestListener.h" 39#import "DelegateMEGATransferListener.h" 40#import "DelegateMEGAGlobalListener.h" 41#import "DelegateMEGAListener.h" 42#import "DelegateMEGALoggerListener.h" 43#import "DelegateMEGATreeProcessorListener.h" 44#import "MEGAFileInputStream.h" 45#import "MEGADataInputStream.h" 46#import "MEGACancelToken+init.h" 47#import "MEGAPushNotificationSettings+init.h" 48 49#import <set> 50#import <pthread.h> 51 52using namespace mega; 53 54@interface MEGASdk () { 55 pthread_mutex_t listenerMutex; 56} 57 58@property (nonatomic, assign) std::set<DelegateMEGARequestListener *>activeRequestListeners; 59@property (nonatomic, assign) std::set<DelegateMEGATransferListener *>activeTransferListeners; 60@property (nonatomic, assign) std::set<DelegateMEGAGlobalListener *>activeGlobalListeners; 61@property (nonatomic, assign) std::set<DelegateMEGAListener *>activeMegaListeners; 62@property (nonatomic, assign) std::set<DelegateMEGALoggerListener *>activeLoggerListeners; 63 64- (MegaRequestListener *)createDelegateMEGARequestListener:(id<MEGARequestDelegate>)delegate singleListener:(BOOL)singleListener; 65- (MegaTransferListener *)createDelegateMEGATransferListener:(id<MEGATransferDelegate>)delegate singleListener:(BOOL)singleListener; 66- (MegaGlobalListener *)createDelegateMEGAGlobalListener:(id<MEGAGlobalDelegate>)delegate; 67- (MegaListener *)createDelegateMEGAListener:(id<MEGADelegate>)delegate; 68- (MegaLogger *)createDelegateMegaLogger:(id<MEGALoggerDelegate>)delegate; 69 70@property MegaApi *megaApi; 71 72@end 73 74@implementation MEGASdk 75 76#pragma mark - Properties 77 78- (NSString *)myEmail { 79 const char *val = self.megaApi->getMyEmail(); 80 if (!val) return nil; 81 82 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 83 84 delete [] val; 85 return ret; 86} 87 88- (MEGANode *)rootNode { 89 MegaNode *node = self.megaApi->getRootNode(); 90 return node ? [[MEGANode alloc] initWithMegaNode:node cMemoryOwn:YES] : nil; 91} 92 93- (MEGANode *)rubbishNode { 94 MegaNode *node = self.megaApi->getRubbishNode(); 95 return node ? [[MEGANode alloc] initWithMegaNode:node cMemoryOwn:YES] : nil; 96} 97 98- (MEGANode *)inboxNode { 99 MegaNode *node = self.megaApi->getInboxNode(); 100 return node ? [[MEGANode alloc] initWithMegaNode:node cMemoryOwn:YES] : nil; 101} 102 103- (MEGATransferList *)transfers { 104 return [[MEGATransferList alloc] initWithTransferList:self.megaApi->getTransfers() cMemoryOwn:YES]; 105} 106 107- (MEGATransferList *)downloadTransfers { 108 return [[MEGATransferList alloc] initWithTransferList:self.megaApi->getTransfers(MegaTransfer::TYPE_DOWNLOAD) cMemoryOwn:YES]; 109} 110 111- (MEGATransferList *)uploadTransfers { 112 return [[MEGATransferList alloc] initWithTransferList:self.megaApi->getTransfers(MegaTransfer::TYPE_UPLOAD) cMemoryOwn:YES]; 113} 114 115- (Retry)waiting { 116 return (Retry) self.megaApi->isWaiting(); 117} 118 119- (NSNumber *)totalsDownloadedBytes { 120 return [[NSNumber alloc] initWithLongLong:self.megaApi->getTotalDownloadedBytes()]; 121} 122 123- (NSNumber *)totalsUploadedBytes { 124 return [[NSNumber alloc] initWithLongLong:self.megaApi->getTotalUploadedBytes()]; 125} 126 127- (NSUInteger)totalNodes { 128 return self.megaApi->getNumNodes(); 129} 130 131- (NSString *)masterKey { 132 const char *val = self.megaApi->exportMasterKey(); 133 if (!val) return nil; 134 135 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 136 137 delete [] val; 138 return ret; 139} 140 141- (NSString *)userAgent { 142 const char *val = self.megaApi->getUserAgent(); 143 if (!val) return nil; 144 145 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 146 147 return ret; 148} 149 150- (MEGAUser *)myUser { 151 MegaUser *user = self.megaApi->getMyUser(); 152 return user ? [[MEGAUser alloc] initWithMegaUser:user cMemoryOwn:YES] : nil; 153} 154 155- (BOOL)isAchievementsEnabled { 156 return self.megaApi->isAchievementsEnabled(); 157} 158 159#pragma mark - Business 160 161- (BOOL)isBusinessAccount { 162 return self.megaApi->isBusinessAccount(); 163} 164 165- (BOOL)isMasterBusinessAccount { 166 return self.megaApi->isMasterBusinessAccount(); 167} 168 169- (BOOL)isBusinessAccountActive { 170 return self.megaApi->isBusinessAccountActive(); 171} 172 173- (BusinessStatus)businessStatus { 174 return (BusinessStatus) self.megaApi->getBusinessStatus(); 175} 176 177- (NSInteger)numUnreadUserAlerts { 178 return self.megaApi->getNumUnreadUserAlerts(); 179} 180 181- (long long)bandwidthOverquotaDelay { 182 return self.megaApi->getBandwidthOverquotaDelay(); 183} 184 185#pragma mark - Init 186 187- (instancetype)initWithAppKey:(NSString *)appKey userAgent:(NSString *)userAgent { 188 self.megaApi = new MegaApi((appKey != nil) ? [appKey UTF8String] : (const char *)NULL, (const char *)NULL, (userAgent != nil) ? [userAgent UTF8String] : (const char *)NULL); 189 190 if (pthread_mutex_init(&listenerMutex, NULL)) { 191 return nil; 192 } 193 194 return self; 195} 196 197- (instancetype)initWithAppKey:(NSString *)appKey userAgent:(NSString *)userAgent basePath:(NSString *)basePath { 198 self.megaApi = new MegaApi((appKey != nil) ? [appKey UTF8String] : (const char *)NULL, (basePath != nil) ? [basePath UTF8String] : (const char*)NULL, (userAgent != nil) ? [userAgent UTF8String] : (const char *)NULL); 199 200 if (pthread_mutex_init(&listenerMutex, NULL)) { 201 return nil; 202 } 203 204 return self; 205} 206 207- (void)dealloc { 208 delete _megaApi; 209 pthread_mutex_destroy(&listenerMutex); 210} 211 212- (MegaApi *)getCPtr { 213 return _megaApi; 214} 215 216#pragma mark - Add and remove delegates 217 218- (void)addMEGADelegate:(id<MEGADelegate>)delegate { 219 self.megaApi->addListener([self createDelegateMEGAListener:delegate]); 220} 221 222- (void)addMEGARequestDelegate:(id<MEGARequestDelegate>)delegate { 223 self.megaApi->addRequestListener([self createDelegateMEGARequestListener:delegate singleListener:NO]); 224} 225 226- (void)addMEGATransferDelegate:(id<MEGATransferDelegate>)delegate { 227 self.megaApi->addTransferListener([self createDelegateMEGATransferListener:delegate singleListener:NO]); 228} 229 230- (void)addMEGAGlobalDelegate:(id<MEGAGlobalDelegate>)delegate { 231 self.megaApi->addGlobalListener([self createDelegateMEGAGlobalListener:delegate]); 232} 233 234- (void)removeMEGADelegate:(id<MEGADelegate>)delegate { 235 std::vector<DelegateMEGAListener *> listenersToRemove; 236 237 pthread_mutex_lock(&listenerMutex); 238 std::set<DelegateMEGAListener *>::iterator it = _activeMegaListeners.begin(); 239 while (it != _activeMegaListeners.end()) { 240 DelegateMEGAListener *delegateListener = *it; 241 if (delegateListener->getUserListener() == delegate) { 242 listenersToRemove.push_back(delegateListener); 243 _activeMegaListeners.erase(it++); 244 } 245 else { 246 it++; 247 } 248 } 249 pthread_mutex_unlock(&listenerMutex); 250 251 for (int i = 0; i < listenersToRemove.size(); i++) 252 { 253 self.megaApi->removeListener(listenersToRemove[i]); 254 delete listenersToRemove[i]; 255 } 256} 257 258- (void)removeMEGARequestDelegate:(id<MEGARequestDelegate>)delegate { 259 std::vector<DelegateMEGARequestListener *> listenersToRemove; 260 261 pthread_mutex_lock(&listenerMutex); 262 std::set<DelegateMEGARequestListener *>::iterator it = _activeRequestListeners.begin(); 263 while (it != _activeRequestListeners.end()) { 264 DelegateMEGARequestListener *delegateListener = *it; 265 if (delegateListener->getUserListener() == delegate) { 266 listenersToRemove.push_back(delegateListener); 267 _activeRequestListeners.erase(it++); 268 } 269 else { 270 it++; 271 } 272 } 273 pthread_mutex_unlock(&listenerMutex); 274 275 for (int i = 0; i < listenersToRemove.size(); i++) 276 { 277 self.megaApi->removeRequestListener(listenersToRemove[i]); 278 delete listenersToRemove[i]; 279 } 280} 281 282- (void)removeMEGATransferDelegate:(id<MEGATransferDelegate>)delegate { 283 std::vector<DelegateMEGATransferListener *> listenersToRemove; 284 285 pthread_mutex_lock(&listenerMutex); 286 std::set<DelegateMEGATransferListener *>::iterator it = _activeTransferListeners.begin(); 287 while (it != _activeTransferListeners.end()) { 288 DelegateMEGATransferListener *delegateListener = *it; 289 if (delegateListener->getUserListener() == delegate) { 290 listenersToRemove.push_back(delegateListener); 291 _activeTransferListeners.erase(it++); 292 } 293 else { 294 it++; 295 } 296 } 297 pthread_mutex_unlock(&listenerMutex); 298 299 for (int i = 0; i < listenersToRemove.size(); i++) 300 { 301 self.megaApi->removeTransferListener(listenersToRemove[i]); 302 delete listenersToRemove[i]; 303 } 304} 305 306- (void)removeMEGAGlobalDelegate:(id<MEGAGlobalDelegate>)delegate { 307 std::vector<DelegateMEGAGlobalListener *> listenersToRemove; 308 309 pthread_mutex_lock(&listenerMutex); 310 std::set<DelegateMEGAGlobalListener *>::iterator it = _activeGlobalListeners.begin(); 311 while (it != _activeGlobalListeners.end()) { 312 DelegateMEGAGlobalListener *delegateListener = *it; 313 if (delegateListener->getUserListener() == delegate) { 314 listenersToRemove.push_back(delegateListener); 315 _activeGlobalListeners.erase(it++); 316 } 317 else { 318 it++; 319 } 320 } 321 pthread_mutex_unlock(&listenerMutex); 322 323 324 for (int i = 0; i < listenersToRemove.size(); i++) 325 { 326 self.megaApi->removeGlobalListener(listenersToRemove[i]); 327 delete listenersToRemove[i]; 328 } 329 330} 331 332- (void)addLoggerDelegate:(id<MEGALoggerDelegate>)delegate { 333 MegaApi::addLoggerObject([self createDelegateMegaLogger:delegate]); 334} 335 336- (void)removeLoggerDelegate:(id<MEGALoggerDelegate>)delegate { 337 std::vector<DelegateMEGALoggerListener *> listenersToRemove; 338 339 pthread_mutex_lock(&listenerMutex); 340 std::set<DelegateMEGALoggerListener *>::iterator it = _activeLoggerListeners.begin(); 341 while (it != _activeLoggerListeners.end()) { 342 DelegateMEGALoggerListener *delegateListener = *it; 343 if (delegateListener->getUserListener() == delegate) { 344 listenersToRemove.push_back(delegateListener); 345 _activeLoggerListeners.erase(it++); 346 } 347 else { 348 it++; 349 } 350 } 351 pthread_mutex_unlock(&listenerMutex); 352 353 for (int i = 0; i < listenersToRemove.size(); i++) 354 { 355 MegaApi::removeLoggerObject(listenersToRemove[i]); 356 delete listenersToRemove[i]; 357 } 358} 359 360#pragma mark - Utils 361 362- (NSString *)hashForBase64pwkey:(NSString *)base64pwkey email:(NSString *)email { 363 if(base64pwkey == nil || email == nil) return nil; 364 365 const char *val = self.megaApi->getStringHash([base64pwkey UTF8String], [email UTF8String]); 366 if (!val) return nil; 367 368 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 369 370 delete [] val; 371 return ret; 372} 373 374+ (uint64_t)handleForBase64Handle:(NSString *)base64Handle { 375 if(base64Handle == nil) return ::mega::INVALID_HANDLE; 376 377 return MegaApi::base64ToHandle([base64Handle UTF8String]); 378} 379 380+ (uint64_t)handleForBase64UserHandle:(NSString *)base64UserHandle { 381 if(base64UserHandle == nil) return ::mega::INVALID_HANDLE; 382 383 return MegaApi::base64ToUserHandle([base64UserHandle UTF8String]); 384} 385 386+ (NSString *)base64HandleForHandle:(uint64_t)handle { 387 const char *val = MegaApi::handleToBase64(handle); 388 if (!val) return nil; 389 390 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 391 392 delete [] val; 393 return ret; 394} 395 396+ (NSString *)base64HandleForUserHandle:(uint64_t)userhandle { 397 const char *val = MegaApi::userHandleToBase64(userhandle); 398 if (!val) return nil; 399 400 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 401 402 delete [] val; 403 return ret; 404} 405 406- (void)retryPendingConnections { 407 self.megaApi->retryPendingConnections(); 408} 409 410- (void)reconnect { 411 self.megaApi->retryPendingConnections(true, true); 412} 413 414- (BOOL)serverSideRubbishBinAutopurgeEnabled { 415 return self.megaApi->serverSideRubbishBinAutopurgeEnabled(); 416} 417 418- (BOOL)appleVoipPushEnabled { 419 return self.megaApi->appleVoipPushEnabled(); 420} 421 422- (void)getSessionTransferURL:(NSString *)path delegate:(id<MEGARequestDelegate>)delegate { 423 self.megaApi->getSessionTransferURL(path.UTF8String, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 424} 425 426- (void)getSessionTransferURL:(NSString *)path { 427 self.megaApi->getSessionTransferURL(path.UTF8String); 428} 429 430#pragma mark - Login Requests 431 432- (BOOL)multiFactorAuthAvailable { 433 return self.megaApi->multiFactorAuthAvailable(); 434} 435 436- (void)multiFactorAuthCheckWithEmail:(NSString *)email delegate:(id<MEGARequestDelegate>)delegate { 437 self.megaApi->multiFactorAuthCheck((email ? email.UTF8String : NULL), [self createDelegateMEGARequestListener:delegate singleListener:YES]); 438} 439 440- (void)multiFactorAuthCheckWithEmail:(NSString *)email { 441 self.megaApi->multiFactorAuthCheck((email ? email.UTF8String : NULL)); 442} 443 444- (void)multiFactorAuthGetCodeWithDelegate:(id<MEGARequestDelegate>)delegate { 445 self.megaApi->multiFactorAuthGetCode([self createDelegateMEGARequestListener:delegate singleListener:YES]); 446} 447 448- (void)multiFactorAuthGetCode { 449 self.megaApi->multiFactorAuthGetCode(); 450} 451 452- (void)multiFactorAuthEnableWithPin:(NSString *)pin delegate:(id<MEGARequestDelegate>)delegate { 453 self.megaApi->multiFactorAuthEnable((pin ? pin.UTF8String : NULL), [self createDelegateMEGARequestListener:delegate singleListener:YES]); 454} 455 456- (void)multiFactorAuthEnableWithPin:(NSString *)pin { 457 self.megaApi->multiFactorAuthEnable((pin ? pin.UTF8String : NULL)); 458} 459 460- (void)multiFactorAuthDisableWithPin:(NSString *)pin delegate:(id<MEGARequestDelegate>)delegate { 461 self.megaApi->multiFactorAuthDisable((pin ? pin.UTF8String : NULL), [self createDelegateMEGARequestListener:delegate singleListener:YES]); 462} 463 464- (void)multiFactorAuthDisableWithPin:(NSString *)pin { 465 self.megaApi->multiFactorAuthDisable((pin ? pin.UTF8String : NULL)); 466} 467 468- (void)multiFactorAuthLoginWithEmail:(NSString *)email password:(NSString *)password pin:(NSString *)pin delegate:(id<MEGARequestDelegate>)delegate { 469 self.megaApi->multiFactorAuthLogin((email ? email.UTF8String : NULL), (password ? password.UTF8String : NULL), (pin ? pin.UTF8String : NULL), [self createDelegateMEGARequestListener:delegate singleListener:YES]); 470} 471 472- (void)multiFactorAuthLoginWithEmail:(NSString *)email password:(NSString *)password pin:(NSString *)pin { 473 self.megaApi->multiFactorAuthLogin((email ? email.UTF8String : NULL), (password ? password.UTF8String : NULL), (pin ? pin.UTF8String : NULL)); 474} 475 476- (void)multiFactorAuthChangePassword:(NSString *)oldPassword newPassword:(NSString *)newPassword pin:(NSString *)pin delegate:(id<MEGARequestDelegate>)delegate { 477 self.megaApi->multiFactorAuthChangePassword((oldPassword ? oldPassword.UTF8String : NULL), (newPassword ? newPassword.UTF8String : NULL), (pin ? pin.UTF8String : NULL), [self createDelegateMEGARequestListener:delegate singleListener:YES]); 478} 479 480- (void)multiFactorAuthChangePassword:(NSString *)oldPassword newPassword:(NSString *)newPassword pin:(NSString *)pin { 481 self.megaApi->multiFactorAuthChangePassword((oldPassword ? oldPassword.UTF8String : NULL), (newPassword ? newPassword.UTF8String : NULL), (pin ? pin.UTF8String : NULL)); 482} 483 484- (void)multiFactorAuthChangeEmail:(NSString *)email pin:(NSString *)pin delegate:(id<MEGARequestDelegate>)delegate { 485 self.megaApi->multiFactorAuthChangeEmail((email ? email.UTF8String : NULL), (pin ? pin.UTF8String : NULL), [self createDelegateMEGARequestListener:delegate singleListener:YES]); 486} 487 488- (void)multiFactorAuthChangeEmail:(NSString *)email pin:(NSString *)pin { 489 self.megaApi->multiFactorAuthChangeEmail((email ? email.UTF8String : NULL), (pin ? pin.UTF8String : NULL)); 490} 491 492- (void)multiFactorAuthCancelAccountWithPin:(NSString *)pin delegate:(id<MEGARequestDelegate>)delegate { 493 self.megaApi->multiFactorAuthCancelAccount((pin ? pin.UTF8String : NULL), [self createDelegateMEGARequestListener:delegate singleListener:YES]); 494} 495 496- (void)multiFactorAuthCancelAccountWithPin:(NSString *)pin { 497 self.megaApi->multiFactorAuthCancelAccount((pin ? pin.UTF8String : NULL)); 498} 499 500- (void)fetchTimeZoneWithDelegate:(id<MEGARequestDelegate>)delegate { 501 self.megaApi->fetchTimeZone([self createDelegateMEGARequestListener:delegate singleListener:YES]); 502} 503 504- (void)fetchTimeZone { 505 self.megaApi->fetchTimeZone(); 506} 507 508- (void)loginWithEmail:(NSString *)email password:(NSString *)password { 509 self.megaApi->login((email != nil) ? [email UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL); 510} 511 512- (void)loginWithEmail:(NSString *)email password:(NSString *)password delegate:(id<MEGARequestDelegate>)delegate{ 513 self.megaApi->login((email != nil) ? [email UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 514} 515 516- (void)sendDevCommand:(NSString *)command email:(NSString *)email delegate:(id<MEGARequestDelegate>)delegate { 517 self.megaApi->sendDevCommand(command.UTF8String, email.UTF8String, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 518} 519 520- (NSString *)dumpSession { 521 const char *val = self.megaApi->dumpSession(); 522 if (!val) return nil; 523 524 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 525 526 delete [] val; 527 return ret; 528} 529 530- (NSString *)sequenceNumber { 531 const char *val = self.megaApi->getSequenceNumber(); 532 if (!val) return nil; 533 534 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 535 536 delete [] val; 537 return ret; 538} 539 540- (void)fastLoginWithEmail:(NSString *)email stringHash:(NSString *)stringHash base64pwKey:(NSString *)base64pwKey { 541 self.megaApi->fastLogin((email != nil) ? [email UTF8String] : NULL, (stringHash != nil) ? [stringHash UTF8String] : NULL, (base64pwKey != nil) ? [base64pwKey UTF8String] : NULL); 542} 543 544- (void)fastLoginWithEmail:(NSString *)email stringHash:(NSString *)stringHash base64pwKey:(NSString *)base64pwKey delegate:(id<MEGARequestDelegate>)delegate { 545 self.megaApi->fastLogin((email != nil) ? [email UTF8String] : NULL, (stringHash != nil) ? [stringHash UTF8String] : NULL, (base64pwKey != nil) ? [base64pwKey UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 546} 547 548- (void)fastLoginWithSession:(NSString *)session { 549 self.megaApi->fastLogin((session != nil) ? [session UTF8String] : NULL); 550} 551 552- (void)fastLoginWithSession:(NSString *)session delegate:(id<MEGARequestDelegate>)delegate { 553 self.megaApi->fastLogin((session != nil) ? [session UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 554} 555 556- (void)loginToFolderLink:(NSString *)folderLink delegate:(id<MEGARequestDelegate>)delegate { 557 self.megaApi->loginToFolder((folderLink != nil) ? [folderLink UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 558} 559 560- (void)loginToFolderLink:(NSString *)folderLink { 561 self.megaApi->loginToFolder((folderLink != nil) ? [folderLink UTF8String] : NULL); 562} 563 564- (NSInteger)isLoggedIn { 565 return self.megaApi->isLoggedIn(); 566} 567 568- (void)fetchNodesWithDelegate:(id<MEGARequestDelegate>)delegate { 569 self.megaApi->fetchNodes([self createDelegateMEGARequestListener:delegate singleListener:YES]); 570} 571 572- (void)fetchNodes { 573 self.megaApi->fetchNodes(); 574} 575 576- (void)logoutWithDelegate:(id<MEGARequestDelegate>)delegate { 577 self.megaApi->logout([self createDelegateMEGARequestListener:delegate singleListener:YES]); 578} 579 580- (void)logout { 581 self.megaApi->logout(); 582} 583 584- (void)localLogoutWithDelegate:(id<MEGARequestDelegate>)delegate { 585 self.megaApi->localLogout([self createDelegateMEGARequestListener:delegate singleListener:YES]); 586} 587 588- (void)localLogout { 589 self.megaApi->localLogout(); 590} 591 592- (void)invalidateCache { 593 self.megaApi->invalidateCache(); 594} 595 596- (PasswordStrength)passwordStrength:(NSString *)password { 597 return (PasswordStrength) self.megaApi->getPasswordStrength(password ? [password UTF8String] : NULL); 598} 599 600- (BOOL)checkPassword:(NSString *)password { 601 return self.megaApi->checkPassword(password ? [password UTF8String] : NULL); 602} 603 604- (NSString *)myCredentials { 605 const char *val = self.megaApi->getMyCredentials(); 606 if (val) { 607 NSString *ret = [NSString.alloc initWithUTF8String:val]; 608 delete [] val; 609 return ret; 610 } else { 611 return nil; 612 } 613} 614 615- (void)getUserCredentials:(MEGAUser *)user delegate:(id<MEGARequestDelegate>)delegate { 616 self.megaApi->getUserCredentials(user ? user.getCPtr : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 617} 618 619- (void)getUserCredentials:(MEGAUser *)user { 620 self.megaApi->getUserCredentials(user ? user.getCPtr : NULL); 621} 622 623- (BOOL)areCredentialsVerifiedOfUser:(MEGAUser *)user { 624 return self.megaApi->areCredentialsVerified(user ? user.getCPtr : NULL); 625} 626 627- (void)verifyCredentialsOfUser:(MEGAUser *)user delegate:(id<MEGARequestDelegate>)delegate { 628 self.megaApi->verifyCredentials(user ? user.getCPtr : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 629} 630 631- (void)verifyCredentialsOfUser:(MEGAUser *)user { 632 self.megaApi->verifyCredentials(user ? user.getCPtr : NULL); 633} 634 635- (void)resetCredentialsOfUser:(MEGAUser *)user delegate:(id<MEGARequestDelegate>)delegate { 636 self.megaApi->resetCredentials(user ? user.getCPtr : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 637} 638 639- (void)resetCredentialsOfUser:(MEGAUser *)user { 640 self.megaApi->resetCredentials(user ? user.getCPtr : NULL); 641} 642 643#pragma mark - Create account and confirm account Requests 644 645 646- (void)createAccountWithEmail:(NSString *)email password:(NSString *)password firstname:(NSString *)firstname lastname:(NSString *)lastname { 647 self.megaApi->createAccount((email != nil) ? [email UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL, (firstname != nil) ? [firstname UTF8String] : NULL, (lastname != nil) ? [lastname UTF8String] : NULL); 648} 649 650- (void)createAccountWithEmail:(NSString *)email password:(NSString *)password firstname:(NSString *)firstname lastname:(NSString *)lastname delegate:(id<MEGARequestDelegate>)delegate { 651 self.megaApi->createAccount((email != nil) ? [email UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL, (firstname != nil) ? [firstname UTF8String] : NULL, (lastname != nil) ? [lastname UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 652} 653 654- (void)createAccountWithEmail:(NSString *)email password:(NSString *)password firstname:(NSString *)firstname lastname:(NSString *)lastname lastPublicHandle:(uint64_t)lastPublicHandle lastPublicHandleType:(AffiliateType)lastPublicHandleType lastAccessTimestamp:(uint64_t)lastAccessTimestamp { 655 self.megaApi->createAccount(email.UTF8String, password.UTF8String, firstname.UTF8String, lastname.UTF8String, lastPublicHandle, (int)lastPublicHandleType, lastAccessTimestamp); 656} 657 658- (void)createAccountWithEmail:(NSString *)email password:(NSString *)password firstname:(NSString *)firstname lastname:(NSString *)lastname lastPublicHandle:(uint64_t)lastPublicHandle lastPublicHandleType:(AffiliateType)lastPublicHandleType lastAccessTimestamp:(uint64_t)lastAccessTimestamp delegate:(id<MEGARequestDelegate>)delegate { 659 self.megaApi->createAccount(email.UTF8String, password.UTF8String, firstname.UTF8String, lastname.UTF8String, lastPublicHandle, (int)lastPublicHandleType, lastAccessTimestamp, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 660} 661 662- (void)resumeCreateAccountWithSessionId:(NSString *)sessionId delegate:(id<MEGARequestDelegate>)delegate { 663 self.megaApi->resumeCreateAccount((sessionId != nil) ? [sessionId UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 664} 665 666- (void)resumeCreateAccountWithSessionId:(NSString *)sessionId { 667 self.megaApi->resumeCreateAccount((sessionId != nil) ? [sessionId UTF8String] : NULL); 668} 669 670- (void)cancelCreateAccountWithDelegate:(id<MEGARequestDelegate>)delegate { 671 self.megaApi->cancelCreateAccount([self createDelegateMEGARequestListener:delegate singleListener:YES]); 672} 673 674- (void)cancelCreateAccount { 675 self.megaApi->cancelCreateAccount(); 676} 677 678- (void)sendSignupLinkWithEmail:(NSString *)email name:(NSString *)name password:(NSString *)password delegate:(id<MEGARequestDelegate>)delegate { 679 self.megaApi->sendSignupLink((email != nil) ? [email UTF8String] : NULL, (name != nil) ? [name UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 680} 681 682- (void)sendSignupLinkWithEmail:(NSString *)email name:(NSString *)name password:(NSString *)password { 683 self.megaApi->sendSignupLink((email != nil) ? [email UTF8String] : NULL, (name != nil) ? [name UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL); 684} 685 686- (void)fastSendSignupLinkWithEmail:(NSString *)email base64pwkey:(NSString *)base64pwkey name:(NSString *)name delegate:(id<MEGARequestDelegate>)delegate { 687 self.megaApi->fastSendSignupLink(email ? [email UTF8String] : NULL, base64pwkey ? [base64pwkey UTF8String] : NULL, name ? [name UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 688} 689 690- (void)fastSendSignupLinkWithEmail:(NSString *)email base64pwkey:(NSString *)base64pwkey name:(NSString *)name { 691 self.megaApi->fastSendSignupLink(email ? [email UTF8String] : NULL, base64pwkey ? [base64pwkey UTF8String] : NULL, name ? [name UTF8String] : NULL); 692} 693 694- (void)querySignupLink:(NSString *)link { 695 self.megaApi->querySignupLink((link != nil) ? [link UTF8String] : NULL); 696} 697 698- (void)querySignupLink:(NSString *)link delegate:(id<MEGARequestDelegate>)delegate { 699 self.megaApi->querySignupLink((link != nil) ? [link UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 700} 701 702- (void)confirmAccountWithLink:(NSString *)link password:(NSString *)password { 703 self.megaApi->confirmAccount((link != nil) ? [link UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL); 704} 705 706- (void)confirmAccountWithLink:(NSString *)link password:(NSString *)password delegate:(id<MEGARequestDelegate>)delegate { 707 self.megaApi->confirmAccount((link != nil) ? [link UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 708} 709 710- (void)fastConfirmAccountWithLink:(NSString *)link base64pwkey:(NSString *)base64pwkey { 711 self.megaApi->fastConfirmAccount((link != nil) ? [link UTF8String] : NULL, (base64pwkey != nil) ? [base64pwkey UTF8String] : NULL); 712} 713 714 715- (void)fastConfirmAccountWithLink:(NSString *)link base64pwkey:(NSString *)base64pwkey delegate:(id<MEGARequestDelegate>)delegate { 716 self.megaApi->fastConfirmAccount((link != nil) ? [link UTF8String] : NULL, (base64pwkey != nil) ? [base64pwkey UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 717} 718 719- (void)resetPasswordWithEmail:(NSString *)email hasMasterKey:(BOOL)hasMasterKey delegate:(id<MEGARequestDelegate>)delegate { 720 self.megaApi->resetPassword((email != nil) ? [email UTF8String] : NULL, hasMasterKey, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 721} 722 723- (void)resetPasswordWithEmail:(NSString *)email hasMasterKey:(BOOL)hasMasterKey { 724 self.megaApi->resetPassword((email != nil) ? [email UTF8String] : NULL, hasMasterKey); 725} 726 727- (void)queryResetPasswordLink:(NSString *)link delegate:(id<MEGARequestDelegate>)delegate { 728 self.megaApi->queryResetPasswordLink((link != nil) ? [link UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 729} 730 731- (void)queryResetPasswordLink:(NSString *)link { 732 self.megaApi->queryResetPasswordLink((link != nil) ? [link UTF8String] : NULL); 733} 734 735- (void)confirmResetPasswordWithLink:(NSString *)link newPassword:(NSString *)newPassword masterKey:(nullable NSString *)masterKey delegate:(id<MEGARequestDelegate>)delegate { 736 self.megaApi->confirmResetPassword((link != nil) ? [link UTF8String] : NULL, (newPassword != nil) ? [newPassword UTF8String] : NULL, (masterKey != nil) ? [masterKey UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 737} 738 739- (void)confirmResetPasswordWithLink:(NSString *)link newPassword:(NSString *)newPassword masterKey:(nullable NSString *)masterKey { 740 self.megaApi->confirmResetPassword((link != nil) ? [link UTF8String] : NULL, (newPassword != nil) ? [newPassword UTF8String] : NULL, (masterKey != nil) ? [masterKey UTF8String] : NULL); 741} 742 743- (void)cancelAccountWithDelegate:(id<MEGARequestDelegate>)delegate { 744 self.megaApi->cancelAccount([self createDelegateMEGARequestListener:delegate singleListener:YES]); 745} 746 747- (void)cancelAccount { 748 self.megaApi->cancelAccount(); 749} 750 751- (void)queryCancelLink:(NSString *)link { 752 self.megaApi->queryCancelLink((link != nil) ? [link UTF8String] : NULL); 753} 754 755- (void)queryCancelLink:(NSString *)link delegate:(id<MEGARequestDelegate>)delegate { 756 self.megaApi->queryCancelLink((link != nil) ? [link UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 757} 758 759- (void)confirmCancelAccountWithLink:(NSString *)link password:(NSString *)password delegate:(id<MEGARequestDelegate>)delegate { 760 self.megaApi->confirmCancelAccount((link != nil) ? [link UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 761} 762 763- (void)confirmCancelAccountWithLink:(NSString *)link password:(NSString *)password { 764 self.megaApi->confirmCancelAccount((link != nil) ? [link UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL); 765} 766 767- (void)resendVerificationEmailWithDelegate:(id<MEGARequestDelegate>)delegate { 768 self.megaApi->resendVerificationEmail([self createDelegateMEGARequestListener:delegate singleListener:YES]); 769} 770 771- (void)resendVerificationEmail { 772 self.megaApi->resendVerificationEmail(); 773} 774 775- (void)changeEmail:(NSString *)email delegate:(id<MEGARequestDelegate>)delegate { 776 self.megaApi->changeEmail((email != nil) ? [email UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 777} 778 779- (void)changeEmail:(NSString *)email { 780 self.megaApi->changeEmail((email != nil) ? [email UTF8String] : NULL); 781} 782 783- (void)queryChangeEmailLink:(NSString *)link delegate:(id<MEGARequestDelegate>)delegate { 784 self.megaApi->queryChangeEmailLink((link != nil) ? [link UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 785} 786 787- (void)queryChangeEmailLink:(NSString *)link { 788 self.megaApi->queryChangeEmailLink((link != nil) ? [link UTF8String] : NULL); 789} 790 791- (void)confirmChangeEmailWithLink:(NSString *)link password:(NSString *)password delegate:(id<MEGARequestDelegate>)delegate { 792 self.megaApi->confirmChangeEmail((link != nil) ? [link UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 793} 794 795- (void)confirmChangeEmailWithLink:(NSString *)link password:(NSString *)password { 796 self.megaApi->confirmChangeEmail((link != nil) ? [link UTF8String] : NULL, (password != nil) ? [password UTF8String] : NULL); 797} 798 799- (void)contactLinkCreateRenew:(BOOL)renew delegate:(id<MEGARequestDelegate>)delegate { 800 self.megaApi->contactLinkCreate(renew, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 801} 802 803- (void)contactLinkCreateRenew:(BOOL)renew { 804 self.megaApi->contactLinkCreate(renew); 805} 806 807- (void)contactLinkQueryWithHandle:(uint64_t)handle delegate:(id<MEGARequestDelegate>)delegate { 808 self.megaApi->contactLinkQuery(handle, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 809} 810 811- (void)contactLinkQueryWithHandle:(uint64_t)handle { 812 self.megaApi->contactLinkQuery(handle); 813} 814 815- (void)contactLinkDeleteWithDelegate:(id<MEGARequestDelegate>)delegate { 816 self.megaApi->contactLinkDelete(INVALID_HANDLE, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 817} 818 819- (void)contactLinkDelete { 820 self.megaApi->contactLinkDelete(); 821} 822 823- (void)keepMeAliveWithType:(KeepMeAlive)type enable:(BOOL)enable delegate:(id<MEGARequestDelegate>)delegate { 824 self.megaApi->keepMeAlive((int) type, enable, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 825} 826 827- (void)keepMeAliveWithType:(KeepMeAlive)type enable:(BOOL)enable { 828 self.megaApi->keepMeAlive((int) type, enable); 829} 830 831- (void)whyAmIBlockedWithDelegate:(id<MEGARequestDelegate>)delegate { 832 self.megaApi->whyAmIBlocked([self createDelegateMEGARequestListener:delegate singleListener:YES]); 833} 834 835- (void)whyAmIBlocked { 836 self.megaApi->whyAmIBlocked(); 837} 838 839- (void)getPSAWithDelegate:(id<MEGARequestDelegate>)delegate { 840 self.megaApi->getPSA([self createDelegateMEGARequestListener:delegate singleListener:YES]); 841} 842 843- (void)getPSA{ 844 self.megaApi->getPSA(); 845} 846 847- (void)setPSAWithIdentifier:(NSInteger)identifier delegate:(id<MEGARequestDelegate>)delegate { 848 self.megaApi->setPSA((int)identifier, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 849} 850 851- (void)setPSAWithIdentifier:(NSInteger)identifier { 852 self.megaApi->setPSA((int)identifier); 853} 854 855- (void)acknowledgeUserAlertsWithDelegate:(id<MEGARequestDelegate>)delegate { 856 self.megaApi->acknowledgeUserAlerts([self createDelegateMEGARequestListener:delegate singleListener:YES]); 857} 858 859- (void)acknowledgeUserAlerts { 860 self.megaApi->acknowledgeUserAlerts(); 861} 862 863#pragma mark - Filesystem changes Requests 864 865- (void)createFolderWithName:(NSString *)name parent:(MEGANode *)parent delegate:(id<MEGARequestDelegate>)delegate { 866 self.megaApi->createFolder((name != nil) ? [name UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 867} 868 869- (void)createFolderWithName:(NSString *)name parent:(MEGANode *)parent { 870 self.megaApi->createFolder((name != nil) ? [name UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL); 871} 872 873- (void)moveNode:(MEGANode *)node newParent:(MEGANode *)newParent delegate:(id<MEGARequestDelegate>)delegate { 874 self.megaApi->moveNode((node != nil) ? [node getCPtr] : NULL, (newParent != nil) ? [newParent getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 875} 876 877- (void)moveNode:(MEGANode *)node newParent:(MEGANode *)newParent { 878 self.megaApi->moveNode((node != nil) ? [node getCPtr] : NULL, (newParent != nil) ? [newParent getCPtr] : NULL); 879} 880 881- (void)moveNode:(MEGANode *)node newParent:(MEGANode *)newParent newName:(NSString *)newName delegate:(id<MEGARequestDelegate>)delegate { 882 self.megaApi->moveNode((node != nil) ? [node getCPtr] : NULL, (newParent != nil) ? [newParent getCPtr] : NULL, newName.UTF8String, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 883} 884 885- (void)moveNode:(MEGANode *)node newParent:(MEGANode *)newParent newName:(NSString *)newName { 886 self.megaApi->moveNode((node != nil) ? [node getCPtr] : NULL, (newParent != nil) ? [newParent getCPtr] : NULL, newName.UTF8String); 887} 888 889- (void)copyNode:(MEGANode *)node newParent:(MEGANode *)newParent delegate:(id<MEGARequestDelegate>)delegate { 890 self.megaApi->copyNode((node != nil) ? [node getCPtr] : NULL, (newParent != nil) ? [newParent getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 891} 892 893- (void)copyNode:(MEGANode *)node newParent:(MEGANode *)newParent { 894 self.megaApi->copyNode((node != nil) ? [node getCPtr] : NULL, (newParent != nil) ? [newParent getCPtr] : NULL); 895} 896 897- (void)copyNode:(MEGANode *)node newParent:(MEGANode *)newParent newName:(NSString *)newName delegate:(id<MEGARequestDelegate>)delegate { 898 self.megaApi->copyNode((node != nil) ? [node getCPtr] : NULL, (newParent != nil) ? [newParent getCPtr] : NULL, (newName != nil) ? [newName UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 899} 900 901- (void)copyNode:(MEGANode *)node newParent:(MEGANode *)newParent newName:(NSString *)newName { 902 self.megaApi->copyNode((node != nil) ? [node getCPtr] : NULL, (newParent != nil) ? [newParent getCPtr] : NULL, (newName != nil) ? [newName UTF8String] : NULL); 903} 904 905- (void)renameNode:(MEGANode *)node newName:(NSString *)newName delegate:(id<MEGARequestDelegate>)delegate { 906 self.megaApi->renameNode((node != nil) ? [node getCPtr] : NULL, (newName != nil) ? [newName UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 907} 908 909- (void)renameNode:(MEGANode *)node newName:(NSString *)newName { 910 self.megaApi->renameNode((node != nil) ? [node getCPtr] : NULL, (newName != nil) ? [newName UTF8String] : NULL); 911} 912 913- (void)removeNode:(MEGANode *)node delegate:(id<MEGARequestDelegate>)delegate { 914 self.megaApi->remove((node != nil) ? [node getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 915} 916 917- (void)removeNode:(MEGANode *)node { 918 self.megaApi->remove((node != nil) ? [node getCPtr] : NULL); 919} 920 921- (void)removeVersionsWithDelegate:(id<MEGARequestDelegate>)delegate { 922 self.megaApi->removeVersions([self createDelegateMEGARequestListener:delegate singleListener:YES]); 923} 924 925- (void)removeVersions { 926 self.megaApi->removeVersions(); 927} 928 929- (void)removeVersionNode:(MEGANode *)node delegate:(id<MEGARequestDelegate>)delegate { 930 self.megaApi->removeVersion(node ? [node getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 931} 932 933- (void)removeVersionNode:(MEGANode *)node { 934 self.megaApi->removeVersion(node ? [node getCPtr] : NULL); 935} 936 937- (void)restoreVersionNode:(MEGANode *)node delegate:(id<MEGARequestDelegate>)delegate { 938 self.megaApi->restoreVersion(node ? [node getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 939} 940 941- (void)restoreVersionNode:(MEGANode *)node { 942 self.megaApi->restoreVersion(node ? [node getCPtr] : NULL); 943} 944 945- (void)cleanRubbishBinWithDelegate:(id<MEGARequestDelegate>)delegate { 946 self.megaApi->cleanRubbishBin([self createDelegateMEGARequestListener:delegate singleListener:YES]); 947} 948 949- (void)cleanRubbishBin { 950 self.megaApi->cleanRubbishBin(); 951} 952 953#pragma mark - Sharing Requests 954 955- (void)shareNode:(MEGANode *)node withUser:(MEGAUser *)user level:(NSInteger)level delegate:(id<MEGARequestDelegate>)delegate { 956 self.megaApi->share((node != nil) ? [node getCPtr] : NULL, (user != nil) ? [user getCPtr] : NULL, (int)level, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 957} 958 959- (void)shareNode:(MEGANode *)node withUser:(MEGAUser *)user level:(NSInteger)level { 960 self.megaApi->share((node != nil) ? [node getCPtr] : NULL, (user != nil) ? [user getCPtr] : NULL, (int)level); 961} 962 963- (void)shareNode:(MEGANode *)node withEmail:(NSString *)email level:(NSInteger)level delegate:(id<MEGARequestDelegate>)delegate { 964 self.megaApi->share((node != nil) ? [node getCPtr] : NULL, (email != nil) ? [email UTF8String] : NULL, (int)level, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 965} 966 967- (void)shareNode:(MEGANode *)node withEmail:(NSString *)email level:(NSInteger)level { 968 self.megaApi->share((node != nil) ? [node getCPtr] : NULL, (email != nil) ? [email UTF8String] : NULL, (int)level); 969} 970 971- (void)importMegaFileLink:(NSString *)megaFileLink parent:(MEGANode *)parent delegate:(id<MEGARequestDelegate>)delegate { 972 self.megaApi->importFileLink((megaFileLink != nil) ? [megaFileLink UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 973} 974 975- (void)importMegaFileLink:(NSString *)megaFileLink parent:(MEGANode *)parent { 976 self.megaApi->importFileLink((megaFileLink != nil) ? [megaFileLink UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL); 977} 978 979 980- (void)decryptPasswordProtectedLink:(NSString *)link password:(NSString *)password delegate:(id<MEGARequestDelegate>)delegate { 981 self.megaApi->decryptPasswordProtectedLink(link ? [link UTF8String] : NULL, password ? [password UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 982} 983 984- (void)decryptPasswordProtectedLink:(NSString *)link password:(NSString *)password { 985 self.megaApi->decryptPasswordProtectedLink(link ? [link UTF8String] : NULL, password ? [password UTF8String] : NULL); 986} 987 988- (void)encryptLinkWithPassword:(NSString *)link password:(NSString *)password delegate:(id<MEGARequestDelegate>)delegate { 989 self.megaApi->encryptLinkWithPassword(link ? [link UTF8String] : NULL, password ? [password UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 990} 991 992- (void)encryptLinkWithPassword:(NSString *)link password:(NSString *)password { 993 self.megaApi->encryptLinkWithPassword(link ? [link UTF8String] : NULL, password ? [password UTF8String] : NULL); 994} 995 996- (void)publicNodeForMegaFileLink:(NSString *)megaFileLink delegate:(id<MEGARequestDelegate>)delegate { 997 self.megaApi->getPublicNode((megaFileLink != nil) ? [megaFileLink UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 998} 999 1000- (void)publicNodeForMegaFileLink:(NSString *)megaFileLink { 1001 self.megaApi->getPublicNode((megaFileLink != nil) ? [megaFileLink UTF8String] : NULL); 1002} 1003 1004- (NSString *)buildPublicLinkForHandle:(NSString *)publicHandle key:(NSString *)key isFolder:(BOOL)isFolder { 1005 const char *link = self.megaApi->buildPublicLink(publicHandle.UTF8String, key.UTF8String, isFolder); 1006 1007 if (!link) return nil; 1008 NSString *stringLink = [NSString.alloc initWithUTF8String:link]; 1009 1010 delete [] link; 1011 return stringLink; 1012} 1013 1014- (void)setNodeCoordinates:(MEGANode *)node latitude:(NSNumber *)latitude longitude:(NSNumber *)longitude delegate:(id<MEGARequestDelegate>)delegate { 1015 self.megaApi->setNodeCoordinates(node ? [node getCPtr] : NULL, (latitude ? latitude.doubleValue : MegaNode::INVALID_COORDINATE), (longitude ? longitude.doubleValue : MegaNode::INVALID_COORDINATE), [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1016} 1017 1018- (void)setNodeCoordinates:(MEGANode *)node latitude:(NSNumber *)latitude longitude:(NSNumber *)longitude { 1019 self.megaApi->setNodeCoordinates(node ? [node getCPtr] : NULL, (latitude ? latitude.doubleValue : MegaNode::INVALID_COORDINATE), (longitude ? longitude.doubleValue : MegaNode::INVALID_COORDINATE)); 1020} 1021 1022- (void)setUnshareableNodeCoordinates:(MEGANode *)node latitude:(NSNumber *)latitude longitude:(NSNumber *)longitude delegate:(id<MEGARequestDelegate>)delegate { 1023 self.megaApi->setUnshareableNodeCoordinates(node ? [node getCPtr] : NULL, (latitude ? latitude.doubleValue : MegaNode::INVALID_COORDINATE), (longitude ? longitude.doubleValue : MegaNode::INVALID_COORDINATE), [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1024} 1025 1026- (void)exportNode:(MEGANode *)node delegate:(id<MEGARequestDelegate>)delegate { 1027 self.megaApi->exportNode((node != nil) ? [node getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1028} 1029 1030- (void)exportNode:(MEGANode *)node { 1031 self.megaApi->exportNode((node != nil) ? [node getCPtr] : NULL); 1032} 1033 1034- (void)exportNode:(MEGANode *)node expireTime:(NSDate *)expireTime delegate:(id<MEGARequestDelegate>)delegate { 1035 self.megaApi->exportNode((node != nil) ? [node getCPtr] : NULL, (int64_t)[expireTime timeIntervalSince1970], [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1036} 1037 1038- (void)exportNode:(MEGANode *)node expireTime:(NSDate *)expireTime { 1039 self.megaApi->exportNode((node != nil) ? [node getCPtr] : NULL, (int64_t)[expireTime timeIntervalSince1970]); 1040} 1041 1042- (void)disableExportNode:(MEGANode *)node delegate:(id<MEGARequestDelegate>)delegate { 1043 self.megaApi->disableExport((node != nil) ? [node getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1044} 1045 1046- (void)disableExportNode:(MEGANode *)node { 1047 self.megaApi->disableExport((node != nil) ? [node getCPtr] : NULL); 1048} 1049 1050#pragma mark - Attributes Requests 1051 1052- (void)getThumbnailNode:(MEGANode *)node destinationFilePath:(NSString *)destinationFilePath delegate:(id<MEGARequestDelegate>)delegate { 1053 self.megaApi->getThumbnail((node != nil) ? [node getCPtr] : NULL, (destinationFilePath != nil) ? [destinationFilePath UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1054} 1055 1056- (void)getThumbnailNode:(MEGANode *)node destinationFilePath:(NSString *)destinationFilePath { 1057 self.megaApi->getThumbnail((node != nil) ? [node getCPtr] : NULL, (destinationFilePath != nil) ? [destinationFilePath UTF8String] : NULL); 1058} 1059 1060- (void)cancelGetThumbnailNode:(MEGANode *)node delegate:(id<MEGARequestDelegate>)delegate { 1061 self.megaApi->cancelGetThumbnail((node != nil) ? [node getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1062} 1063 1064- (void)cancelGetThumbnailNode:(MEGANode *)node { 1065 self.megaApi->cancelGetThumbnail((node != nil) ? [node getCPtr] : NULL); 1066} 1067 1068- (void)setThumbnailNode:(MEGANode *)node sourceFilePath:(NSString *)sourceFilePath delegate:(id<MEGARequestDelegate>)delegate { 1069 self.megaApi->setThumbnail((node != nil) ? [node getCPtr] : NULL, (sourceFilePath != nil) ? [sourceFilePath UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1070} 1071 1072- (void)setThumbnailNode:(MEGANode *)node sourceFilePath:(NSString *)sourceFilePath { 1073 self.megaApi->setThumbnail((node != nil) ? [node getCPtr] : NULL, (sourceFilePath != nil) ? [sourceFilePath UTF8String] : NULL); 1074} 1075 1076- (void)getPreviewNode:(MEGANode *)node destinationFilePath:(NSString *)destinationFilePath delegate:(id<MEGARequestDelegate>)delegate { 1077 self.megaApi->getPreview((node != nil) ? [node getCPtr] : NULL, (destinationFilePath != nil) ? [destinationFilePath UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1078} 1079 1080- (void)getPreviewNode:(MEGANode *)node destinationFilePath:(NSString *)destinationFilePath { 1081 self.megaApi->getPreview((node != nil) ? [node getCPtr] : NULL, (destinationFilePath != nil) ? [destinationFilePath UTF8String] : NULL); 1082} 1083 1084- (void)cancelGetPreviewNode:(MEGANode *)node delegate:(id<MEGARequestDelegate>)delegate { 1085 self.megaApi->cancelGetPreview((node != nil) ? [node getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1086} 1087 1088- (void)cancelGetPreviewNode:(MEGANode *)node { 1089 self.megaApi->cancelGetPreview((node != nil) ? [node getCPtr] : NULL); 1090} 1091 1092- (void)setPreviewNode:(MEGANode *)node sourceFilePath:(NSString *)sourceFilePath delegate:(id<MEGARequestDelegate>)delegate { 1093 self.megaApi->setPreview((node != nil) ? [node getCPtr] : NULL, (sourceFilePath != nil) ? [sourceFilePath UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1094} 1095 1096- (void)setPreviewNode:(MEGANode *)node sourceFilePath:(NSString *)sourceFilePath { 1097 self.megaApi->setPreview((node != nil) ? [node getCPtr] : NULL, (sourceFilePath != nil) ? [sourceFilePath UTF8String] : NULL); 1098} 1099 1100- (void)getAvatarUser:(MEGAUser *)user destinationFilePath:(NSString *)destinationFilePath delegate:(id<MEGARequestDelegate>)delegate { 1101 self.megaApi->getUserAvatar((user != nil) ? [user getCPtr] : NULL, (destinationFilePath != nil) ? [destinationFilePath UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1102} 1103 1104- (void)getAvatarUser:(MEGAUser *)user destinationFilePath:(NSString *)destinationFilePath { 1105 self.megaApi->getUserAvatar((user != nil) ? [user getCPtr] : NULL, (destinationFilePath != nil) ? [destinationFilePath UTF8String] : NULL); 1106} 1107 1108- (void)getAvatarUserWithEmailOrHandle:(NSString *)emailOrHandle destinationFilePath:(NSString *)destinationFilePath delegate:(id<MEGARequestDelegate>)delegate { 1109 self.megaApi->getUserAvatar((emailOrHandle != nil) ? [emailOrHandle UTF8String] : NULL, (destinationFilePath != nil) ? [destinationFilePath UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1110} 1111 1112- (void)getAvatarUserWithEmailOrHandle:(NSString *)emailOrHandle destinationFilePath:(NSString *)destinationFilePath { 1113 self.megaApi->getUserAvatar((emailOrHandle != nil) ? [emailOrHandle UTF8String] : NULL, (destinationFilePath != nil) ? [destinationFilePath UTF8String] : NULL); 1114} 1115 1116+ (NSString *)avatarColorForUser:(MEGAUser *)user { 1117 const char *val = MegaApi::getUserAvatarColor((user != nil) ? [user getCPtr] : NULL); 1118 if (!val) return nil; 1119 1120 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 1121 1122 delete [] val; 1123 return ret; 1124} 1125 1126+ (NSString *)avatarColorForBase64UserHandle:(NSString *)base64UserHandle { 1127 const char *val = MegaApi::getUserAvatarColor((base64UserHandle != nil) ? [base64UserHandle UTF8String] : NULL); 1128 if (!val) return nil; 1129 1130 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 1131 1132 delete [] val; 1133 return ret; 1134} 1135 1136+ (NSString *)avatarSecondaryColorForUser:(MEGAUser *)user { 1137 const char *val = MegaApi::getUserAvatarSecondaryColor((user != nil) ? [user getCPtr] : NULL); 1138 if (!val) return nil; 1139 1140 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 1141 1142 delete [] val; 1143 return ret; 1144} 1145 1146+ (NSString *)avatarSecondaryColorForBase64UserHandle:(NSString *)base64UserHandle { 1147 const char *val = MegaApi::getUserAvatarSecondaryColor((base64UserHandle != nil) ? [base64UserHandle UTF8String] : NULL); 1148 if (!val) return nil; 1149 1150 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 1151 1152 delete [] val; 1153 return ret; 1154} 1155 1156- (void)setAvatarUserWithSourceFilePath:(NSString *)sourceFilePath delegate:(id<MEGARequestDelegate>)delegate { 1157 self.megaApi->setAvatar((sourceFilePath != nil) ? [sourceFilePath UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1158} 1159 1160- (void)setAvatarUserWithSourceFilePath:(NSString *)sourceFilePath { 1161 self.megaApi->setAvatar((sourceFilePath != nil) ? [sourceFilePath UTF8String] : NULL); 1162} 1163 1164- (void)getUserAttributeForUser:(MEGAUser *)user type:(MEGAUserAttribute)type { 1165 self.megaApi->getUserAttribute((user != nil) ? [user getCPtr] : NULL, (int)type); 1166} 1167 1168- (void)getUserAttributeForUser:(MEGAUser *)user type:(MEGAUserAttribute)type delegate:(id<MEGARequestDelegate>)delegate { 1169 self.megaApi->getUserAttribute((user != nil) ? [user getCPtr] : NULL, (int)type, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1170} 1171 1172- (void)getUserAttributeForEmailOrHandle:(NSString *)emailOrHandle type:(MEGAUserAttribute)type { 1173 self.megaApi->getUserAttribute((emailOrHandle != nil) ? [emailOrHandle UTF8String] : NULL, (int)type); 1174} 1175 1176- (void)getUserAttributeForEmailOrHandle:(NSString *)emailOrHandle type:(MEGAUserAttribute)type delegate:(id<MEGARequestDelegate>)delegate { 1177 self.megaApi->getUserAttribute((emailOrHandle != nil) ? [emailOrHandle UTF8String] : NULL, (int)type, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1178} 1179 1180- (void)getUserAttributeType:(MEGAUserAttribute)type { 1181 self.megaApi->getUserAttribute((int)type); 1182} 1183 1184- (void)getUserAttributeType:(MEGAUserAttribute)type delegate:(id<MEGARequestDelegate>)delegate { 1185 self.megaApi->getUserAttribute((int)type, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1186} 1187 1188- (void)setUserAttributeType:(MEGAUserAttribute)type value:(NSString *)value { 1189 self.megaApi->setUserAttribute((int)type, (value != nil) ? [value UTF8String] : NULL); 1190} 1191 1192- (void)setUserAttributeType:(MEGAUserAttribute)type value:(NSString *)value delegate:(id<MEGARequestDelegate>)delegate { 1193 self.megaApi->setUserAttribute((int)type, (value != nil) ? [value UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1194} 1195 1196- (void)getUserAliasWithHandle:(uint64_t)handle delegate:(id<MEGARequestDelegate>)delegate { 1197 self.megaApi->getUserAlias(handle, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1198} 1199 1200- (void)getUserAliasWithHandle:(uint64_t)handle { 1201 self.megaApi->getUserAlias(handle); 1202} 1203 1204- (void)setUserAlias:(nullable NSString *)alias forHandle:(uint64_t)handle delegate:(id<MEGARequestDelegate>)delegate { 1205 self.megaApi->setUserAlias(handle, 1206 alias.UTF8String, 1207 [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1208} 1209 1210- (void)setUserAlias:(nullable NSString *)alias forHandle:(uint64_t)handle { 1211 self.megaApi->setUserAlias(handle, alias.UTF8String); 1212} 1213 1214#pragma mark - Account management Requests 1215 1216- (void)getAccountDetailsWithDelegate:(id<MEGARequestDelegate>)delegate { 1217 self.megaApi->getAccountDetails([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1218} 1219 1220- (void)getAccountDetails { 1221 self.megaApi->getAccountDetails(); 1222} 1223 1224- (void)queryTransferQuotaWithSize:(long long)size delegate:(id<MEGARequestDelegate>)delegate { 1225 self.megaApi->queryTransferQuota(size, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1226} 1227 1228- (void)queryTransferQuotaWithSize:(long long)size { 1229 self.megaApi->queryTransferQuota(size); 1230} 1231 1232- (void)getPricingWithDelegate:(id<MEGARequestDelegate>)delegate { 1233 self.megaApi->getPricing([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1234} 1235 1236- (void)getPricing { 1237 self.megaApi->getPricing(); 1238} 1239 1240- (void)getPaymentIdForProductHandle:(uint64_t)productHandle delegate:(id<MEGARequestDelegate>)delegate { 1241 self.megaApi->getPaymentId(productHandle, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1242} 1243 1244- (void)getPaymentIdForProductHandle:(uint64_t)productHandle { 1245 self.megaApi->getPaymentId(productHandle); 1246} 1247 1248- (void)getPaymentIdForProductHandle:(uint64_t)productHandle lastPublicHandle:(uint64_t)lastPublicHandle lastPublicHandleType:(AffiliateType)lastPublicHandleType lastAccessTimestamp:(uint64_t)lastAccessTimestamp delegate:(id<MEGARequestDelegate>)delegate { 1249 self.megaApi->getPaymentId(productHandle, lastPublicHandle, (int)lastPublicHandleType, lastAccessTimestamp, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1250} 1251 1252- (void)getPaymentIdForProductHandle:(uint64_t)productHandle lastPublicHandle:(uint64_t)lastPublicHandle lastPublicHandleType:(AffiliateType)lastPublicHandleType lastAccessTimestamp:(uint64_t)lastAccessTimestamp { 1253 self.megaApi->getPaymentId(productHandle, lastPublicHandle, (int)lastPublicHandleType, lastAccessTimestamp); 1254} 1255 1256- (void)submitPurchase:(MEGAPaymentMethod)gateway receipt:(NSString *)receipt delegate:(id<MEGARequestDelegate>)delegate { 1257 self.megaApi->submitPurchaseReceipt((int)gateway, (receipt != nil) ? [receipt UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1258} 1259 1260- (void)submitPurchase:(MEGAPaymentMethod)gateway receipt:(NSString *)receipt { 1261 self.megaApi->submitPurchaseReceipt((int)gateway, (receipt != nil) ? [receipt UTF8String] : NULL); 1262} 1263 1264- (void)submitPurchase:(MEGAPaymentMethod)gateway receipt:(NSString *)receipt lastPublicHandle:(uint64_t)lastPublicHandle delegate:(id<MEGARequestDelegate>)delegate { 1265 self.megaApi->submitPurchaseReceipt((int)gateway, (receipt != nil) ? [receipt UTF8String] : NULL, lastPublicHandle, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1266} 1267 1268- (void)submitPurchase:(MEGAPaymentMethod)gateway receipt:(NSString *)receipt lastPublicHandle:(uint64_t)lastPublicHandle { 1269 self.megaApi->submitPurchaseReceipt((int)gateway, (receipt != nil) ? [receipt UTF8String] : NULL, lastPublicHandle); 1270} 1271 1272- (void)submitPurchase:(MEGAPaymentMethod)gateway receipt:(NSString *)receipt lastPublicHandle:(uint64_t)lastPublicHandle lastPublicHandleType:(AffiliateType)lastPublicHandleType lastAccessTimestamp:(uint64_t)lastAccessTimestamp delegate:(id<MEGARequestDelegate>)delegate { 1273 self.megaApi->submitPurchaseReceipt((int)gateway, receipt.UTF8String, lastPublicHandle, (int)lastPublicHandleType, lastAccessTimestamp, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1274} 1275 1276- (void)submitPurchase:(MEGAPaymentMethod)gateway receipt:(NSString *)receipt lastPublicHandle:(uint64_t)lastPublicHandle lastPublicHandleType:(AffiliateType)lastPublicHandleType lastAccessTimestamp:(uint64_t)lastAccessTimestamp { 1277 self.megaApi->submitPurchaseReceipt((int)gateway, receipt.UTF8String, lastPublicHandle, (int)lastPublicHandleType, lastAccessTimestamp); 1278} 1279 1280- (void)changePassword:(NSString *)oldPassword newPassword:(NSString *)newPassword delegate:(id<MEGARequestDelegate>)delegate { 1281 self.megaApi->changePassword((oldPassword != nil) ? [oldPassword UTF8String] : NULL, (newPassword != nil) ? [newPassword UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1282} 1283 1284- (void)changePassword:(NSString *)oldPassword newPassword:(NSString *)newPassword { 1285 self.megaApi->changePassword((oldPassword != nil) ? [oldPassword UTF8String] : NULL, (newPassword != nil) ? [newPassword UTF8String] : NULL); 1286} 1287 1288- (void)masterKeyExportedWithDelegate:(id<MEGARequestDelegate>)delegate { 1289 self.megaApi->masterKeyExported([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1290} 1291 1292- (void)masterKeyExported { 1293 self.megaApi->masterKeyExported(); 1294} 1295 1296- (void)passwordReminderDialogSucceededWithDelegate:(id<MEGARequestDelegate>)delegate { 1297 self.megaApi->passwordReminderDialogSucceeded([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1298} 1299 1300- (void)passwordReminderDialogSucceeded { 1301 self.megaApi->passwordReminderDialogSucceeded(); 1302} 1303 1304- (void)passwordReminderDialogSkippedWithDelegate:(id<MEGARequestDelegate>)delegate { 1305 self.megaApi->passwordReminderDialogSkipped([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1306} 1307 1308- (void)passwordReminderDialogSkipped { 1309 self.megaApi->passwordReminderDialogSkipped(); 1310} 1311 1312- (void)passwordReminderDialogBlockedWithDelegate:(id<MEGARequestDelegate>)delegate { 1313 self.megaApi->passwordReminderDialogBlocked([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1314} 1315 1316- (void)passwordReminderDialogBlocked { 1317 self.megaApi->passwordReminderDialogBlocked(); 1318} 1319 1320- (void)shouldShowPasswordReminderDialogAtLogout:(BOOL)atLogout delegate:(id<MEGARequestDelegate>)delegate { 1321 self.megaApi->shouldShowPasswordReminderDialog(atLogout, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1322} 1323 1324- (void)shouldShowPasswordReminderDialogAtLogout:(BOOL)atLogout { 1325 self.megaApi->shouldShowPasswordReminderDialog(atLogout); 1326} 1327 1328- (void)isMasterKeyExportedWithDelegate:(id<MEGARequestDelegate>)delegate { 1329 self.megaApi->isMasterKeyExported([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1330} 1331 1332- (void)isMasterKeyExported { 1333 self.megaApi->isMasterKeyExported(); 1334} 1335 1336- (void)enableRichPreviews:(BOOL)enable delegate:(id<MEGARequestDelegate>)delegate { 1337 self.megaApi->enableRichPreviews(enable, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1338} 1339 1340- (void)enableRichPreviews:(BOOL)enable { 1341 self.megaApi->enableRichPreviews(enable); 1342} 1343 1344- (void)isRichPreviewsEnabledWithDelegate:(id<MEGARequestDelegate>)delegate { 1345 self.megaApi->isRichPreviewsEnabled([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1346} 1347 1348- (void)isRichPreviewsEnabled { 1349 self.megaApi->isRichPreviewsEnabled(); 1350} 1351 1352- (void)shouldShowRichLinkWarningWithDelegate:(id<MEGARequestDelegate>)delegate { 1353 self.megaApi->shouldShowRichLinkWarning([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1354} 1355 1356- (void)shouldShowRichLinkWarning { 1357 self.megaApi->shouldShowRichLinkWarning(); 1358} 1359 1360- (void)setRichLinkWarningCounterValue:(NSUInteger)value delegate:(id<MEGARequestDelegate>)delegate { 1361 self.megaApi->setRichLinkWarningCounterValue((int)value, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1362} 1363 1364- (void)setRichLinkWarningCounterValue:(NSUInteger)value { 1365 self.megaApi->setRichLinkWarningCounterValue((int)value); 1366} 1367 1368- (void)enableGeolocationWithDelegate:(id<MEGARequestDelegate>)delegate { 1369 self.megaApi->enableGeolocation([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1370} 1371 1372- (void)enableGeolocation { 1373 self.megaApi->enableGeolocation(); 1374} 1375 1376- (void)isGeolocationEnabledWithDelegate:(id<MEGARequestDelegate>)delegate { 1377 self.megaApi->isGeolocationEnabled([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1378} 1379 1380- (void)isGeolocationEnabled { 1381 self.megaApi->isGeolocationEnabled(); 1382} 1383 1384- (void)setMyChatFilesFolderWithHandle:(uint64_t)handle delegate:(id<MEGARequestDelegate>)delegate { 1385 self.megaApi->setMyChatFilesFolder(handle, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1386} 1387 1388- (void)setMyChatFilesFolderWithHandle:(uint64_t)handle { 1389 self.megaApi->setMyChatFilesFolder(handle); 1390} 1391 1392- (void)getMyChatFilesFolderWithDelegate:(id<MEGARequestDelegate>)delegate { 1393 self.megaApi->getMyChatFilesFolder([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1394} 1395 1396- (void)getMyChatFilesFolder { 1397 self.megaApi->getMyChatFilesFolder(); 1398} 1399 1400- (void)setCameraUploadsFolderWithHandle:(uint64_t)handle delegate:(id<MEGARequestDelegate>)delegate { 1401 self.megaApi->setCameraUploadsFolder(handle, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1402} 1403 1404- (void)setCameraUploadsFolderWithHandle:(uint64_t)handle { 1405 self.megaApi->setCameraUploadsFolder(handle); 1406} 1407 1408- (void)getCameraUploadsFolderWithDelegate:(id<MEGARequestDelegate>)delegate { 1409 self.megaApi->getCameraUploadsFolder([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1410} 1411 1412- (void)getCameraUploadsFolder { 1413 self.megaApi->getCameraUploadsFolder(); 1414} 1415 1416- (void)getRubbishBinAutopurgePeriodWithDelegate:(id<MEGARequestDelegate>)delegate { 1417 self.megaApi->getRubbishBinAutopurgePeriod([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1418} 1419 1420- (void)getRubbishBinAutopurgePeriod { 1421 self.megaApi->getRubbishBinAutopurgePeriod(); 1422} 1423 1424- (void)setRubbishBinAutopurgePeriodInDays:(NSInteger)days delegate:(id<MEGARequestDelegate>)delegate { 1425 self.megaApi->setRubbishBinAutopurgePeriod((int)days, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1426} 1427 1428- (void)setRubbishBinAutopurgePeriodInDays:(NSInteger)days { 1429 self.megaApi->setRubbishBinAutopurgePeriod((int)days); 1430} 1431 1432- (void)useHttpsOnly:(BOOL)httpsOnly delegate:(id<MEGARequestDelegate>)delegate { 1433 self.megaApi->useHttpsOnly(httpsOnly, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1434} 1435 1436- (void)useHttpsOnly:(BOOL)httpsOnly { 1437 self.megaApi->useHttpsOnly(httpsOnly); 1438} 1439 1440- (BOOL)usingHttpsOnly { 1441 return self.megaApi->usingHttpsOnly(); 1442} 1443 1444- (void)inviteContactWithEmail:(NSString *)email message:(NSString *)message action:(MEGAInviteAction)action delegate:(id<MEGARequestDelegate>)delegate { 1445 self.megaApi->inviteContact((email != nil) ? [email UTF8String] : NULL, (message != nil) ? [message UTF8String] : NULL, (int)action, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1446} 1447 1448- (void)inviteContactWithEmail:(NSString *)email message:(NSString *)message action:(MEGAInviteAction)action { 1449 self.megaApi->inviteContact((email != nil) ? [email UTF8String] : NULL, (message != nil) ? [message UTF8String] : NULL, (int)action); 1450} 1451 1452- (void)inviteContactWithEmail:(NSString *)email message:(NSString *)message action:(MEGAInviteAction)action handle:(uint64_t)handle delegate:(id<MEGARequestDelegate>)delegate { 1453 self.megaApi->inviteContact((email != nil) ? [email UTF8String] : NULL, (message != nil) ? [message UTF8String] : NULL, (int)action, handle, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1454} 1455 1456- (void)inviteContactWithEmail:(NSString *)email message:(NSString *)message action:(MEGAInviteAction)action handle:(uint64_t)handle { 1457 self.megaApi->inviteContact((email != nil) ? [email UTF8String] : NULL, (message != nil) ? [message UTF8String] : NULL, (int)action, handle); 1458} 1459 1460- (void)replyContactRequest:(MEGAContactRequest *)request action:(MEGAReplyAction)action delegate:(id<MEGARequestDelegate>)delegate { 1461 self.megaApi->replyContactRequest((request != nil) ? [request getCPtr] : NULL, (int)action, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1462} 1463 1464- (void)replyContactRequest:(MEGAContactRequest *)request action:(MEGAReplyAction)action { 1465 self.megaApi->replyContactRequest((request != nil) ? [request getCPtr] : NULL, (int)action); 1466} 1467 1468- (void)removeContactUser:(MEGAUser *)user delegate:(id<MEGARequestDelegate>)delegate { 1469 self.megaApi->removeContact((user != nil) ? [user getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1470} 1471 1472- (void)removeContactUser:(MEGAUser *)user { 1473 self.megaApi->removeContact((user != nil) ? [user getCPtr] : NULL); 1474} 1475 1476- (void)submitFeedbackWithRating:(NSInteger)rating comment:(NSString *)comment delegate:(id<MEGARequestDelegate>)delegate { 1477 self.megaApi->submitFeedback((int)rating, (comment != nil) ? [comment UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1478} 1479 1480- (void)submitFeedbackWithRating:(NSInteger)rating comment:(NSString *)comment { 1481 self.megaApi->submitFeedback((int)rating, (comment != nil) ? [comment UTF8String] : NULL); 1482} 1483 1484- (void)reportDebugEventWithText:(NSString *)text delegate:(id<MEGARequestDelegate>)delegate { 1485 self.megaApi->reportDebugEvent((text != nil) ? [text UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1486} 1487 1488- (void)reportDebugEventWithText:(NSString *)text { 1489 self.megaApi->reportDebugEvent((text != nil) ? [text UTF8String] : NULL); 1490} 1491 1492- (void)getUserDataWithDelegate:(id<MEGARequestDelegate>)delegate { 1493 self.megaApi->getUserData([self createDelegateMEGARequestListener:delegate singleListener:YES]); 1494} 1495 1496- (void)getUserData { 1497 self.megaApi->getUserData(); 1498} 1499 1500- (void)getUserDataWithMEGAUser:(MEGAUser *)user delegate:(id<MEGARequestDelegate>)delegate { 1501 self.megaApi->getUserData((user != nil) ? [user getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1502} 1503 1504- (void)getUserDataWithMEGAUser:(MEGAUser *)user { 1505 self.megaApi->getUserData((user != nil) ? [user getCPtr] : NULL); 1506} 1507 1508- (void)getUserDataWithUser:(NSString *)user delegate:(id<MEGARequestDelegate>)delegate { 1509 self.megaApi->getUserData((user != nil) ? [user UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1510} 1511 1512- (void)getUserDataWithUser:(NSString *)user { 1513 self.megaApi->getUserData((user != nil) ? [user UTF8String] : NULL); 1514} 1515 1516- (void)killSession:(uint64_t)sessionHandle delegate:(id<MEGARequestDelegate>)delegate { 1517 self.megaApi->killSession(sessionHandle, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1518} 1519 1520- (void)killSession:(uint64_t)sessionHandle { 1521 self.megaApi->killSession(sessionHandle); 1522} 1523 1524- (NSDate *)overquotaDeadlineDate { 1525 return [[NSDate alloc] initWithTimeIntervalSince1970:self.megaApi->getOverquotaDeadlineTs()]; 1526} 1527 1528- (NSArray<NSDate *> *)overquotaWarningDateList { 1529 MegaIntegerList *warningTimeIntervalList = self.megaApi->getOverquotaWarningsTs(); 1530 int sizeOfWarningTimestamps = warningTimeIntervalList->size(); 1531 NSMutableArray *warningDateList = [[NSMutableArray alloc] initWithCapacity:sizeOfWarningTimestamps]; 1532 1533 for (int i = 0; i < sizeOfWarningTimestamps; i++) { 1534 NSDate *warningDate = [[NSDate alloc] initWithTimeIntervalSince1970:warningTimeIntervalList->get(i)]; 1535 [warningDateList addObject:warningDate]; 1536 } 1537 return [warningDateList copy]; 1538} 1539 1540#pragma mark - Transfer 1541 1542- (MEGATransfer *)transferByTag:(NSInteger)transferTag { 1543 MegaTransfer *transfer = self.megaApi->getTransferByTag((int)transferTag); 1544 1545 return transfer ? [[MEGATransfer alloc] initWithMegaTransfer:transfer cMemoryOwn:YES] : nil; 1546} 1547 1548- (void)startUploadWithLocalPath:(NSString *)localPath parent:(MEGANode *)parent delegate:(id<MEGATransferDelegate>)delegate { 1549 self.megaApi->startUpload((localPath != nil) ? [localPath UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, [self createDelegateMEGATransferListener:delegate singleListener:YES]); 1550} 1551 1552- (void)startUploadWithLocalPath:(NSString *)localPath parent:(MEGANode *)parent { 1553 self.megaApi->startUpload((localPath != nil) ? [localPath UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL); 1554} 1555 1556- (void)startUploadToFileWithLocalPath:(NSString *)localPath parent:(MEGANode *)parent filename:(NSString *)filename delegate:(id<MEGATransferDelegate>)delegate { 1557 self.megaApi->startUpload((localPath != nil) ? [localPath UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, (filename != nil) ? [filename UTF8String] : NULL, [self createDelegateMEGATransferListener:delegate singleListener:YES]); 1558} 1559 1560- (void)startUploadToFileWithLocalPath:(NSString *)localPath parent:(MEGANode *)parent filename:(NSString *)filename { 1561 self.megaApi->startUpload((localPath != nil) ? [localPath UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, (filename != nil) ? [filename UTF8String] : NULL); 1562} 1563 1564- (void)startUploadWithLocalPath:(NSString *)localPath parent:(MEGANode *)parent appData:(nullable NSString *)appData delegate:(id<MEGATransferDelegate>)delegate { 1565 self.megaApi->startUploadWithData((localPath != nil) ? [localPath UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, (appData !=nil) ? [appData UTF8String] : NULL, [self createDelegateMEGATransferListener:delegate singleListener:YES]); 1566} 1567 1568- (void)startUploadWithLocalPath:(NSString *)localPath parent:(MEGANode *)parent appData:(nullable NSString *)appData { 1569 self.megaApi->startUploadWithData((localPath != nil) ? [localPath UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, (appData !=nil) ? [appData UTF8String] : NULL); 1570} 1571 1572- (void)startUploadWithLocalPath:(NSString *)localPath parent:(MEGANode *)parent appData:(nullable NSString *)appData isSourceTemporary:(BOOL)isSourceTemporary delegate:(id<MEGATransferDelegate>)delegate { 1573 self.megaApi->startUploadWithData((localPath != nil) ? [localPath UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, (appData !=nil) ? [appData UTF8String] : NULL, isSourceTemporary, [self createDelegateMEGATransferListener:delegate singleListener:YES]); 1574} 1575 1576- (void)startUploadWithLocalPath:(NSString *)localPath parent:(MEGANode *)parent appData:(nullable NSString *)appData isSourceTemporary:(BOOL)isSourceTemporary { 1577 self.megaApi->startUploadWithData((localPath != nil) ? [localPath UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, (appData !=nil) ? [appData UTF8String] : NULL, isSourceTemporary); 1578} 1579 1580- (void)startUploadTopPriorityWithLocalPath:(NSString *)localPath parent:(MEGANode *)parent appData:(nullable NSString *)appData isSourceTemporary:(BOOL)isSourceTemporary delegate:(id<MEGATransferDelegate>)delegate { 1581 self.megaApi->startUploadWithTopPriority((localPath != nil) ? [localPath UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, (appData !=nil) ? [appData UTF8String] : NULL, isSourceTemporary, [self createDelegateMEGATransferListener:delegate singleListener:YES]); 1582} 1583 1584- (void)startUploadTopPriorityWithLocalPath:(NSString *)localPath parent:(MEGANode *)parent appData:(nullable NSString *)appData isSourceTemporary:(BOOL)isSourceTemporary { 1585 self.megaApi->startUploadWithTopPriority((localPath != nil) ? [localPath UTF8String] : NULL, (parent != nil) ? [parent getCPtr] : NULL, (appData !=nil) ? [appData UTF8String] : NULL, isSourceTemporary); 1586} 1587 1588- (void)startUploadForChatWithLocalPath:(NSString *)localPath 1589 parent:(MEGANode *)parent 1590 appData:(nullable NSString *)appData 1591 isSourceTemporary:(BOOL)isSourceTemporary 1592 delegate:(id<MEGATransferDelegate>)delegate { 1593 self.megaApi->startUploadForChat(localPath.UTF8String, 1594 parent.getCPtr, 1595 appData.UTF8String, 1596 isSourceTemporary, 1597 [self createDelegateMEGATransferListener:delegate singleListener:YES]); 1598} 1599 1600- (void)startDownloadNode:(MEGANode *)node localPath:(NSString *)localPath delegate:(id<MEGATransferDelegate>)delegate { 1601 self.megaApi->startDownload((node != nil) ? [node getCPtr] : NULL, (localPath != nil) ? [localPath UTF8String] : NULL, [self createDelegateMEGATransferListener:delegate singleListener:YES]); 1602} 1603 1604- (void)startDownloadNode:(MEGANode *)node localPath:(NSString *)localPath { 1605 self.megaApi->startDownload((node != nil) ? [node getCPtr] : NULL, (localPath != nil) ? [localPath UTF8String] : NULL); 1606} 1607 1608- (void)startDownloadNode:(MEGANode *)node localPath:(NSString *)localPath appData:(nullable NSString *)appData { 1609 self.megaApi->startDownloadWithData((node != nil) ? [node getCPtr] : NULL, (localPath != nil) ? [localPath UTF8String] : NULL, (appData != nil) ? [appData UTF8String] : NULL); 1610} 1611 1612- (void)startDownloadNode:(MEGANode *)node localPath:(NSString *)localPath appData:(nullable NSString *)appData delegate:(id<MEGATransferDelegate>)delegate{ 1613 self.megaApi->startDownloadWithData((node != nil) ? [node getCPtr] : NULL, (localPath != nil) ? [localPath UTF8String] : NULL, (appData != nil) ? [appData UTF8String] : NULL, [self createDelegateMEGATransferListener:delegate singleListener:YES]); 1614} 1615 1616- (void)startDownloadTopPriorityWithNode:(MEGANode *)node localPath:(NSString *)localPath appData:(nullable NSString *)appData delegate:(id<MEGATransferDelegate>)delegate { 1617 self.megaApi->startDownloadWithTopPriority((node != nil) ? [node getCPtr] : NULL, (localPath != nil) ? [localPath UTF8String] : NULL, (appData != nil) ? [appData UTF8String] : NULL, [self createDelegateMEGATransferListener:delegate singleListener:YES]); 1618} 1619 1620- (void)startDownloadTopPriorityWithNode:(MEGANode *)node localPath:(NSString *)localPath appData:(nullable NSString *)appData { 1621 self.megaApi->startDownloadWithTopPriority((node != nil) ? [node getCPtr] : NULL, (localPath != nil) ? [localPath UTF8String] : NULL, (appData != nil) ? [appData UTF8String] : NULL); 1622} 1623 1624- (void)startStreamingNode:(MEGANode *)node startPos:(NSNumber *)startPos size:(NSNumber *)size delegate:(id<MEGATransferDelegate>)delegate { 1625 self.megaApi->startStreaming((node != nil) ? [node getCPtr] : NULL, (startPos != nil) ? [startPos longLongValue] : 0, (size != nil) ? [size longLongValue] : 0, [self createDelegateMEGATransferListener:delegate singleListener:YES]); 1626} 1627 1628- (void)startStreamingNode:(MEGANode *)node startPos:(NSNumber *)startPos size:(NSNumber *)size { 1629 self.megaApi->startStreaming((node != nil) ? [node getCPtr] : NULL, (startPos != nil) ? [startPos longLongValue] : 0, (size != nil) ? [size longLongValue] : 0, NULL); 1630} 1631 1632- (void)cancelTransfer:(MEGATransfer *)transfer delegate:(id<MEGARequestDelegate>)delegate { 1633 self.megaApi->cancelTransfer((transfer != nil) ? [transfer getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1634} 1635 1636- (void)cancelTransfer:(MEGATransfer *)transfer { 1637 self.megaApi->cancelTransfer((transfer != nil) ? [transfer getCPtr] : NULL); 1638} 1639 1640- (void)moveTransferToFirst:(MEGATransfer *)transfer delegate:(id<MEGARequestDelegate>)delegate { 1641 self.megaApi->moveTransferToFirst((transfer != nil) ? [transfer getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1642} 1643 1644- (void)moveTransferToFirst:(MEGATransfer *)transfer { 1645 self.megaApi->moveTransferToFirst((transfer != nil) ? [transfer getCPtr] : NULL); 1646} 1647 1648- (void)moveTransferToLast:(MEGATransfer *)transfer delegate:(id<MEGARequestDelegate>)delegate { 1649 self.megaApi->moveTransferToLast((transfer != nil) ? [transfer getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1650} 1651 1652- (void)moveTransferToLast:(MEGATransfer *)transfer { 1653 self.megaApi->moveTransferToLast((transfer != nil) ? [transfer getCPtr] : NULL); 1654} 1655 1656- (void)moveTransferBefore:(MEGATransfer *)transfer prevTransfer:(MEGATransfer *)prevTransfer delegate:(id<MEGARequestDelegate>)delegate { 1657 self.megaApi->moveTransferBefore((transfer != nil) ? [transfer getCPtr] : NULL, (prevTransfer != nil) ? [prevTransfer getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1658} 1659 1660- (void)moveTransferBefore:(MEGATransfer *)transfer prevTransfer:(MEGATransfer *)prevTransfer { 1661 self.megaApi->moveTransferBefore((transfer != nil) ? [transfer getCPtr] : NULL, (prevTransfer != nil) ? [prevTransfer getCPtr] : NULL); 1662} 1663 1664- (void)cancelTransfersForDirection:(NSInteger)direction delegate:(id<MEGARequestDelegate>)delegate { 1665 self.megaApi->cancelTransfers((int)direction, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1666} 1667 1668- (void)cancelTransfersForDirection:(NSInteger)direction { 1669 self.megaApi->cancelTransfers((int)direction); 1670} 1671 1672- (void)cancelTransferByTag:(NSInteger)transferTag delegate:(id<MEGARequestDelegate>)delegate { 1673 self.megaApi->cancelTransferByTag((int)transferTag, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1674} 1675 1676- (void)cancelTransferByTag:(NSInteger)transferTag { 1677 self.megaApi->cancelTransferByTag((int)transferTag); 1678} 1679 1680- (void)pauseTransfers:(BOOL)pause delegate:(id<MEGARequestDelegate>)delegate { 1681 self.megaApi->pauseTransfers(pause, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1682} 1683 1684- (void)pauseTransfers:(BOOL)pause { 1685 self.megaApi->pauseTransfers(pause); 1686} 1687 1688- (void)pauseTransfers:(BOOL)pause forDirection:(NSInteger)direction delegate:(id<MEGARequestDelegate>)delegate { 1689 self.megaApi->pauseTransfers(pause, (int)direction, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1690} 1691 1692- (void)pauseTransfers:(BOOL)pause forDirection:(NSInteger)direction { 1693 self.megaApi->pauseTransfers(pause, (int)direction); 1694} 1695 1696- (void)pauseTransfer:(MEGATransfer *)transfer pause:(BOOL)pause delegate:(id<MEGARequestDelegate>)delegate { 1697 self.megaApi->pauseTransfer((transfer != nil) ? [transfer getCPtr] : NULL, pause, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1698} 1699 1700- (void)pauseTransfer:(MEGATransfer *)transfer pause:(BOOL)pause { 1701 self.megaApi->pauseTransfer((transfer != nil) ? [transfer getCPtr] : NULL, pause); 1702} 1703 1704- (void)pauseTransferByTag:(NSInteger)transferTag pause:(BOOL)pause delegate:(id<MEGARequestDelegate>)delegate { 1705 self.megaApi->pauseTransferByTag((int)transferTag, pause, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1706} 1707 1708- (void)pauseTransferByTag:(NSInteger)transferTag pause:(BOOL)pause { 1709 self.megaApi->pauseTransferByTag((int)transferTag, pause); 1710} 1711 1712- (void)enableTransferResumption:(NSString *)loggedOutId { 1713 self.megaApi->enableTransferResumption((loggedOutId != nil) ? [loggedOutId UTF8String] : NULL); 1714} 1715 1716- (void)enableTransferResumption { 1717 self.megaApi->enableTransferResumption(); 1718} 1719 1720- (void)disableTransferResumption:(NSString *)loggedOutId { 1721 self.megaApi->disableTransferResumption((loggedOutId != nil) ? [loggedOutId UTF8String] : NULL); 1722} 1723 1724- (void)disableTransferResumption { 1725 self.megaApi->disableTransferResumption(); 1726} 1727 1728- (BOOL)areTransferPausedForDirection:(NSInteger)direction { 1729 return self.megaApi->areTransfersPaused((int)direction); 1730} 1731 1732- (void)setUploadLimitWithBpsLimit:(NSInteger)bpsLimit { 1733 self.megaApi->setUploadLimit((int)bpsLimit); 1734} 1735 1736- (void)requestBackgroundUploadURLWithFileSize:(int64_t)filesize mediaUpload:(MEGABackgroundMediaUpload *)mediaUpload delegate:(id<MEGARequestDelegate>)delegate { 1737 self.megaApi->backgroundMediaUploadRequestUploadURL(filesize, mediaUpload.getCPtr, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1738} 1739 1740- (void)completeBackgroundMediaUpload:(MEGABackgroundMediaUpload *)mediaUpload fileName:(NSString *)fileName parentNode:(MEGANode *)parentNode fingerprint:(NSString *)fingerprint originalFingerprint:(NSString *)originalFingerprint binaryUploadToken:(NSData *)token delegate:(id<MEGARequestDelegate>)delegate { 1741 const char *base64Token = MegaApi::binaryToBase64((const char *)token.bytes, token.length); 1742 self.megaApi->backgroundMediaUploadComplete(mediaUpload.getCPtr, fileName.UTF8String, parentNode.getCPtr, fingerprint.UTF8String, originalFingerprint.UTF8String, base64Token, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1743} 1744 1745- (BOOL)ensureMediaInfo { 1746 return self.megaApi->ensureMediaInfo(); 1747} 1748 1749- (BOOL)testAllocationByAllocationCount:(NSUInteger)count allocationSize:(NSUInteger)size { 1750 return self.megaApi->testAllocation((unsigned)count, size); 1751} 1752 1753#pragma mark - Filesystem inspection 1754 1755- (NSInteger)numberChildrenForParent:(MEGANode *)parent { 1756 return self.megaApi->getNumChildren((parent != nil) ? [parent getCPtr] : NULL); 1757} 1758 1759- (NSInteger)numberChildFilesForParent:(MEGANode *)parent { 1760 return self.megaApi->getNumChildFiles((parent != nil) ? [parent getCPtr] : NULL); 1761} 1762 1763- (NSInteger)numberChildFoldersForParent:(MEGANode *)parent { 1764 return self.megaApi->getNumChildFolders((parent != nil) ? [parent getCPtr] : NULL); 1765} 1766 1767- (MEGANodeList *)childrenForParent:(MEGANode *)parent order:(NSInteger)order { 1768 return [[MEGANodeList alloc] initWithNodeList:self.megaApi->getChildren((parent != nil) ? [parent getCPtr] : NULL, (int)order) cMemoryOwn:YES]; 1769} 1770 1771- (MEGANodeList *)childrenForParent:(MEGANode *)parent { 1772 return [[MEGANodeList alloc] initWithNodeList:self.megaApi->getChildren((parent != nil) ? [parent getCPtr] : NULL) cMemoryOwn:YES]; 1773} 1774 1775- (MEGANodeList *)versionsForNode:(MEGANode *)node { 1776 return [[MEGANodeList alloc] initWithNodeList:self.megaApi->getVersions(node ? [node getCPtr] : NULL) cMemoryOwn:YES]; 1777} 1778 1779- (NSInteger)numberOfVersionsForNode:(MEGANode *)node { 1780 return self.megaApi->getNumVersions(node ? [node getCPtr] : NULL); 1781} 1782 1783- (BOOL)hasVersionsForNode:(MEGANode *)node { 1784 return self.megaApi->hasVersions(node ? [node getCPtr] : NULL); 1785} 1786 1787- (void)getFolderInfoForNode:(MEGANode *)node delegate:(id<MEGARequestDelegate>)delegate { 1788 self.megaApi->getFolderInfo(node ? [node getCPtr] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 1789} 1790 1791- (void)getFolderInfoForNode:(MEGANode *)node { 1792 self.megaApi->getFolderInfo(node ? [node getCPtr] : NULL); 1793} 1794 1795- (MEGAChildrenLists *)fileFolderChildrenForParent:(MEGANode *)parent order:(NSInteger)order { 1796 return [[MEGAChildrenLists alloc] initWithMegaChildrenLists:self.megaApi->getFileFolderChildren(parent ? [parent getCPtr] : NULL, (int)order) cMemoryOwn:YES]; 1797} 1798 1799- (MEGAChildrenLists *)fileFolderChildrenForParent:(MEGANode *)parent { 1800 return [[MEGAChildrenLists alloc] initWithMegaChildrenLists:self.megaApi->getFileFolderChildren(parent ? [parent getCPtr] : NULL) cMemoryOwn:YES]; 1801} 1802 1803- (MEGANode *)childNodeForParent:(MEGANode *)parent name:(NSString *)name { 1804 if (parent == nil || name == nil) return nil; 1805 1806 MegaNode *node = self.megaApi->getChildNode([parent getCPtr], [name UTF8String]); 1807 1808 return node ? [[MEGANode alloc] initWithMegaNode:node cMemoryOwn:YES] : nil; 1809} 1810 1811- (MEGANode *)parentNodeForNode:(MEGANode *)node { 1812 if (node == nil) return nil; 1813 1814 MegaNode *parent = self.megaApi->getParentNode([node getCPtr]); 1815 1816 return parent ? [[MEGANode alloc] initWithMegaNode:parent cMemoryOwn:YES] : nil; 1817} 1818 1819- (NSString *)nodePathForNode:(MEGANode *)node { 1820 if (node == nil) return nil; 1821 1822 const char *val = self.megaApi->getNodePath([node getCPtr]); 1823 if (!val) return nil; 1824 1825 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 1826 1827 delete [] val; 1828 return ret; 1829} 1830 1831- (MEGANode *)nodeForPath:(NSString *)path node:(MEGANode *)node { 1832 if (path == nil || node == nil) return nil; 1833 1834 MegaNode *n = self.megaApi->getNodeByPath([path UTF8String], [node getCPtr]); 1835 1836 return n ? [[MEGANode alloc] initWithMegaNode:n cMemoryOwn:YES] : Nil; 1837} 1838 1839- (MEGANode *)nodeForPath:(NSString *)path { 1840 if (path == nil) return nil; 1841 1842 MegaNode *node = self.megaApi->getNodeByPath([path UTF8String]); 1843 1844 return node ? [[MEGANode alloc] initWithMegaNode:node cMemoryOwn:YES] : nil; 1845} 1846 1847- (MEGANode *)nodeForHandle:(uint64_t)handle { 1848 if (handle == ::mega::INVALID_HANDLE) return nil; 1849 1850 MegaNode *node = self.megaApi->getNodeByHandle(handle); 1851 1852 return node ? [[MEGANode alloc] initWithMegaNode:node cMemoryOwn:YES] : nil; 1853} 1854 1855- (MEGAUserList *)contacts { 1856 return [[MEGAUserList alloc] initWithUserList:self.megaApi->getContacts() cMemoryOwn:YES]; 1857} 1858 1859- (MEGAUser *)contactForEmail:(NSString *)email { 1860 if (email == nil) return nil; 1861 1862 MegaUser *user = self.megaApi->getContact([email UTF8String]); 1863 return user ? [[MEGAUser alloc] initWithMegaUser:user cMemoryOwn:YES] : nil; 1864} 1865 1866- (MEGAUserAlertList *)userAlertList { 1867 return [[MEGAUserAlertList alloc] initWithMegaUserAlertList:self.megaApi->getUserAlerts() cMemoryOwn:YES]; 1868} 1869 1870- (MEGANodeList *)inSharesForUser:(MEGAUser *)user { 1871 return [[MEGANodeList alloc] initWithNodeList:self.megaApi->getInShares((user != nil) ? [user getCPtr] : NULL) cMemoryOwn:YES]; 1872} 1873 1874- (MEGANodeList *)inShares { 1875 return [[MEGANodeList alloc] initWithNodeList:self.megaApi->getInShares() cMemoryOwn:YES]; 1876} 1877 1878- (MEGAShareList *)inSharesList:(MEGASortOrderType)order { 1879 return [[MEGAShareList alloc] initWithShareList:self.megaApi->getInSharesList((int)order) cMemoryOwn:YES]; 1880} 1881 1882- (MEGAUser *)userFromInShareNode:(MEGANode *)node { 1883 return [[MEGAUser alloc] initWithMegaUser:self.megaApi->getUserFromInShare(node ? [node getCPtr] : NULL) cMemoryOwn:YES]; 1884} 1885 1886- (MEGAUser *)userFromInShareNode:(MEGANode *)node recurse:(BOOL)recurse { 1887 return [MEGAUser.alloc initWithMegaUser:self.megaApi->getUserFromInShare(node ? [node getCPtr] : NULL, recurse) cMemoryOwn:YES]; 1888} 1889 1890- (BOOL)isSharedNode:(MEGANode *)node { 1891 if (!node) return NO; 1892 1893 return self.megaApi->isShared([node getCPtr]); 1894} 1895 1896- (MEGAShareList *)outShares:(MEGASortOrderType)order { 1897 return [[MEGAShareList alloc] initWithShareList:self.megaApi->getOutShares((int)order) cMemoryOwn:YES]; 1898} 1899 1900- (MEGAShareList *)outSharesForNode:(MEGANode *)node { 1901 return [[MEGAShareList alloc] initWithShareList:self.megaApi->getOutShares((node != nil) ? [node getCPtr] : NULL) cMemoryOwn:YES]; 1902} 1903 1904- (MEGANodeList *)publicLinks:(MEGASortOrderType)order { 1905 return [[MEGANodeList alloc] initWithNodeList:self.megaApi->getPublicLinks((int)order) cMemoryOwn:YES]; 1906} 1907 1908- (MEGAContactRequestList *)incomingContactRequests { 1909 return [[MEGAContactRequestList alloc] initWithMegaContactRequestList:self.megaApi->getIncomingContactRequests() cMemoryOwn:YES]; 1910} 1911 1912- (MEGAContactRequestList *)outgoingContactRequests { 1913 return [[MEGAContactRequestList alloc] initWithMegaContactRequestList:self.megaApi->getOutgoingContactRequests() cMemoryOwn:YES]; 1914} 1915 1916- (NSString *)fingerprintForFilePath:(NSString *)filePath { 1917 if (filePath == nil) return nil; 1918 1919 const char *val = self.megaApi->getFingerprint([filePath UTF8String]); 1920 if (!val) return nil; 1921 1922 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 1923 1924 delete [] val; 1925 return ret; 1926} 1927 1928- (NSString *)fingerprintForData:(NSData *)data modificationTime:(NSDate *)modificationTime { 1929 if (data == nil) return nil; 1930 1931 MEGADataInputStream mis = MEGADataInputStream(data); 1932 return [self fingerprintForInputStream:&mis modificationTime:modificationTime]; 1933} 1934 1935- (NSString *)fingerprintForFilePath:(NSString *)filePath modificationTime:(NSDate *)modificationTime { 1936 if (filePath.length == 0) return nil; 1937 1938 MEGAFileInputStream mis = MEGAFileInputStream(filePath); 1939 return [self fingerprintForInputStream:&mis modificationTime:modificationTime]; 1940} 1941 1942- (NSString *)fingerprintForInputStream:(MegaInputStream *)stream modificationTime:(NSDate *)modificationTime { 1943 const char *val = self.megaApi->getFingerprint(stream, (long long)[modificationTime timeIntervalSince1970]); 1944 if (val != NULL) { 1945 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 1946 delete [] val; 1947 return ret; 1948 } else { 1949 return nil; 1950 } 1951} 1952 1953- (NSString *)fingerprintForNode:(MEGANode *)node { 1954 if (node == nil) return nil; 1955 1956 const char *val = self.megaApi->getFingerprint([node getCPtr]); 1957 if (!val) return nil; 1958 1959 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 1960 1961 delete [] val; 1962 return ret; 1963} 1964 1965- (MEGANode *)nodeForFingerprint:(NSString *)fingerprint { 1966 if (fingerprint == nil) return nil; 1967 1968 MegaNode *node = self.megaApi->getNodeByFingerprint([fingerprint UTF8String]); 1969 1970 return node ? [[MEGANode alloc] initWithMegaNode:node cMemoryOwn:YES] : nil; 1971} 1972 1973- (MEGANode *)nodeForFingerprint:(NSString *)fingerprint parent:(MEGANode *)parent { 1974 if (fingerprint == nil) return nil; 1975 1976 MegaNode *node = self.megaApi->getNodeByFingerprint([fingerprint UTF8String], (parent != nil) ? [parent getCPtr] : NULL); 1977 1978 return node ? [[MEGANode alloc] initWithMegaNode:node cMemoryOwn:YES] : nil; 1979} 1980 1981- (MEGANodeList *)nodesForOriginalFingerprint:(NSString *)fingerprint { 1982 if (fingerprint.length == 0) { 1983 return nil; 1984 } 1985 1986 return [[MEGANodeList alloc] initWithNodeList:self.megaApi->getNodesByOriginalFingerprint([fingerprint UTF8String], NULL) cMemoryOwn:YES]; 1987} 1988 1989- (BOOL)hasFingerprint:(NSString *)fingerprint{ 1990 if (fingerprint == nil) return NO; 1991 1992 return self.megaApi->hasFingerprint([fingerprint UTF8String]); 1993} 1994 1995- (NSString *)CRCForFilePath:(NSString *)filePath { 1996 if (filePath == nil) return nil; 1997 1998 const char *val = self.megaApi->getCRC([filePath UTF8String]); 1999 if (!val) return nil; 2000 2001 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 2002 2003 delete [] val; 2004 return ret; 2005} 2006 2007- (NSString *)CRCForFingerprint:(NSString *)fingerprint{ 2008 if (fingerprint == nil) { 2009 return nil; 2010 } 2011 2012 const char *val = self.megaApi->getCRCFromFingerprint([fingerprint UTF8String]); 2013 if (!val) return nil; 2014 2015 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 2016 2017 delete [] val; 2018 return ret; 2019} 2020 2021- (NSString *)CRCForNode:(MEGANode *)node { 2022 if (node == nil) return nil; 2023 2024 const char *val = self.megaApi->getCRC([node getCPtr]); 2025 if (!val) return nil; 2026 2027 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 2028 2029 delete [] val; 2030 return ret; 2031} 2032 2033- (MEGANode *)nodeByCRC:(NSString *)crc parent:(MEGANode *)parent { 2034 if (crc == nil) return nil; 2035 2036 MegaNode *node = self.megaApi->getNodeByCRC([crc UTF8String], (parent != nil) ? [parent getCPtr] : NULL); 2037 2038 return node ? [[MEGANode alloc] initWithMegaNode:node cMemoryOwn:YES] : nil; 2039} 2040 2041- (MEGAShareType)accessLevelForNode:(MEGANode *)node { 2042 if (node == nil) return MEGAShareTypeAccessUnknown; 2043 2044 return (MEGAShareType) self.megaApi->getAccess([node getCPtr]); 2045} 2046 2047- (MEGAError *)checkAccessForNode:(MEGANode *)node level:(MEGAShareType)level { 2048 if (node == nil) return nil; 2049 2050 return [[MEGAError alloc] initWithMegaError:self.megaApi->checkAccess((node != nil) ? [node getCPtr] : NULL, (int) level).copy() cMemoryOwn:YES]; 2051} 2052 2053- (BOOL)isNodeInRubbish:(MEGANode *)node { 2054 return self.megaApi->isInRubbish(node ? [node getCPtr] : NULL); 2055} 2056 2057- (MEGAError *)checkMoveForNode:(MEGANode *)node target:(MEGANode *)target { 2058 return [[MEGAError alloc] initWithMegaError:self.megaApi->checkMove((node != nil) ? [node getCPtr] : NULL, (target != nil) ? [target getCPtr] : NULL).copy() cMemoryOwn:YES]; 2059} 2060 2061- (MEGANodeList *)nodeListSearchForNode:(MEGANode *)node searchString:(NSString *)searchString recursive:(BOOL)recursive { 2062 return [[MEGANodeList alloc] initWithNodeList:self.megaApi->search((node != nil) ? [node getCPtr] : NULL, (searchString != nil) ? [searchString UTF8String] : NULL, recursive) cMemoryOwn:YES]; 2063} 2064 2065- (MEGANodeList *)nodeListSearchForNode:(MEGANode *)node searchString:(NSString *)searchString cancelToken:(MEGACancelToken *)cancelToken recursive:(BOOL)recursive order:(MEGASortOrderType)order { 2066 return [MEGANodeList.alloc initWithNodeList:self.megaApi->search(node ? [node getCPtr] : NULL, searchString.UTF8String, cancelToken ? [cancelToken getCPtr] : NULL, recursive, (int)order) cMemoryOwn:YES]; 2067} 2068 2069- (MEGANodeList *)nodeListSearchForNode:(MEGANode *)node searchString:(NSString *)searchString { 2070 return [[MEGANodeList alloc] initWithNodeList:self.megaApi->search((node != nil) ? [node getCPtr] : NULL, (searchString != nil) ? [searchString UTF8String] : NULL, YES) cMemoryOwn:YES]; 2071} 2072 2073- (NSMutableArray *)recentActions { 2074 MegaRecentActionBucketList *megaRecentActionBucketList = self.megaApi->getRecentActions(); 2075 int count = megaRecentActionBucketList->size(); 2076 NSMutableArray *recentActionBucketMutableArray = [NSMutableArray.alloc initWithCapacity:(NSInteger)count]; 2077 for (int i = 0; i < count; i++) { 2078 MEGARecentActionBucket *recentActionBucket = [MEGARecentActionBucket.alloc initWithMegaRecentActionBucket:megaRecentActionBucketList->get(i)->copy() cMemoryOwn:YES]; 2079 [recentActionBucketMutableArray addObject:recentActionBucket]; 2080 } 2081 2082 return recentActionBucketMutableArray; 2083} 2084 2085- (NSMutableArray *)recentActionsSinceDays:(NSInteger)days maxNodes:(NSInteger)maxNodes { 2086 MegaRecentActionBucketList *megaRecentActionBucketList = self.megaApi->getRecentActions((int)days, (int)maxNodes); 2087 int count = megaRecentActionBucketList->size(); 2088 NSMutableArray *recentActionBucketMutableArray = [NSMutableArray.alloc initWithCapacity:(NSInteger)count]; 2089 for (int i = 0; i < count; i++) { 2090 MEGARecentActionBucket *recentActionBucket = [MEGARecentActionBucket.alloc initWithMegaRecentActionBucket:megaRecentActionBucketList->get(i)->copy() cMemoryOwn:YES]; 2091 [recentActionBucketMutableArray addObject:recentActionBucket]; 2092 } 2093 2094 return recentActionBucketMutableArray; 2095} 2096 2097- (BOOL)processMEGANodeTree:(MEGANode *)node recursive:(BOOL)recursive delegate:(id<MEGATreeProcessorDelegate>)delegate { 2098 return self.megaApi->processMegaTree(node ? [node getCPtr] : NULL, [self createMegaTreeProcessor:delegate], recursive); 2099} 2100 2101- (MEGANode *)authorizeNode:(MEGANode *)node { 2102 return [[MEGANode alloc] initWithMegaNode:self.megaApi->authorizeNode((node != nil) ? [node getCPtr] : NULL) cMemoryOwn:YES]; 2103} 2104 2105#ifdef ENABLE_CHAT 2106 2107- (MEGANode *)authorizeChatNode:(MEGANode *)node cauth:(NSString *)cauth { 2108 return [[MEGANode alloc] initWithMegaNode:self.megaApi->authorizeChatNode(node ? [node getCPtr] : NULL, cauth ? [cauth UTF8String] : NULL) cMemoryOwn:YES]; 2109} 2110 2111#endif 2112 2113- (NSNumber *)sizeForNode:(MEGANode *)node { 2114 return [[NSNumber alloc] initWithLongLong:self.megaApi->getSize([node getCPtr])]; 2115} 2116 2117- (NSString *)escapeFsIncompatible:(NSString *)name { 2118 if (name == nil) return nil; 2119 2120 const char *val = self.megaApi->escapeFsIncompatible([name UTF8String]); 2121 if (!val) return nil; 2122 2123 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 2124 2125 delete [] val; 2126 return ret; 2127} 2128 2129- (NSString *)escapeFsIncompatible:(NSString *)name destinationPath:(NSString *)destinationPath { 2130 if (name == nil) return nil; 2131 2132 const char *val = self.megaApi->escapeFsIncompatible(name.UTF8String, destinationPath.UTF8String); 2133 if (!val) return nil; 2134 2135 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 2136 2137 delete [] val; 2138 return ret; 2139} 2140 2141- (NSString *)unescapeFsIncompatible:(NSString *)localName { 2142 if (localName == nil) return nil; 2143 2144 const char *val = self.megaApi->unescapeFsIncompatible([localName UTF8String]); 2145 if (!val) return nil; 2146 2147 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 2148 2149 delete [] val; 2150 return ret; 2151} 2152 2153- (NSString *)unescapeFsIncompatible:(NSString *)localName destinationPath:(NSString *)destinationPath { 2154 if (localName == nil) return nil; 2155 2156 const char *val = self.megaApi->unescapeFsIncompatible(localName.UTF8String, destinationPath.UTF8String); 2157 if (!val) return nil; 2158 2159 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 2160 2161 delete [] val; 2162 return ret; 2163} 2164 2165- (void)changeApiUrl:(NSString *)apiURL disablepkp:(BOOL)disablepkp { 2166 self.megaApi->changeApiUrl((apiURL != nil) ? [apiURL UTF8String] : NULL, disablepkp); 2167} 2168 2169- (BOOL)setLanguageCode:(NSString *)languageCode { 2170 return self.megaApi->setLanguage(languageCode ? [languageCode UTF8String] : NULL); 2171} 2172 2173- (void)setLanguangePreferenceCode:(NSString *)languageCode delegate:(id<MEGARequestDelegate>)delegate { 2174 self.megaApi->setLanguagePreference(languageCode ? [languageCode UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 2175} 2176 2177- (void)setLanguangePreferenceCode:(NSString *)languageCode { 2178 self.megaApi->setLanguagePreference(languageCode ? [languageCode UTF8String] : NULL); 2179} 2180 2181- (void)getLanguagePreferenceWithDelegate:(id<MEGARequestDelegate>)delegate { 2182 self.megaApi->getLanguagePreference([self createDelegateMEGARequestListener:delegate singleListener:YES]); 2183} 2184 2185- (void)getLanguagePreference { 2186 self.megaApi->getLanguagePreference(); 2187} 2188 2189- (void)setFileVersionsOption:(BOOL)disable delegate:(id<MEGARequestDelegate>)delegate { 2190 self.megaApi->setFileVersionsOption(disable, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 2191} 2192 2193- (void)setFileVersionsOption:(BOOL)disable { 2194 self.megaApi->setFileVersionsOption(disable); 2195} 2196 2197- (void)getFileVersionsOptionWithDelegate:(id<MEGARequestDelegate>)delegate { 2198 self.megaApi->getFileVersionsOption([self createDelegateMEGARequestListener:delegate singleListener:YES]); 2199} 2200 2201- (void)getFileVersionsOption { 2202 self.megaApi->getFileVersionsOption(); 2203} 2204 2205- (void)setContactLinksOptionDisable:(BOOL)disable delegate:(id<MEGARequestDelegate>)delegate { 2206 self.megaApi->setContactLinksOption(disable, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 2207} 2208 2209- (void)setContactLinksOptionDisable:(BOOL)disable { 2210 self.megaApi->setContactLinksOption(disable); 2211} 2212 2213- (void)getContactLinksOptionWithDelegate:(id<MEGARequestDelegate>)delegate { 2214 self.megaApi->getContactLinksOption([self createDelegateMEGARequestListener:delegate singleListener:YES]); 2215} 2216 2217- (void)getContactLinksOption { 2218 self.megaApi->getContactLinksOption(); 2219} 2220 2221- (void)retrySSLErrors:(BOOL)enable { 2222 self.megaApi->retrySSLerrors(enable); 2223} 2224 2225- (void)setPublicKeyPinning:(BOOL)enable { 2226 self.megaApi->setPublicKeyPinning(enable); 2227} 2228 2229- (BOOL)createThumbnail:(NSString *)imagePath destinatioPath:(NSString *)destinationPath { 2230 if (imagePath == nil || destinationPath == nil) return NO; 2231 2232 return self.megaApi->createThumbnail([imagePath UTF8String], [destinationPath UTF8String]); 2233} 2234 2235- (BOOL)createPreview:(NSString *)imagePath destinatioPath:(NSString *)destinationPath { 2236 if (imagePath == nil || destinationPath == nil) return NO; 2237 2238 return self.megaApi->createPreview([imagePath UTF8String], [destinationPath UTF8String]); 2239} 2240 2241- (BOOL)createAvatar:(NSString *)imagePath destinationPath:(NSString *)destinationPath { 2242 if (imagePath == nil || destinationPath == nil) return NO; 2243 2244 return self.megaApi->createAvatar([imagePath UTF8String], [destinationPath UTF8String]); 2245} 2246 2247#ifdef HAVE_LIBUV 2248 2249#pragma mark - HTTP Proxy Server 2250 2251- (BOOL)httpServerStart:(BOOL)localOnly port:(NSInteger)port { 2252 return self.megaApi->httpServerStart(localOnly, (int)port, false, NULL, NULL, true); 2253} 2254 2255- (void)httpServerStop { 2256 self.megaApi->httpServerStop(); 2257} 2258 2259- (NSInteger)httpServerIsRunning { 2260 return (NSInteger)self.megaApi->httpServerIsRunning(); 2261} 2262 2263- (BOOL)httpServerIsLocalOnly { 2264 return self.megaApi->httpServerIsLocalOnly(); 2265} 2266 2267- (void)httpServerEnableFileServer:(BOOL)enable { 2268 self.megaApi->httpServerEnableFileServer(enable); 2269} 2270 2271- (BOOL)httpServerIsFileServerEnabled { 2272 return self.megaApi->httpServerIsFileServerEnabled(); 2273} 2274 2275- (void)httpServerEnableFolderServer:(BOOL)enable { 2276 self.megaApi->httpServerEnableFolderServer(enable); 2277} 2278 2279- (BOOL)httpServerIsFolderServerEnabled { 2280 return self.megaApi->httpServerIsFolderServerEnabled(); 2281} 2282 2283- (void)httpServerSetRestrictedMode:(NSInteger)mode { 2284 self.megaApi->httpServerSetRestrictedMode((int)mode); 2285} 2286 2287- (NSInteger)httpServerGetRestrictedMode { 2288 return (NSInteger)self.megaApi->httpServerGetRestrictedMode(); 2289} 2290 2291- (void)httpServerEnableSubtitlesSupport:(BOOL)enable { 2292 self.megaApi->httpServerEnableSubtitlesSupport(enable); 2293} 2294 2295- (BOOL)httpServerIsSubtitlesSupportEnabled { 2296 return self.megaApi->httpServerIsSubtitlesSupportEnabled(); 2297} 2298 2299- (void)httpServerAddDelegate:(id<MEGATransferDelegate>)delegate { 2300 self.megaApi->httpServerAddListener([self createDelegateMEGATransferListener:delegate singleListener:NO]); 2301} 2302 2303- (void)httpServerRemoveDelegate:(id<MEGATransferDelegate>)delegate { 2304 self.megaApi->httpServerRemoveListener([self createDelegateMEGATransferListener:delegate singleListener:NO]); 2305} 2306 2307- (NSURL *)httpServerGetLocalLink:(MEGANode *)node { 2308 const char *val = self.megaApi->httpServerGetLocalLink([node getCPtr]); 2309 if (!val) return nil; 2310 2311 NSURL *ret = [NSURL URLWithString:[NSString stringWithUTF8String:val]]; 2312 2313 delete [] val; 2314 return ret; 2315} 2316 2317- (void)httpServerSetMaxBufferSize:(NSInteger)bufferSize { 2318 self.megaApi->httpServerSetMaxBufferSize((int)bufferSize); 2319} 2320 2321- (NSInteger)httpServerGetMaxBufferSize { 2322 return (NSInteger)self.megaApi->httpServerGetMaxBufferSize(); 2323} 2324 2325- (void)httpServerSetMaxOutputSize:(NSInteger)outputSize { 2326 self.megaApi->httpServerSetMaxOutputSize((int)outputSize); 2327} 2328 2329- (NSInteger)httpServerGetMaxOutputSize { 2330 return (NSInteger)self.megaApi->httpServerGetMaxOutputSize(); 2331} 2332 2333#endif 2334 2335+ (NSString *)mimeTypeByExtension:(NSString *)extension { 2336 const char *val = MegaApi::getMimeType([extension UTF8String]); 2337 if (!val) return nil; 2338 2339 NSString *ret = [[NSString alloc] initWithUTF8String:val]; 2340 2341 delete [] val; 2342 return ret; 2343} 2344 2345- (void)registeriOSdeviceToken:(NSString *)deviceToken delegate:(id<MEGARequestDelegate>)delegate { 2346 self.megaApi->registerPushNotifications(PushNotificationTokenTypeiOSStandard, deviceToken ? [deviceToken UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 2347} 2348 2349- (void)registeriOSdeviceToken:(NSString *)deviceToken { 2350 self.megaApi->registerPushNotifications(PushNotificationTokenTypeiOSStandard, deviceToken ? [deviceToken UTF8String] : NULL); 2351} 2352 2353- (void)registeriOSVoIPdeviceToken:(NSString *)deviceToken delegate:(id<MEGARequestDelegate>)delegate { 2354 self.megaApi->registerPushNotifications(PushNotificationTokenTypeiOSVoIP, deviceToken ? [deviceToken UTF8String] : NULL, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 2355} 2356 2357- (void)registeriOSVoIPdeviceToken:(NSString *)deviceToken { 2358 self.megaApi->registerPushNotifications(PushNotificationTokenTypeiOSVoIP, deviceToken ? [deviceToken UTF8String] : NULL); 2359} 2360 2361- (void)getAccountAchievementsWithDelegate:(id<MEGARequestDelegate>)delegate { 2362 self.megaApi->getAccountAchievements([self createDelegateMEGARequestListener:delegate singleListener:YES]); 2363} 2364 2365- (void)getAccountAchievements { 2366 self.megaApi->getAccountAchievements(); 2367} 2368 2369- (void)getMegaAchievementsWithDelegate:(id<MEGARequestDelegate>)delegate { 2370 self.megaApi->getMegaAchievements([self createDelegateMEGARequestListener:delegate singleListener:YES]); 2371} 2372 2373- (void)getMegaAchievements { 2374 self.megaApi->getMegaAchievements(); 2375} 2376 2377- (void)getPublicLinkInformationWithFolderLink:(NSString *)folderLink delegate:(id<MEGARequestDelegate>)delegate { 2378 self.megaApi->getPublicLinkInformation(folderLink.UTF8String, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 2379} 2380 2381- (void)getPublicLinkInformationWithFolderLink:(NSString *)folderLink { 2382 self.megaApi->getPublicLinkInformation(folderLink.UTF8String); 2383} 2384 2385#pragma mark - SMS 2386 2387- (SMSState)smsAllowedState { 2388 return (SMSState)self.megaApi->smsAllowedState(); 2389} 2390 2391- (nullable NSString *)smsVerifiedPhoneNumber { 2392 char *number = self.megaApi->smsVerifiedPhoneNumber(); 2393 2394 if (number == NULL) { 2395 return nil; 2396 } 2397 2398 NSString *numberString = @(number); 2399 delete [] number; 2400 return numberString; 2401} 2402 2403- (void)getRegisteredContacts:(NSArray<NSDictionary *> *)contacts delegate:(id<MEGARequestDelegate>)delegate { 2404 MegaStringMap *stringMapContacts = MegaStringMap::createInstance(); 2405 for (NSDictionary *contact in contacts) { 2406 NSString *key = contact.allKeys.firstObject; 2407 NSString *value = contact.allValues.firstObject; 2408 stringMapContacts->set(key.UTF8String, value.UTF8String); 2409 } 2410 2411 self.megaApi->getRegisteredContacts(stringMapContacts, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 2412 2413 delete stringMapContacts; 2414} 2415 2416- (void)getCountryCallingCodesWithDelegate:(id<MEGARequestDelegate>)delegate { 2417 self.megaApi->getCountryCallingCodes([self createDelegateMEGARequestListener:delegate singleListener:YES]); 2418} 2419 2420- (void)sendSMSVerificationCodeToPhoneNumber:(NSString *)phoneNumber delegate:(id<MEGARequestDelegate>)delegate { 2421 self.megaApi->sendSMSVerificationCode([phoneNumber UTF8String], [self createDelegateMEGARequestListener:delegate singleListener:YES], YES); 2422} 2423 2424- (void)checkSMSVerificationCode:(NSString *)verificationCode delegate:(id<MEGARequestDelegate>)delegate { 2425 self.megaApi->checkSMSVerificationCode([verificationCode UTF8String], [self createDelegateMEGARequestListener:delegate singleListener:YES]); 2426} 2427 2428- (void)resetSmsVerifiedPhoneNumberWithDelegate:(id<MEGARequestDelegate>)delegate { 2429 self.megaApi->resetSmsVerifiedPhoneNumber([self createDelegateMEGARequestListener:delegate singleListener:YES]); 2430} 2431 2432- (void)resetSmsVerifiedPhoneNumberWithDelegate { 2433 self.megaApi->resetSmsVerifiedPhoneNumber(); 2434} 2435 2436#pragma mark - Push Notification Settings 2437 2438- (void)getPushNotificationSettingsWithDelegate:(id<MEGARequestDelegate>)delegate { 2439 self.megaApi->getPushNotificationSettings([self createDelegateMEGARequestListener:delegate singleListener:YES]); 2440} 2441 2442- (void)getPushNotificationSettings { 2443 self.megaApi->getPushNotificationSettings(); 2444} 2445 2446- (void)setPushNotificationSettings:(MEGAPushNotificationSettings *)pushNotificationSettings 2447 delegate:(id<MEGARequestDelegate>)delegate { 2448 self.megaApi->setPushNotificationSettings(pushNotificationSettings.getCPtr, 2449 [self createDelegateMEGARequestListener:delegate singleListener:YES]); 2450} 2451 2452- (void)setPushNotificationSettings:(MEGAPushNotificationSettings *)pushNotificationSettings { 2453 self.megaApi->setPushNotificationSettings(pushNotificationSettings.getCPtr); 2454} 2455 2456#pragma mark - Debug 2457 2458+ (void)setLogLevel:(MEGALogLevel)logLevel { 2459 MegaApi::setLogLevel((int)logLevel); 2460} 2461 2462+ (void)setLogToConsole:(BOOL)enable { 2463 MegaApi::setLogToConsole(enable); 2464} 2465 2466+ (void)logWithLevel:(MEGALogLevel)logLevel message:(NSString *)message filename:(NSString *)filename line:(NSInteger)line { 2467 MegaApi::log((int)logLevel, (message != nil) ? [message UTF8String] : NULL, (filename != nil) ? [filename UTF8String] : NULL, (int)line); 2468} 2469 2470+ (void)logWithLevel:(MEGALogLevel)logLevel message:(NSString *)message filename:(NSString *)filename { 2471 MegaApi::log((int)logLevel, (message != nil) ? [message UTF8String] : NULL, (filename != nil) ? [filename UTF8String] : NULL); 2472} 2473 2474+ (void)logWithLevel:(MEGALogLevel)logLevel message:(NSString *)message { 2475 MegaApi::log((int)logLevel, (message != nil) ? [message UTF8String] : NULL); 2476} 2477 2478- (void)sendEvent:(NSInteger)eventType message:(NSString *)message delegate:(id<MEGARequestDelegate>)delegate { 2479 self.megaApi->sendEvent((int)eventType, message.UTF8String, [self createDelegateMEGARequestListener:delegate singleListener:YES]); 2480} 2481 2482- (void)sendEvent:(NSInteger)eventType message:(NSString *)message { 2483 self.megaApi->sendEvent((int)eventType, message.UTF8String); 2484} 2485 2486#pragma mark - Private methods 2487 2488- (MegaRequestListener *)createDelegateMEGARequestListener:(id<MEGARequestDelegate>)delegate singleListener:(BOOL)singleListener { 2489 if (delegate == nil) return nil; 2490 2491 DelegateMEGARequestListener *delegateListener = new DelegateMEGARequestListener(self, delegate, singleListener); 2492 pthread_mutex_lock(&listenerMutex); 2493 _activeRequestListeners.insert(delegateListener); 2494 pthread_mutex_unlock(&listenerMutex); 2495 return delegateListener; 2496} 2497 2498- (MegaTransferListener *)createDelegateMEGATransferListener:(id<MEGATransferDelegate>)delegate singleListener:(BOOL)singleListener { 2499 if (delegate == nil) return nil; 2500 2501 DelegateMEGATransferListener *delegateListener = new DelegateMEGATransferListener(self, delegate, singleListener); 2502 pthread_mutex_lock(&listenerMutex); 2503 _activeTransferListeners.insert(delegateListener); 2504 pthread_mutex_unlock(&listenerMutex); 2505 return delegateListener; 2506} 2507 2508- (MegaGlobalListener *)createDelegateMEGAGlobalListener:(id<MEGAGlobalDelegate>)delegate { 2509 if (delegate == nil) return nil; 2510 2511 DelegateMEGAGlobalListener *delegateListener = new DelegateMEGAGlobalListener(self, delegate); 2512 pthread_mutex_lock(&listenerMutex); 2513 _activeGlobalListeners.insert(delegateListener); 2514 pthread_mutex_unlock(&listenerMutex); 2515 return delegateListener; 2516} 2517 2518- (MegaListener *)createDelegateMEGAListener:(id<MEGADelegate>)delegate { 2519 if (delegate == nil) return nil; 2520 2521 DelegateMEGAListener *delegateListener = new DelegateMEGAListener(self, delegate); 2522 pthread_mutex_lock(&listenerMutex); 2523 _activeMegaListeners.insert(delegateListener); 2524 pthread_mutex_unlock(&listenerMutex); 2525 return delegateListener; 2526} 2527 2528- (MegaLogger *)createDelegateMegaLogger:(id<MEGALoggerDelegate>)delegate { 2529 if (delegate == nil) return nil; 2530 2531 DelegateMEGALoggerListener *delegateListener = new DelegateMEGALoggerListener(delegate); 2532 pthread_mutex_lock(&listenerMutex); 2533 _activeLoggerListeners.insert(delegateListener); 2534 pthread_mutex_unlock(&listenerMutex); 2535 return delegateListener; 2536} 2537 2538- (MegaTreeProcessor *)createMegaTreeProcessor:(id<MEGATreeProcessorDelegate>)delegate { 2539 if (delegate == nil) return nil; 2540 2541 DelegateMEGATreeProcessorListener *delegateListener = new DelegateMEGATreeProcessorListener(delegate); 2542 2543 return delegateListener; 2544} 2545 2546- (void)freeRequestListener:(DelegateMEGARequestListener *)delegate { 2547 if (delegate == nil) return; 2548 2549 pthread_mutex_lock(&listenerMutex); 2550 _activeRequestListeners.erase(delegate); 2551 pthread_mutex_unlock(&listenerMutex); 2552 delete delegate; 2553} 2554 2555- (void)freeTransferListener:(DelegateMEGATransferListener *)delegate { 2556 if (delegate == nil) return; 2557 2558 pthread_mutex_lock(&listenerMutex); 2559 _activeTransferListeners.erase(delegate); 2560 pthread_mutex_unlock(&listenerMutex); 2561 delete delegate; 2562} 2563 2564@end 2565