├── .clang-format
├── .editorconfig
├── .github
└── ISSUE_TEMPLATE.md
├── .gitignore
├── .gitmodules
├── .modio
├── CMakeLists.txt
├── CMakePresets.json
├── LICENSE
├── Modio.natvis
├── README.adoc
├── cmake
├── GetGitRevisionDescription.cmake
├── GetGitRevisionDescription.cmake.in
├── LocateVisualStudio.cmake
├── ModioGeneratedVariables.h.in
├── initialise-platform.cmake
├── modio-packaging.cmake
├── modio-version.cmake
├── platform-defines.cmake
└── split-compilation.cmake
├── doc
├── .nojekyll
├── assets
│ ├── css
│ │ └── styles.58715c6c.css
│ ├── fonts
│ │ ├── EuclidCircularB-Bold-WebS-85b3e0686fa738474f5c5cbae48da808.woff
│ │ ├── EuclidCircularB-Bold-WebS-f996f0f3c9d7e69a3a8e9d9e5f3c8e5c.woff2
│ │ ├── EuclidCircularB-Regular-WebS-a2e11c861d5a9f3541d340c87e5403ea.woff2
│ │ ├── EuclidCircularB-Regular-WebS-bf8d727ab20d44bfe4c19326a7f7656e.woff
│ │ ├── mod_Bold-6a828d6c1ee525b8ccdaab51a5555dad.woff
│ │ ├── mod_Bold-ef576a3617e7d78bf072ca28fac9ec27.woff2
│ │ ├── mod_Regular-64d7bd55cab96b676cc4ab2cf89c717e.woff2
│ │ └── mod_Regular-db0da0c22c8114761de7dede60f78da4.woff
│ └── js
│ │ ├── 05ae0fb1.9232a171.js
│ │ ├── 0879cf16.0fc9b352.js
│ │ ├── 0ce884cc.5bd0a887.js
│ │ ├── 1169.906279d0.js
│ │ ├── 1176.29c7b74f.js
│ │ ├── 1245.391f752c.js
│ │ ├── 1303.b2925fda.js
│ │ ├── 1303.b2925fda.js.LICENSE.txt
│ │ ├── 1331.07d85199.js
│ │ ├── 1398.7d0c6f19.js
│ │ ├── 17896441.11c71f9b.js
│ │ ├── 1946.7aa0f22a.js
│ │ ├── 1a4e3797.3546f7d6.js
│ │ ├── 1a4e3797.3546f7d6.js.LICENSE.txt
│ │ ├── 20e13d56.0bd7309b.js
│ │ ├── 2130.43d43741.js
│ │ ├── 2237.e3f2ebcc.js
│ │ ├── 22dd74f7.860a0aae.js
│ │ ├── 2376.08677b50.js
│ │ ├── 2453.82d6d7f3.js
│ │ ├── 2548.576f7461.js
│ │ ├── 26683747.24b8f85f.js
│ │ ├── 281fb486.5b88acb6.js
│ │ ├── 2843.4eed0390.js
│ │ ├── 2925.d1fbe33d.js
│ │ ├── 2983.35c1e573.js
│ │ ├── 3068.ad695da7.js
│ │ ├── 3626.bba7e379.js
│ │ ├── 3706.44baf066.js
│ │ ├── 403f919c.25e1abf9.js
│ │ ├── 416.0a5ddd77.js
│ │ ├── 4162.a4ae0f07.js
│ │ ├── 4741.c22b4e87.js
│ │ ├── 4943.5f57954a.js
│ │ ├── 4d3f9fe4.4612858b.js
│ │ ├── 5e95c892.9bed6022.js
│ │ ├── 6420.4b92d03f.js
│ │ ├── 6788.3f735aa4.js
│ │ ├── 6803.08628f2d.js
│ │ ├── 68befa13.fb3df4bf.js
│ │ ├── 7106.16bfe2ec.js
│ │ ├── 7106.16bfe2ec.js.LICENSE.txt
│ │ ├── 7426.f5922b1f.js
│ │ ├── 79d1d0e4.f0969688.js
│ │ ├── 7a4c24c2.3663d11d.js
│ │ ├── 7b283257.6c95601c.js
│ │ ├── 8055.3d30768b.js
│ │ ├── 808e7408.fa8fac32.js
│ │ ├── 8158.9593b541.js
│ │ ├── 8337.b44523c6.js
│ │ ├── 8478.4a99735e.js
│ │ ├── 8635.42ee7d4b.js
│ │ ├── 8810.a22d1b82.js
│ │ ├── 8869.440bc5a1.js
│ │ ├── 8913.78590cf1.js
│ │ ├── 9689.54850d81.js
│ │ ├── a7456010.17260dd7.js
│ │ ├── a7bd4aaa.3ca9d01e.js
│ │ ├── a94703ab.8c09d48e.js
│ │ ├── aba21aa0.9c3e38ee.js
│ │ ├── b4c43290.48088b47.js
│ │ ├── c141421f.a7090503.js
│ │ ├── c2069388.956caae5.js
│ │ ├── ca562bb2.fb099bc7.js
│ │ ├── d9b18962.afd241b0.js
│ │ ├── e1c3e416.ca7c254a.js
│ │ ├── e6d24e8a.1f628175.js
│ │ ├── eb928fe6.13cfc2c4.js
│ │ ├── f9983479.9da7fe24.js
│ │ ├── main.43446498.js
│ │ ├── main.43446498.js.LICENSE.txt
│ │ └── runtime~main.87501012.js
├── chapters
│ └── diagrams
│ │ └── general-overview
│ │ └── modio_sdk_flow-init.puml
├── fonts
│ ├── EuclidCircularB-Bold-WebS.woff
│ ├── EuclidCircularB-Bold-WebS.woff2
│ ├── EuclidCircularB-Regular-WebS.woff
│ ├── EuclidCircularB-Regular-WebS.woff2
│ ├── mod_Bold.woff
│ ├── mod_Bold.woff2
│ ├── mod_Regular.woff
│ └── mod_Regular.woff2
├── getting-started.mdx
├── img
│ ├── chevron-down.svg
│ ├── favicon.ico
│ ├── modio-cog-blue.svg
│ ├── modio_reg_black.svg
│ └── modio_unreg_white.svg
├── index.html
└── js
│ └── rest_api_nav.js
├── examples
├── 01_Initialization.cpp
├── 02_ModQueries.cpp
├── 03_Authentication.cpp
├── 04_Threading.cpp
├── 05_SubscriptionManagement.cpp
├── 06_ForceUninstall.cpp
├── 07_ReportMod.cpp
├── 08_SubmitMod.cpp
├── 09_MonetizationWalletManagement.cpp
├── 10_MonetizationPurchase.cpp
├── 11_TempModSets.cpp
├── 12_RefreshEntitlements.cpp
├── 13_MetricsSession.cpp
├── CMakeLists.txt
└── advanced
│ ├── 01_SteamAuthAndEntitlements
│ ├── 01_SteamAuthEntitlements.cpp
│ └── CMakeLists.txt
│ └── CMakeLists.txt
├── ext
├── CMakeLists.txt
├── asio.cmake
├── httpparser.cmake
├── json.cmake
└── lua.cmake
├── modio
├── CMakeLists.txt
└── modio
│ ├── ModioSDK.h
│ ├── cache
│ ├── CMakeLists.txt
│ ├── ModioCacheService.h
│ └── ModioCacheService.ipp
│ ├── compression
│ ├── CMakeLists.txt
│ ├── ModioArchiveReader.h
│ ├── ModioArchiveWriter.h
│ ├── ModioCompressionService.h
│ └── ModioCompressionService.ipp
│ ├── core
│ ├── CMakeLists.txt
│ ├── ModioBuffer.h
│ ├── ModioBuffer.ipp
│ ├── ModioCoreTypes.h
│ ├── ModioCoreTypes.ipp
│ ├── ModioCreateModFileParams.h
│ ├── ModioCreateModParams.h
│ ├── ModioDefaultRequestParameters.h
│ ├── ModioEditModParams.h
│ ├── ModioErrorCode.h
│ ├── ModioErrorCondition.h
│ ├── ModioFilterParams.h
│ ├── ModioFilterParams.ipp
│ ├── ModioFlag.h
│ ├── ModioInitializeOptions.h
│ ├── ModioInitializeOptions.ipp
│ ├── ModioLogBuffer.h
│ ├── ModioLogEnum.h
│ ├── ModioLogService.h
│ ├── ModioLogService.ipp
│ ├── ModioLogger.h
│ ├── ModioMetricsService.h
│ ├── ModioMetricsService.ipp
│ ├── ModioModCollectionEntry.h
│ ├── ModioModCollectionEntry.ipp
│ ├── ModioModDependency.h
│ ├── ModioModDependency.ipp
│ ├── ModioReportParams.h
│ ├── ModioReportParams.ipp
│ ├── ModioServices.h
│ ├── ModioSplitCompilation.h
│ ├── ModioStdTypes.h
│ ├── ModioTemporaryModSet.h
│ ├── ModioTemporaryModSet.ipp
│ └── entities
│ │ ├── CMakeLists.txt
│ │ ├── ModioEntitlementConsumptionStatus.h
│ │ ├── ModioEntitlementConsumptionStatus.ipp
│ │ ├── ModioEntitlementConsumptionStatusList.h
│ │ ├── ModioEntitlementConsumptionStatusList.ipp
│ │ ├── ModioFileMetadata.h
│ │ ├── ModioFileMetadata.ipp
│ │ ├── ModioGameCommunityOptions.h
│ │ ├── ModioGameCommunityOptions.ipp
│ │ ├── ModioGameInfo.h
│ │ ├── ModioGameInfo.ipp
│ │ ├── ModioGameInfoList.h
│ │ ├── ModioGameInfoList.ipp
│ │ ├── ModioGameMaturityOptions.h
│ │ ├── ModioGameMaturityOptions.ipp
│ │ ├── ModioGameMonetization.h
│ │ ├── ModioGameMonetization.ipp
│ │ ├── ModioGameStats.h
│ │ ├── ModioGameStats.ipp
│ │ ├── ModioList.h
│ │ ├── ModioMetricsSessionEndParams.h
│ │ ├── ModioMetricsSessionHeartbeatParams.h
│ │ ├── ModioMetricsSessionStartParams.h
│ │ ├── ModioModCommunityOptions.h
│ │ ├── ModioModCommunityOptions.ipp
│ │ ├── ModioModDetails.h
│ │ ├── ModioModDetails.ipp
│ │ ├── ModioModInfo.h
│ │ ├── ModioModInfo.ipp
│ │ ├── ModioModInfoList.h
│ │ ├── ModioModInfoList.ipp
│ │ ├── ModioModStats.h
│ │ ├── ModioModStats.ipp
│ │ ├── ModioModTagOptions.h
│ │ ├── ModioModTagOptions.ipp
│ │ ├── ModioPagedResult.h
│ │ ├── ModioPagedResult.ipp
│ │ ├── ModioProfileMaturity.h
│ │ ├── ModioProfileMaturity.ipp
│ │ ├── ModioTerms.h
│ │ ├── ModioTerms.ipp
│ │ ├── ModioToken.h
│ │ ├── ModioToken.ipp
│ │ ├── ModioTransactionRecord.h
│ │ ├── ModioTransactionRecord.ipp
│ │ ├── ModioURLList.h
│ │ ├── ModioURLList.ipp
│ │ ├── ModioUser.h
│ │ ├── ModioUser.ipp
│ │ ├── ModioUserDelegationToken.h
│ │ ├── ModioUserDelegationToken.ipp
│ │ ├── ModioUserList.h
│ │ ├── ModioUserList.ipp
│ │ ├── ModioUserRatingList.h
│ │ └── ModioUserRatingList.ipp
│ ├── detail
│ ├── AsioWrapper.h
│ ├── CMakeLists.txt
│ ├── ConcurrentQueueWrapper.h
│ ├── FilesystemWrapper.h
│ ├── FilterOperations.inl
│ ├── FmtWrapper.h
│ ├── HedleyWrapper.h
│ ├── JsonWrapper.h
│ ├── MbedtlsWrapper.h
│ ├── ModioCRC.h
│ ├── ModioCompilerMacros.h
│ ├── ModioConstants.h
│ ├── ModioDefines.h
│ ├── ModioExtInitParamStub.h
│ ├── ModioFormatters.h
│ ├── ModioHashHelpers.h
│ ├── ModioJsonHelpers.h
│ ├── ModioJsonHelpers.ipp
│ ├── ModioLibraryConfigurationHelpers.h
│ ├── ModioMovableTypes.h
│ ├── ModioObjectTrack.h
│ ├── ModioOperationQueue.h
│ ├── ModioProfiling.h
│ ├── ModioProfiling.ipp
│ ├── ModioSDKSessionData.h
│ ├── ModioSDKSessionData.ipp
│ ├── ModioSDKSharedLibrary.cpp
│ ├── ModioSingletons.h
│ ├── ModioStringHash.h
│ ├── ModioStringHelpers.h
│ ├── ModioThrow.h
│ ├── ModioTransactional.h
│ ├── ModioUndefs.h
│ ├── OptionalWrapper.h
│ ├── compression
│ │ ├── zip
│ │ │ ├── ArchiveFileImplementation.h
│ │ │ ├── ArchiveFileImplementation.ipp
│ │ │ ├── CompressionImplementation.h
│ │ │ └── ZipStructures.h
│ │ └── zlib
│ │ │ ├── deflate_stream.hpp
│ │ │ ├── detail
│ │ │ ├── bitstream.hpp
│ │ │ ├── deflate_stream.hpp
│ │ │ ├── deflate_stream.ipp
│ │ │ ├── inflate_stream.hpp
│ │ │ ├── inflate_stream.ipp
│ │ │ ├── ranges.hpp
│ │ │ └── window.hpp
│ │ │ ├── error.hpp
│ │ │ ├── inflate_stream.hpp
│ │ │ └── zlib.hpp
│ ├── entities
│ │ ├── ModioAvatar.h
│ │ ├── ModioAvatar.ipp
│ │ ├── ModioGalleryList.h
│ │ ├── ModioGalleryList.ipp
│ │ ├── ModioIcon.h
│ │ ├── ModioIcon.ipp
│ │ ├── ModioImage.h
│ │ ├── ModioImage.ipp
│ │ ├── ModioLogo.h
│ │ ├── ModioLogo.ipp
│ │ ├── ModioUploadPart.h
│ │ └── ModioUploadSession.h
│ ├── hedley.h
│ ├── hmac_sha256.h
│ ├── http
│ │ ├── ModioRequestBodyKVPContainer.h
│ │ ├── PerformRequestImpl.h
│ │ ├── ResponseError.h
│ │ └── ResponseParser.h
│ ├── ops
│ │ ├── AddOrUpdateModLogoOp.h
│ │ ├── AuthenticateUserByEmailOp.h
│ │ ├── DownloadFileOp.h
│ │ ├── FetchExternalUpdates.h
│ │ ├── GetGameInfoOp.h
│ │ ├── GetMutedUsersOp.h
│ │ ├── LoadGlobalConfigOverrideFileDataOp.h
│ │ ├── LoadModCollectionFromStorage.h
│ │ ├── ModManagementLoop.h
│ │ ├── ModioAvatarImageType.h
│ │ ├── ModioDownloadImage.h
│ │ ├── ModioGalleryImageType.h
│ │ ├── ModioLogoImageType.h
│ │ ├── MuteUserOp.h
│ │ ├── PreviewExternalUpdatesOp.h
│ │ ├── ReportContentOp.h
│ │ ├── RequestEmailAuthCodeOp.h
│ │ ├── SaveModCollectionToStorage.h
│ │ ├── ServiceInitializationOp.h
│ │ ├── Shutdown.h
│ │ ├── SubscribeToModOp.h
│ │ ├── UnmuteUserOp.h
│ │ ├── UnsubscribeFromMod.h
│ │ ├── ValidateAllInstalledModsOp.h
│ │ ├── ValidateModInstallationOp.h
│ │ ├── auth
│ │ │ ├── AuthenticateUserByApple.h
│ │ │ ├── AuthenticateUserByDiscord.h
│ │ │ ├── AuthenticateUserByEpic.h
│ │ │ ├── AuthenticateUserByGog.h
│ │ │ ├── AuthenticateUserByGoogleIDToken.h
│ │ │ ├── AuthenticateUserByGoogleServerSideToken.h
│ │ │ ├── AuthenticateUserByItch.h
│ │ │ ├── AuthenticateUserByOculus.h
│ │ │ ├── AuthenticateUserByOpenID.h
│ │ │ ├── AuthenticateUserByPSN.h
│ │ │ ├── AuthenticateUserBySteam.h
│ │ │ ├── AuthenticateUserBySwitchID.h
│ │ │ ├── AuthenticateUserByXBoxLive.h
│ │ │ ├── AuthenticateUserExternal.h
│ │ │ └── ModioGetTermsOfUseOp.h
│ │ ├── compression
│ │ │ ├── CompressFolderOp.h
│ │ │ ├── ExtractAllToFolderOp.h
│ │ │ ├── ExtractEntryDeflateOp.h
│ │ │ ├── ExtractEntryStoreOp.h
│ │ │ ├── ParseArchiveContentsOp.h
│ │ │ └── zip
│ │ │ │ ├── AddDirectoryEntryOp.h
│ │ │ │ ├── AddFileEntryOp.h
│ │ │ │ └── FinalizeArchiveOp.h
│ │ ├── http
│ │ │ └── PerformRequestAndGetResponseOp.h
│ │ ├── metrics
│ │ │ ├── MetricsSessionEndOp.h
│ │ │ ├── MetricsSessionSendHeartbeatAtIntervalOp.h
│ │ │ ├── MetricsSessionSendHeartbeatOnceOp.h
│ │ │ └── MetricsSessionStartOp.h
│ │ ├── mod
│ │ │ ├── AddModDependenciesOp.h
│ │ │ ├── ArchiveModOp.h
│ │ │ ├── DeleteModDependenciesOp.h
│ │ │ ├── GetModDependenciesOp.h
│ │ │ ├── GetModDetailsOp.h
│ │ │ ├── GetModInfoOp.h
│ │ │ ├── GetModMediaAvatarOp.h
│ │ │ ├── GetModMediaGalleryOp.h
│ │ │ ├── GetModMediaLogoOp.h
│ │ │ ├── GetModTagsOp.h
│ │ │ ├── ListAllModsOp.h
│ │ │ ├── ListUserCreatedModsOp.h
│ │ │ ├── SubmitModChangesOp.h
│ │ │ ├── SubmitModRatingOp.h
│ │ │ ├── SubmitNewModFileOp.h
│ │ │ └── SubmitNewModOp.h
│ │ ├── modmanagement
│ │ │ ├── FetchUserSubscriptionsFromServer.h
│ │ │ ├── ForceUninstallModOp.h
│ │ │ ├── InstallOrUpdateMod.h
│ │ │ ├── ProcessNextModInTempModSet.h
│ │ │ ├── ProcessNextModInUserCollection.h
│ │ │ └── UninstallMod.h
│ │ ├── monetization
│ │ │ ├── FetchUserPurchasesOp.h
│ │ │ ├── GetUserDelegationTokenOp.h
│ │ │ ├── GetUserWalletBalanceOp.h
│ │ │ ├── PurchaseModOp.h
│ │ │ ├── RefreshUserEntitlementsOp.h
│ │ │ ├── RefreshUserEntitlementsPSN.h
│ │ │ ├── RefreshUserEntitlementsSteam.h
│ │ │ └── RefreshUserEntitlementsXboxLive.h
│ │ ├── upload
│ │ │ ├── Multipart
│ │ │ │ ├── MultipartGetSessionOp.h
│ │ │ │ └── MultipartGetUploadedOp.h
│ │ │ ├── UploadFileOp.h
│ │ │ ├── UploadFilePartOp.h
│ │ │ └── UploadMultipartFileOp.h
│ │ ├── user
│ │ │ └── GetUserMediaOp.h
│ │ └── userdata
│ │ │ ├── GetUserRatingsOp.h
│ │ │ ├── InitializeUserDataOp.h
│ │ │ ├── ListUserGamesOp.h
│ │ │ ├── RefreshUserDataOp.h
│ │ │ ├── SaveUserDataToStorageOp.h
│ │ │ └── VerifyUserAuthenticationOp.h
│ ├── serialization
│ │ ├── ModioAvatarSerialization.h
│ │ ├── ModioEntitlementConsumptionStatusListSerialization.h
│ │ ├── ModioEntitlementConsumptionStatusSerialization.h
│ │ ├── ModioFileMetadataSerialization.h
│ │ ├── ModioGalleryListSerialization.h
│ │ ├── ModioGameCommunityOptionsSerialization.h
│ │ ├── ModioGameInfoListSerialization.h
│ │ ├── ModioGameInfoSerialization.h
│ │ ├── ModioGameMaturityOptionsSerialization.h
│ │ ├── ModioGameMonetizationSerialization.h
│ │ ├── ModioGameStatsSerialization.h
│ │ ├── ModioIconSerialization.h
│ │ ├── ModioImageSerialization.h
│ │ ├── ModioJsonHelpersSerialization.h
│ │ ├── ModioLogoSerialization.h
│ │ ├── ModioMetricsSessionEndParamsSerialization.h
│ │ ├── ModioMetricsSessionHeartbeatParamsSerialization.h
│ │ ├── ModioMetricsSessionStartParamsSerialization.h
│ │ ├── ModioModCollectionEntrySerialization.h
│ │ ├── ModioModCommunityOptionsSerialization.h
│ │ ├── ModioModDependencySerialization.h
│ │ ├── ModioModDetailsSerialization.h
│ │ ├── ModioModInfoListSerialization.h
│ │ ├── ModioModInfoSerialization.h
│ │ ├── ModioModStatsSerialization.h
│ │ ├── ModioModTagOptionsSerialization.h
│ │ ├── ModioPagedResultSerialization.h
│ │ ├── ModioProfileMaturitySerialization.h
│ │ ├── ModioResponseErrorSerialization.h
│ │ ├── ModioTermsSerialization.h
│ │ ├── ModioTokenSerialization.h
│ │ ├── ModioTransactionRecordSerialization.h
│ │ ├── ModioURLListSerialization.h
│ │ ├── ModioUploadPartSerialization.h
│ │ ├── ModioUploadSessionSerialization.h
│ │ ├── ModioUserDataContainerSerialization.h
│ │ ├── ModioUserDelegationTokenSerialization.h
│ │ ├── ModioUserListSerialization.h
│ │ ├── ModioUserRatingListSerialization.h
│ │ └── ModioUserSerialization.h
│ └── userdata
│ │ ├── ModioUserDataContainer.h
│ │ ├── ModioUserDataContainer.ipp
│ │ ├── ModioUserProfile.h
│ │ └── ModioUserProfile.ipp
│ ├── file
│ ├── ModioFile.h
│ └── ModioFileService.h
│ ├── http
│ ├── CMakeLists.txt
│ ├── ModioHttpParams.h
│ ├── ModioHttpParams.ipp
│ ├── ModioHttpRequest.h
│ ├── ModioHttpRequest.ipp
│ ├── ModioHttpService.h
│ └── ModioHttpService.ipp
│ ├── impl
│ ├── CMakeLists.txt
│ ├── SDKCore.ipp
│ ├── SDKMetrics.ipp
│ ├── SDKModManagement.ipp
│ ├── SDKModMetadata.ipp
│ ├── SDKMonetization.ipp
│ ├── SDKPostAsync.h
│ ├── SDKPreconditionChecks.h
│ ├── SDKUserData.ipp
│ └── detail
│ │ └── ModioObjectTrack.ipp
│ ├── timer
│ ├── CMakeLists.txt
│ ├── ModioTimer.h
│ ├── ModioTimerImplementationBase.h
│ ├── ModioTimerService.h
│ └── ModioTimerService.ipp
│ └── userdata
│ └── ModioUserDataService.h
└── platform
├── android
├── .gitignore
├── CMakeLists.txt
├── README.mdx
├── android
│ ├── AsioIPV6Emulation.h
│ ├── CMakeLists.txt
│ ├── ModioAndroid.h
│ ├── ModioAndroid.ipp
│ ├── ModioPlatformDefines.h
│ ├── ModioWeakSymbol.h
│ ├── android
│ │ ├── FileSharedState.h
│ │ ├── Guid.h
│ │ ├── HttpSharedState.h
│ │ ├── LibUringWrapper.h
│ │ ├── TimerCallback.h
│ │ ├── TimerSharedState.h
│ │ └── detail
│ │ │ ├── ModioUEPlatformEpilogue.h
│ │ │ ├── ModioUEPlatformPreamble.h
│ │ │ └── ops
│ │ │ ├── file
│ │ │ ├── DeleteFileOp.h
│ │ │ ├── DeleteFolderOp.h
│ │ │ ├── InitializeFileSystemOp.h
│ │ │ ├── ReadSomeFromFileBufferedOp.h
│ │ │ ├── ReadSomeFromFileOp.h
│ │ │ └── WriteSomeToFileOp.h
│ │ │ ├── http
│ │ │ ├── InitializeHttpOp.h
│ │ │ ├── ReadHttpResponseHeadersOp.h
│ │ │ ├── ReadSomeResponseBodyOp.h
│ │ │ ├── SSLConnectionReadSomeOp.h
│ │ │ ├── SSLConnectionWriteOp.h
│ │ │ ├── SSLConnectionWriteSomeOp.h
│ │ │ ├── SendHttpRequestOp.h
│ │ │ └── WaitForSSLHandshakeOp.h
│ │ │ └── timer
│ │ │ ├── InitializeTimerServiceOp.h
│ │ │ ├── ProcessTimersOp.h
│ │ │ └── WaitForTimerOp.h
│ ├── file
│ │ ├── FileObjectImplementation.h
│ │ ├── FileSystemImplementation.h
│ │ └── StaticDirectoriesImplementation.h
│ ├── http
│ │ ├── HttpImplementation.h
│ │ └── HttpRequestImplementation.h
│ ├── jni
│ │ ├── AndroidContextService.h
│ │ ├── AndroidContextService.ipp
│ │ ├── JavaClassWrapper.h
│ │ ├── JavaClassWrapper.ipp
│ │ ├── JavaClassWrapperModio.h
│ │ ├── JavaClassWrapperModio.ipp
│ │ ├── JavaHelpers.h
│ │ └── JavaHelpers.ipp
│ ├── logging
│ │ └── LoggerImplementation.h
│ ├── platform
│ │ └── PlatformUtilImplementation.h
│ └── timer
│ │ ├── TimerImplementation.h
│ │ └── TimerServiceImplementation.h
├── assets
│ └── modio.crt
├── doc
│ ├── cmake-integration.mdx
│ └── getting-started.mdx
├── java
│ └── com
│ │ └── modio
│ │ └── modiosdk
│ │ └── Modio.java
├── platform.cmake
└── ueplatform.json
├── interface
├── CMakeLists.txt
├── modio
│ └── detail
│ │ ├── cache
│ │ └── ICacheServiceImplementation.h
│ │ ├── file
│ │ ├── IFileObjectImplementation.h
│ │ └── IFileServiceImplementation.h
│ │ ├── http
│ │ ├── IHttpRequestImplementation.h
│ │ └── IHttpServiceImplementation.h
│ │ ├── timer
│ │ ├── ITimerImplementation.h
│ │ └── ITimerServiceImplementation.h
│ │ └── userdata
│ │ └── IUserDataServiceImplementation.h
└── platform.cmake
├── ios
├── CMakeLists.txt
├── README.mdx
├── cmake
│ └── ios.toolchain.cmake
├── doc
│ ├── cmake-integration.mdx
│ └── getting-started.mdx
├── examples
│ ├── modioSSO
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── AppViewController.h
│ │ ├── AppViewController.m
│ │ ├── CMakeLists.txt
│ │ ├── ModioSDKHelper.h
│ │ ├── ModioSDKHelper.mm
│ │ ├── README.adoc
│ │ ├── main.m
│ │ └── resources
│ │ │ ├── Info-iOS.plist
│ │ │ ├── MainMenu.storyboard
│ │ │ ├── icon.png
│ │ │ ├── icons.icns
│ │ │ └── modioSSO.entitlements
│ └── modioSwift
│ │ ├── CMakeLists.txt
│ │ ├── ContentView.swift
│ │ ├── ModioSDKHelper.h
│ │ ├── ModioSDKHelper.mm
│ │ ├── README.adoc
│ │ ├── modioSDK-BridgingHeader.h
│ │ ├── modioSDKApp.swift
│ │ └── resources
│ │ ├── Info-iOS.plist
│ │ ├── icon.png
│ │ └── icons.icns
├── ios
│ ├── AsioIPV6Emulation.h
│ ├── CMakeLists.txt
│ ├── ModioPlatformDefines.h
│ ├── ModioWeakSymbol.h
│ ├── file
│ │ ├── FileObjectImplementation.h
│ │ ├── FileSystemImplementation.h
│ │ └── StaticDirectoriesImplementation.h
│ ├── http
│ │ ├── HttpImplementation.h
│ │ └── HttpRequestImplementation.h
│ ├── ios
│ │ ├── FileSharedState.h
│ │ ├── HttpSharedState.h
│ │ ├── TimerCallback.h
│ │ ├── TimerSharedState.h
│ │ └── detail
│ │ │ ├── ModioUEPlatformEpilogue.h
│ │ │ ├── ModioUEPlatformPreamble.h
│ │ │ └── ops
│ │ │ ├── file
│ │ │ ├── DeleteFileOp.h
│ │ │ ├── DeleteFolderOp.h
│ │ │ ├── InitializeFileSystemOp.h
│ │ │ ├── ReadSomeFromFileBufferedOp.h
│ │ │ ├── ReadSomeFromFileOp.h
│ │ │ └── WriteSomeToFileOp.h
│ │ │ ├── http
│ │ │ ├── InitializeHttpOp.h
│ │ │ ├── ReadHttpResponseHeadersOp.h
│ │ │ ├── ReadSomeResponseBodyOp.h
│ │ │ ├── SendHttpRequestOp.h
│ │ │ └── WriteSomeToRequestOp.h
│ │ │ └── timer
│ │ │ ├── InitializeTimerServiceOp.h
│ │ │ ├── ProcessTimersOp.h
│ │ │ └── WaitForTimerOp.h
│ ├── logging
│ │ └── LoggerImplementation.h
│ ├── platform
│ │ └── PlatformUtilImplementation.h
│ └── timer
│ │ ├── TimerImplementation.h
│ │ └── TimerServiceImplementation.h
├── platform.cmake
└── ueplatform.json
├── linux
├── CMakeLists.txt
├── README.mdx
├── doc
│ ├── cmake-integration.mdx
│ └── getting-started.mdx
├── linux
│ ├── AsioIPV6Emulation.h
│ ├── CMakeLists.txt
│ ├── ModioPlatformDefines.h
│ ├── ModioWeakSymbol.h
│ ├── file
│ │ ├── FileObjectImplementation.h
│ │ ├── FileSystemImplementation.h
│ │ └── StaticDirectoriesImplementation.h
│ ├── http
│ │ ├── HttpImplementation.h
│ │ └── HttpRequestImplementation.h
│ ├── linux
│ │ ├── FileSharedState.h
│ │ ├── HttpSharedState.h
│ │ ├── LibUringWrapper.h
│ │ ├── TimerCallback.h
│ │ ├── TimerSharedState.h
│ │ └── detail
│ │ │ ├── ModioUEPlatformEpilogue.h
│ │ │ ├── ModioUEPlatformPreamble.h
│ │ │ └── ops
│ │ │ ├── file
│ │ │ ├── DeleteFileOp.h
│ │ │ ├── DeleteFolderOp.h
│ │ │ ├── InitializeFileSystemOp.h
│ │ │ ├── ReadSomeFromFileBufferedOp.h
│ │ │ ├── ReadSomeFromFileOp.h
│ │ │ └── WriteSomeToFileOp.h
│ │ │ ├── http
│ │ │ ├── InitializeHttpOp.h
│ │ │ ├── ReadHttpResponseHeadersOp.h
│ │ │ ├── ReadSomeResponseBodyOp.h
│ │ │ ├── SSLConnectionReadSomeOp.h
│ │ │ ├── SSLConnectionWriteOp.h
│ │ │ ├── SSLConnectionWriteSomeOp.h
│ │ │ ├── SendHttpRequestOp.h
│ │ │ └── WaitForSSLHandshakeOp.h
│ │ │ └── timer
│ │ │ ├── InitializeTimerServiceOp.h
│ │ │ ├── ProcessTimersOp.h
│ │ │ └── WaitForTimerOp.h
│ ├── logging
│ │ └── LoggerImplementation.h
│ ├── platform
│ │ └── PlatformUtilImplementation.h
│ └── timer
│ │ ├── TimerImplementation.h
│ │ └── TimerServiceImplementation.h
├── platform.cmake
└── ueplatform.json
├── macos
├── CMakeLists.txt
├── README.adoc
├── README.mdx
├── doc
│ ├── cmake-integration.mdx
│ └── getting-started.mdx
├── macos
│ ├── AsioIPV6Emulation.h
│ ├── CMakeLists.txt
│ ├── ModioPlatformDefines.h
│ ├── ModioWeakSymbol.h
│ ├── file
│ │ ├── FileObjectImplementation.h
│ │ ├── FileSystemImplementation.h
│ │ └── StaticDirectoriesImplementation.h
│ ├── http
│ │ ├── HttpImplementation.h
│ │ └── HttpRequestImplementation.h
│ ├── logging
│ │ └── LoggerImplementation.h
│ ├── macos
│ │ ├── FileSharedState.h
│ │ ├── HttpSharedState.h
│ │ ├── TimerCallback.h
│ │ ├── TimerSharedState.h
│ │ └── detail
│ │ │ ├── ModioUEPlatformEpilogue.h
│ │ │ ├── ModioUEPlatformPreamble.h
│ │ │ └── ops
│ │ │ ├── file
│ │ │ ├── DeleteFileOp.h
│ │ │ ├── DeleteFolderOp.h
│ │ │ ├── InitializeFileSystemOp.h
│ │ │ ├── ReadSomeFromFileBufferedOp.h
│ │ │ ├── ReadSomeFromFileOp.h
│ │ │ └── WriteSomeToFileOp.h
│ │ │ ├── http
│ │ │ ├── InitializeHttpOp.h
│ │ │ ├── ReadHttpResponseHeadersOp.h
│ │ │ ├── ReadSomeResponseBodyOp.h
│ │ │ ├── SendHttpRequestOp.h
│ │ │ └── WriteSomeToRequestOp.h
│ │ │ └── timer
│ │ │ ├── InitializeTimerServiceOp.h
│ │ │ ├── ProcessTimersOp.h
│ │ │ └── WaitForTimerOp.h
│ ├── platform
│ │ └── PlatformUtilImplementation.h
│ └── timer
│ │ ├── TimerImplementation.h
│ │ └── TimerServiceImplementation.h
├── platform.cmake
└── ueplatform.json
├── ms-common
├── CMakeLists.txt
└── include
│ ├── ModioWeakSymbol.h
│ └── common
│ ├── FileSharedState.h
│ ├── HttpCallback.h
│ ├── HttpSharedState.h
│ ├── HttpSharedState.ipp
│ ├── UTF16Support.h
│ ├── detail
│ └── ops
│ │ ├── file
│ │ ├── DeleteFileOp.h
│ │ ├── DeleteFolderOp.h
│ │ ├── GetFolderSize.h
│ │ ├── InitializeFileSystemOp.h
│ │ ├── ReadSomeFromFileBufferedOp.h
│ │ ├── ReadSomeFromFileOp.h
│ │ ├── StreamReadOp.h
│ │ ├── StreamWriteOp.h
│ │ └── WriteSomeToFileOp.h
│ │ └── http
│ │ ├── InitializeHttpOp.h
│ │ ├── ReadHttpResponseHeadersOp.h
│ │ ├── ReadSomeResponseBodyOp.h
│ │ ├── SendHttpRequestOp.h
│ │ └── WriteSomeToRequestOp.h
│ ├── file
│ ├── FileObjectImplementation.h
│ ├── FileSystemImplementation.h
│ └── StaticDirectoriesImplementation.h
│ ├── http
│ ├── HttpImplementation.h
│ ├── HttpRequestImplementation.h
│ └── HttpRequestImplementation.ipp
│ └── logging
│ └── LoggerImplementation.h
└── win32
├── CMakeLists.txt
├── README.mdx
├── doc
├── cmake-integration.mdx
└── getting-started.mdx
├── platform.cmake
├── ueplatform.json
└── win32
├── CMakeLists.txt
├── ModioPlatformDefines.h
├── file
├── FileObjectImplementation.h
├── FileSystemImplementation.h
└── StaticDirectoriesImplementation.h
├── http
└── HttpImplementation.h
├── logging
└── LoggerImplementation.h
├── platform
└── PlatformUtilImplementation.h
├── timer
├── TimerImplementation.h
└── TimerServiceImplementation.h
└── win32
├── HttpSharedState.h
├── TimerCallback.h
├── TimerSharedState.h
└── detail
├── ModioUEPlatformEpilogue.h
├── ModioUEPlatformPreamble.h
└── ops
├── file
└── WriteSomeToFileOp.h
├── http
└── InitializeHttpOp.h
└── timer
├── InitializeTimerServiceOp.h
├── ProcessTimersOp.h
└── WaitForTimerOp.h
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*.{c++,cc,cpp,cppm,cxx,h,h++,hh,hpp,hxx,inl,ipp,ixx,tlh,tli}]
2 | cpp_generate_documentation_comments = doxygen_triple_slash
3 |
4 |
5 | [*.{yml,yaml}]
6 | indent_style = space
7 | indent_size = 2
8 |
9 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | This issue tracker is for the use of developers integrating the mod.io SDK and Plugins into their games. If you are a player wanting support for a game that uses mod.io, please contact the game developer directly.
2 |
3 | To submit a private issue report if you wish to attach confidential data, please email the following information to support@mod.io instead.
4 |
5 |
6 | ### Bug Report
7 |
8 | Please provide at least one of the following:
9 | * [ ] Detailed steps to reproduce the issue
10 | * [ ] SDK/Plugin logs
11 | * [ ] A self-contained project that reproduces the issue
12 |
13 | #### Description
14 |
15 | [Description of the bug]
16 |
17 | #### Steps to Reproduce
18 |
19 | 1. [First Step]
20 | 2. [Second Step]
21 | 3. [and so on...]
22 |
23 | **Expected behavior:** [What you expected to happen]
24 |
25 | **Actual behavior:** [What actually happened]
26 |
27 | #### Environment
28 |
29 | * Which version of the plugin experiences the issue? If unsure, the .modio file in the root of the SDK contains the version number.
30 | * Which OS does the issue occur in? Which version of the OS?
31 | * Which compiler/toolchain does the issue occur with?
32 |
33 |
34 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Visual studio files
2 | .vs/
3 | CMakeSettings.json
4 | *.user
5 |
6 | # Output directory
7 | out/
8 | build/
9 | installed-sdk/
10 |
11 | # Generated documentation shouldn't be submitted
12 | doc/**/*.pdf
13 | doc/scripts/Gemfile.lock
14 | .ccls-cache/
15 | .vscode
16 | .DS_Store
17 | xcuserdata
18 |
19 | # Android Ignores
20 |
21 | # Gradle files
22 | .gradle/
23 | build/
24 |
25 | # Local configuration file (sdk path, etc)
26 | local.properties
27 |
28 | # Log/OS Files
29 | *.log
30 |
31 | # Android Studio generated files and folders
32 | captures/
33 | .externalNativeBuild/
34 | .cxx/
35 | *.apk
36 | output.json
37 |
38 | # IntelliJ
39 | *.iml
40 | .idea/
41 | misc.xml
42 | deploymentTargetDropDown.xml
43 | render.experimental.xml
44 |
45 | # Keystore files
46 | *.jks
47 | *.keystore
48 |
49 | # Google Services (e.g. APIs or Firebase)
50 | google-services.json
51 |
52 | # Android Profiling
53 | *.hprof
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "ext/asio"]
2 | path = ext/asio
3 | url = https://github.com/modio/modio-integration-asio
4 | branch = master
5 | [submodule "ext/optional"]
6 | path = ext/optional
7 | url = https://github.com/modio/modio-integration-optional
8 | [submodule "ext/filesystem"]
9 | path = ext/filesystem
10 | url = https://github.com/modio/modio-integration-filesystem
11 | branch = ghc_os_custom
12 | [submodule "ext/fmt"]
13 | path = ext/fmt
14 | url = https://github.com/modio/modio-integration-fmt.git
15 | [submodule "ext/utfcpp"]
16 | path = ext/utfcpp
17 | url = https://github.com/nemtrif/utfcpp
18 | [submodule "ext/httpparser"]
19 | path = ext/httpparser
20 | url = https://github.com/nekipelov/httpparser.git
21 | [submodule "ext/json"]
22 | path = ext/json
23 | url = https://github.com/nlohmann/json.git
24 | [submodule "ext/mbedtls"]
25 | path = ext/mbedtls
26 | url = https://github.com/ARMmbed/mbedtls.git
27 | [submodule "ext/expected"]
28 | path = ext/expected
29 | url = https://github.com/TartanLlama/expected.git
30 | [submodule "ext/function2"]
31 | path = ext/function2
32 | url = https://github.com/Naios/function2.git
33 | [submodule "ext/concurrentqueue"]
34 | path = ext/concurrentqueue
35 | url = https://github.com/cameron314/concurrentqueue.git
36 |
--------------------------------------------------------------------------------
/.modio:
--------------------------------------------------------------------------------
1 | 3232d
--------------------------------------------------------------------------------
/Modio.natvis:
--------------------------------------------------------------------------------
1 | ?xml version="1.0" encoding="utf-8"?>
2 |
3 |
4 |
5 | {{ Value = {m_value}}}
6 | {{Not Set}}
7 |
8 |
9 |
10 | {{ID = {Value}}}
11 |
12 |
13 |
14 | {{{_Myval} - {message()}}}
15 |
16 |
17 |
--------------------------------------------------------------------------------
/cmake/GetGitRevisionDescription.cmake.in:
--------------------------------------------------------------------------------
1 | #
2 | # Internal file for GetGitRevisionDescription.cmake
3 | #
4 | # Requires CMake 2.6 or newer (uses the 'function' command)
5 | #
6 | # Original Author:
7 | # 2009-2010 Ryan Pavlik
8 | # http://academic.cleardefinition.com
9 | # Iowa State University HCI Graduate Program/VRAC
10 | #
11 | # Copyright Iowa State University 2009-2010.
12 | # Distributed under the Boost Software License, Version 1.0.
13 | # (See accompanying file LICENSE_1_0.txt or copy at
14 | # http://www.boost.org/LICENSE_1_0.txt)
15 |
16 | set(HEAD_HASH)
17 |
18 | file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
19 |
20 | string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
21 | if(HEAD_CONTENTS MATCHES "ref")
22 | # named branch
23 | string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
24 | if(EXISTS "@GIT_DIR@/${HEAD_REF}")
25 | configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
26 | else()
27 | configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
28 | file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
29 | if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
30 | set(HEAD_HASH "${CMAKE_MATCH_1}")
31 | endif()
32 | endif()
33 | else()
34 | # detached HEAD
35 | configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
36 | endif()
37 |
38 | if(NOT HEAD_HASH)
39 | file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
40 | string(STRIP "${HEAD_HASH}" HEAD_HASH)
41 | endif()
42 |
--------------------------------------------------------------------------------
/cmake/ModioGeneratedVariables.h.in:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | // ModioGeneratedVariables.h automatically generated by CMake - don't edit it manually!
12 |
13 | #pragma once
14 |
15 | #cmakedefine MODIO_COMMIT_HASH "@MODIO_COMMIT_HASH@"
16 |
--------------------------------------------------------------------------------
/cmake/initialise-platform.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2021 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 | #
10 |
11 | include_guard(GLOBAL)
12 | include(platform-defines)
13 |
14 | macro(list_subdirs result curdir)
15 | FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
16 | SET(dirlist "")
17 | FOREACH(child ${children})
18 | IF(IS_DIRECTORY ${curdir}/${child})
19 | SET(dirlist ${dirlist} ${child})
20 | ENDIF()
21 | ENDFOREACH()
22 | SET(${result} ${dirlist})
23 | endmacro()
24 |
25 | message("Fetching platform dependencies...")
26 |
27 | #iterate through all the currently installed platform directories
28 | list_subdirs(modio_platform_dirs ${MODIO_ROOT_DIR}/platform )
29 |
30 | #add_subdirectory will only populate targets for the currently valid MODIO_PLATFORM
31 | foreach (platform_dir ${modio_platform_dirs})
32 | set(full_platform_dir ${MODIO_ROOT_DIR}/platform/${platform_dir})
33 | if (EXISTS ${full_platform_dir}/platform.cmake)
34 | include(${full_platform_dir}/platform.cmake)
35 | endif()
36 | endforeach()
37 |
38 |
39 | add_generated_defines_to_platform()
40 |
--------------------------------------------------------------------------------
/cmake/modio-packaging.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2021 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 | #
10 |
11 | macro(create_target_installing_component Component )
12 | add_custom_target(component_${Component}
13 | COMMAND ${CMAKE_COMMAND} --install ${CMAKE_CURRENT_BINARY_DIR} --component ${Component}
14 | DEPENDS ${MODIO_TARGET_NAME}
15 | # WORKING_DIRECTORY directory of the modio target
16 | )
17 | set_target_properties(component_${Component} PROPERTIES FOLDER "Installation/Packaging")
18 | endmacro()
19 |
20 |
21 | create_target_installing_component(header_only)
22 |
23 |
--------------------------------------------------------------------------------
/cmake/platform-defines.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2021 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 | #
10 |
11 | include(GetGitRevisionDescription)
12 | include(modio-version)
13 |
14 | function (add_generated_defines_to_platform)
15 | message("Initializing platform")
16 |
17 | set(MODIO_COMMIT_HASH "NOT_SET")
18 | #get_git_head_revision(MODIO_REFSPEC MODIO_COMMIT_HASH)
19 |
20 | #if (NOT MODIO_REFSPEC)
21 | #set(MODIO_REFSPEC UNKNOWN)
22 | #endif()
23 | #if (NOT MODIO_COMMIT_HASH)
24 | #set(MODIO_COMMIT_HASH UNKNOWN)
25 | #endif()
26 |
27 | GetVersionInfo("main" MAIN_COMMIT_COUNT CURRENT_BRANCH_PREFIX CURRENT_BRANCH_COMMIT_COUNT FALSE)
28 |
29 | set(MODIO_COMMIT_HASH "${MAIN_COMMIT_COUNT}${CURRENT_BRANCH_PREFIX}${CURRENT_BRANCH_COMMIT_COUNT}")
30 |
31 | message(STATUS "Setting revision to ${MODIO_COMMIT_HASH}")
32 |
33 | message(STATUS "Generating global definitions in ${CMAKE_BINARY_DIR}/generated/ModioGeneratedVariables.h")
34 |
35 | set(MODIO_TARGET_PLATFORM_ID ${MODIO_PLATFORM})
36 | configure_file(cmake/ModioGeneratedVariables.h.in ${CMAKE_BINARY_DIR}/generated/ModioGeneratedVariables.h)
37 | target_compile_definitions(platform INTERFACE MODIO_TARGET_PLATFORM_ID="${MODIO_TARGET_PLATFORM_ID}" MODIO_COMMIT_HASH="${MODIO_COMMIT_HASH}")
38 |
39 | endfunction()
40 |
--------------------------------------------------------------------------------
/doc/.nojekyll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/.nojekyll
--------------------------------------------------------------------------------
/doc/assets/fonts/EuclidCircularB-Bold-WebS-85b3e0686fa738474f5c5cbae48da808.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/assets/fonts/EuclidCircularB-Bold-WebS-85b3e0686fa738474f5c5cbae48da808.woff
--------------------------------------------------------------------------------
/doc/assets/fonts/EuclidCircularB-Bold-WebS-f996f0f3c9d7e69a3a8e9d9e5f3c8e5c.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/assets/fonts/EuclidCircularB-Bold-WebS-f996f0f3c9d7e69a3a8e9d9e5f3c8e5c.woff2
--------------------------------------------------------------------------------
/doc/assets/fonts/EuclidCircularB-Regular-WebS-a2e11c861d5a9f3541d340c87e5403ea.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/assets/fonts/EuclidCircularB-Regular-WebS-a2e11c861d5a9f3541d340c87e5403ea.woff2
--------------------------------------------------------------------------------
/doc/assets/fonts/EuclidCircularB-Regular-WebS-bf8d727ab20d44bfe4c19326a7f7656e.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/assets/fonts/EuclidCircularB-Regular-WebS-bf8d727ab20d44bfe4c19326a7f7656e.woff
--------------------------------------------------------------------------------
/doc/assets/fonts/mod_Bold-6a828d6c1ee525b8ccdaab51a5555dad.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/assets/fonts/mod_Bold-6a828d6c1ee525b8ccdaab51a5555dad.woff
--------------------------------------------------------------------------------
/doc/assets/fonts/mod_Bold-ef576a3617e7d78bf072ca28fac9ec27.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/assets/fonts/mod_Bold-ef576a3617e7d78bf072ca28fac9ec27.woff2
--------------------------------------------------------------------------------
/doc/assets/fonts/mod_Regular-64d7bd55cab96b676cc4ab2cf89c717e.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/assets/fonts/mod_Regular-64d7bd55cab96b676cc4ab2cf89c717e.woff2
--------------------------------------------------------------------------------
/doc/assets/fonts/mod_Regular-db0da0c22c8114761de7dede60f78da4.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/assets/fonts/mod_Regular-db0da0c22c8114761de7dede60f78da4.woff
--------------------------------------------------------------------------------
/doc/assets/js/05ae0fb1.9232a171.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[1697],{6623:(e,s,r)=>{r.r(s),r.d(s,{default:()=>i});var c=r(8774),o=r(955),t=r(4848);function i(){return(0,t.jsx)(o.A,{children:(0,t.jsx)("div",{className:"container margin-vert--xl",children:(0,t.jsx)("div",{className:"row",children:(0,t.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,t.jsx)("p",{className:"hero__title",children:"Server error"}),(0,t.jsxs)("p",{children:["You may try to refresh the page or",(0,t.jsx)(c.A,{to:"https://mod.io/contact",children:"contact us"}),"if the problem persists."]})]})})})})}}}]);
--------------------------------------------------------------------------------
/doc/assets/js/0879cf16.0fc9b352.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[673],{941:(e,o,s)=>{s.d(o,{A:()=>n});var r=s(955),a=s(4848);function n(e){let{children:o}=e;return(0,a.jsx)(r.A,{children:(0,a.jsx)("div",{className:"container margin-vert--xl",children:(0,a.jsx)("div",{className:"row",children:(0,a.jsx)("div",{className:"col col--6 col--offset-3",children:o})})})})}},968:(e,o,s)=>{s.r(o),s.d(o,{default:()=>t});var r=s(941),a=s(8774),n=s(4848);function t(){return(0,n.jsxs)(r.A,{children:[(0,n.jsx)("p",{className:"tw-text-xl tw-font-bold",children:"Unauthorized Access - PlayStation 5 Documentation"}),(0,n.jsx)("p",{children:"For access to our PlayStation Documentation, we need approval from Sony that you are an authorized PlayStation developer."}),(0,n.jsxs)("p",{children:["Instructions for verifying your access can be found in our",(0,n.jsx)(a.A,{to:"/platforms/playstation/#sdk-access",children:"Console SDK"})," documentation."]}),(0,n.jsxs)("p",{children:["If you are already authorized and believe you are seeing this in error, please reach out to your mod.io account manager or",(0,n.jsx)(a.A,{to:"mailto:developers@mod.io",children:"developers@mod.io"}),"to resolve this issue."]})]})}}}]);
--------------------------------------------------------------------------------
/doc/assets/js/0ce884cc.5bd0a887.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[881],{941:(e,o,n)=>{n.d(o,{A:()=>i});var r=n(955),s=n(4848);function i(e){let{children:o}=e;return(0,s.jsx)(r.A,{children:(0,s.jsx)("div",{className:"container margin-vert--xl",children:(0,s.jsx)("div",{className:"row",children:(0,s.jsx)("div",{className:"col col--6 col--offset-3",children:o})})})})}},3626:(e,o,n)=>{n.r(o),n.d(o,{default:()=>c});var r=n(941),s=n(8774),i=n(4848);function c(){return(0,i.jsxs)(r.A,{children:[(0,i.jsx)("p",{className:"tw-text-xl tw-font-bold",children:"Unauthorized Access - Nintendo Switch Documentation"}),(0,i.jsx)("p",{children:"For access to our Nintendo Switch Documentation, we need approval from Nintendo that you are an authorized Nintendo Switch developer."}),(0,i.jsxs)("p",{children:["Instructions for verifying your access can be found in our",(0,i.jsx)(s.A,{to:"/platforms/switch/#sdk-access",children:"Console SDK"})," documentation."]}),(0,i.jsxs)("p",{children:["If you are already authorized and believe you are seeing this in error, please reach out to your mod.io account manager or",(0,i.jsx)(s.A,{href:"mailto:developers@mod.io",children:"developers@mod.io"}),"to resolve this issue."]})]})}}}]);
--------------------------------------------------------------------------------
/doc/assets/js/1303.b2925fda.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /*!
2 | Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable
3 | Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com)
4 | Licensed under The MIT License (http://opensource.org/licenses/MIT)
5 | */
6 |
7 | /*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */
8 |
9 | /*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */
10 |
--------------------------------------------------------------------------------
/doc/assets/js/17896441.11c71f9b.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8401],{8195:(e,t,r)=>{r.d(t,{A:()=>c});var s=r(6446),d=r(9365),l=r(6540),o=r(4848);var n=r(1470);const a=e=>{let{children:t,colWidths:r={},stripes:s="odd",border:d=0}=e;const n=(0,l.useRef)(null),a=`${d}px`;let c="";return c="odd"===s?"odd:tw-bg-table-stripes even:tw-bg-transparent":"even:tw-bg-table-stripes odd:tw-bg-transparent",(0,l.useEffect)((()=>{const e=n.current.querySelector("thead"),t=n.current.querySelectorAll("tr"),s=n.current.querySelectorAll("th, td");e.style.visibility="hidden",s.forEach(((e,t)=>{e.style.width=r[t]??"auto",e.style.borderWidth=a,e.style.overflowWrap="anywhere"})),t.forEach(((e,t)=>{0!==t&&(e.className=c),e.style.borderWidth=a}))}),[]),(0,o.jsx)("div",{ref:n,children:t})},c={...s.A,TabItem:function(e){return(0,o.jsx)(o.Fragment,{children:(0,o.jsx)(d.A,{className:"tw-rounded-md",...e})})},Tabs:function(e){return(0,o.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,o.jsx)(n.A,{...e})})},RefTable:a}}}]);
--------------------------------------------------------------------------------
/doc/assets/js/1a4e3797.3546f7d6.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /*! algoliasearch-lite.umd.js | 4.24.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */
2 |
--------------------------------------------------------------------------------
/doc/assets/js/2237.e3f2ebcc.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[2237],{3363:(e,t,o)=>{o.d(t,{A:()=>a});o(6540);var i=o(8215),n=o(1312),s=o(1107),r=o(4848);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,i.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(n.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(n.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(n.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},2237:(e,t,o)=>{o.r(t),o.d(t,{default:()=>d});o(6540);var i=o(1312),n=o(9024),s=o(955),r=o(3363),a=o(4848);function d(){const e=(0,i.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.be,{title:e}),(0,a.jsx)(s.A,{children:(0,a.jsx)(r.A,{})})]})}}}]);
--------------------------------------------------------------------------------
/doc/assets/js/416.0a5ddd77.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[416],{416:(s,o,c)=>{c.r(o)}}]);
--------------------------------------------------------------------------------
/doc/assets/js/4d3f9fe4.4612858b.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[7742],{941:(e,o,r)=>{r.d(o,{A:()=>c});var s=r(955),n=r(4848);function c(e){let{children:o}=e;return(0,n.jsx)(s.A,{children:(0,n.jsx)("div",{className:"container margin-vert--xl",children:(0,n.jsx)("div",{className:"row",children:(0,n.jsx)("div",{className:"col col--6 col--offset-3",children:o})})})})}},161:(e,o,r)=>{r.r(o),r.d(o,{default:()=>i});var s=r(941),n=r(8774),c=r(4848);function i(){return(0,c.jsxs)(s.A,{children:[(0,c.jsx)("p",{className:"tw-text-xl tw-font-bold",children:"Unauthorized Access - Xbox Documentation"}),(0,c.jsx)("p",{children:"For access to our Xbox Documentation, we need approval from Microsoft that you are an authorized XBox developer."}),(0,c.jsxs)("p",{children:["Instructions for verifying your access can be found in our",(0,c.jsx)(n.A,{to:"/platforms/gdk/#sdk-access",children:"Console SDK"})," documentation."]}),(0,c.jsxs)("p",{children:["If you are already authorized and believe you are seeing this in error, please reach out to your mod.io account manager or",(0,c.jsx)(n.A,{href:"mailto:developers@mod.io",children:"developers@mod.io"}),"to resolve this issue."]})]})}}}]);
--------------------------------------------------------------------------------
/doc/assets/js/5e95c892.9bed6022.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[9647],{7121:(e,s,r)=>{r.r(s),r.d(s,{default:()=>t});r(6540);var c=r(8215),o=r(9024),d=r(7559),u=r(2831),a=r(955),n=r(4848);function t(e){return(0,n.jsx)(o.e3,{className:(0,c.A)(d.G.wrapper.docsPages),children:(0,n.jsx)(a.A,{children:(0,u.v)(e.route.routes)})})}}}]);
--------------------------------------------------------------------------------
/doc/assets/js/7106.16bfe2ec.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /*!
2 | * Wait for document loaded before starting the execution
3 | */
4 |
5 | /*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE */
6 |
7 | /*! Check if previously processed */
8 |
9 | /*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
10 |
--------------------------------------------------------------------------------
/doc/assets/js/7b283257.6c95601c.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[5753],{941:(e,o,s)=>{s.d(o,{A:()=>n});var r=s(955),a=s(4848);function n(e){let{children:o}=e;return(0,a.jsx)(r.A,{children:(0,a.jsx)("div",{className:"container margin-vert--xl",children:(0,a.jsx)("div",{className:"row",children:(0,a.jsx)("div",{className:"col col--6 col--offset-3",children:o})})})})}},3697:(e,o,s)=>{s.r(o),s.d(o,{default:()=>t});var r=s(941),a=s(8774),n=s(4848);function t(){return(0,n.jsxs)(r.A,{children:[(0,n.jsx)("p",{className:"tw-text-xl tw-font-bold",children:"Unauthorized Access - PlayStation\xae4 Documentation"}),(0,n.jsx)("p",{children:"For access to our PlayStation Documentation, we need approval from Sony that you are an authorized PlayStation developer."}),(0,n.jsxs)("p",{children:["Instructions for verifying your access can be found in our",(0,n.jsx)(a.A,{to:"/platforms/playstation/#sdk-access",children:"Console SDK"})," documentation."]}),(0,n.jsxs)("p",{children:["If you are already authorized and believe you are seeing this in error, please reach out to your mod.io account manager or",(0,n.jsx)(a.A,{to:"mailto:developers@mod.io",children:"developers@mod.io"}),"to resolve this issue."]})]})}}}]);
--------------------------------------------------------------------------------
/doc/assets/js/8158.9593b541.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8158],{8158:(o,c,s)=>{s.r(c),s.d(c,{DocSearchModal:()=>a.a1});var a=s(3219)}}]);
--------------------------------------------------------------------------------
/doc/assets/js/8913.78590cf1.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8913],{8913:(s,o,c)=>{c.r(o)}}]);
--------------------------------------------------------------------------------
/doc/assets/js/a7456010.17260dd7.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[1235],{8552:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]);
--------------------------------------------------------------------------------
/doc/assets/js/a7bd4aaa.3ca9d01e.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[7098],{4532:(n,e,s)=>{s.r(e),s.d(e,{default:()=>l});s(6540);var o=s(9024),r=s(2967),t=s(2252),i=s(2831),c=s(1463),d=s(4848);function u(n){const{version:e}=n;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(c.A,{version:e.version,tag:(0,r.tU)(e.pluginId,e.version)}),(0,d.jsx)(o.be,{children:e.noIndex&&(0,d.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function a(n){const{version:e,route:s}=n;return(0,d.jsx)(o.e3,{className:e.className,children:(0,d.jsx)(t.n,{version:e,children:(0,i.v)(s.routes)})})}function l(n){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(u,{...n}),(0,d.jsx)(a,{...n})]})}}}]);
--------------------------------------------------------------------------------
/doc/assets/js/aba21aa0.9c3e38ee.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[5742],{7093:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]);
--------------------------------------------------------------------------------
/doc/assets/js/c141421f.a7090503.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[957],{936:e=>{e.exports=JSON.parse('{"name":"docusaurus-theme-search-algolia","id":"default"}')}}]);
--------------------------------------------------------------------------------
/doc/chapters/diagrams/general-overview/modio_sdk_flow-init.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | start
3 | :Videogame Starts;
4 | :User Generated Content Interface;
5 | fork
6 | repeat :RunPendingHandlers;
7 | repeat while (SDK did "Shutdown") is (no)
8 | fork again
9 | -[dashed]->
10 | #SkyBlue:Initialize**Async**;
11 | -[dashed]->
12 | #SkyBlue:ListAllMods**Async**;
13 | -[dashed]->
14 | #SkyBlue:Shutdown**Async**;
15 | end merge
16 | end
17 | @enduml
18 |
--------------------------------------------------------------------------------
/doc/fonts/EuclidCircularB-Bold-WebS.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/fonts/EuclidCircularB-Bold-WebS.woff
--------------------------------------------------------------------------------
/doc/fonts/EuclidCircularB-Bold-WebS.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/fonts/EuclidCircularB-Bold-WebS.woff2
--------------------------------------------------------------------------------
/doc/fonts/EuclidCircularB-Regular-WebS.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/fonts/EuclidCircularB-Regular-WebS.woff
--------------------------------------------------------------------------------
/doc/fonts/EuclidCircularB-Regular-WebS.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/fonts/EuclidCircularB-Regular-WebS.woff2
--------------------------------------------------------------------------------
/doc/fonts/mod_Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/fonts/mod_Bold.woff
--------------------------------------------------------------------------------
/doc/fonts/mod_Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/fonts/mod_Bold.woff2
--------------------------------------------------------------------------------
/doc/fonts/mod_Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/fonts/mod_Regular.woff
--------------------------------------------------------------------------------
/doc/fonts/mod_Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/fonts/mod_Regular.woff2
--------------------------------------------------------------------------------
/doc/img/chevron-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/doc/img/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modio/modio-sdk/eacc18dc4c1d8ee2404da4373f1ecdd4521a9b52/doc/img/favicon.ico
--------------------------------------------------------------------------------
/doc/js/rest_api_nav.js:
--------------------------------------------------------------------------------
1 | "/"===location.pathname&&location.hash.startsWith("#")&&(location.href=`${location.origin}/restapiref/${location.hash}`);
--------------------------------------------------------------------------------
/examples/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2020-2022 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 |
10 | set (CMAKE_CXX_STANDARD 17)
11 |
12 |
13 | function(add_example FileName)
14 | add_executable(modio_${FileName} ${CMAKE_CURRENT_LIST_DIR}/${FileName}.cpp)
15 | install(
16 | TARGETS modio_${FileName} RUNTIME
17 | DESTINATION ${CMAKE_INSTALL_PREFIX}/examples
18 | COMPONENT examples
19 | )
20 | target_link_libraries(modio_${FileName} ${MODIO_TARGET_NAME}Static)
21 | set_target_properties(modio_${FileName} PROPERTIES FOLDER "examples")
22 | target_include_directories(modio_${FileName} PRIVATE "${CMAKE_SOURCE_DIR}/ext/inja/third_party/include")
23 |
24 | endfunction()
25 |
26 |
27 |
28 | if (MODIO_BUILD_EXAMPLES)
29 | add_example(01_Initialization)
30 | add_example(02_ModQueries)
31 | add_example(03_Authentication)
32 | add_example(04_Threading)
33 | add_example(05_SubscriptionManagement)
34 | add_example(06_ForceUninstall)
35 | add_example(07_ReportMod)
36 | add_example(08_SubmitMod)
37 | add_example(09_MonetizationWalletManagement)
38 | add_example(10_MonetizationPurchase)
39 | add_example(11_TempModSets)
40 | add_example(12_RefreshEntitlements)
41 | add_example(13_MetricsSession)
42 | endif()
43 |
44 | if (MODIO_BUILD_ADVANCED_EXAMPLES)
45 | add_subdirectory(advanced)
46 | endif()
47 |
48 |
--------------------------------------------------------------------------------
/examples/advanced/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_subdirectory(01_SteamAuthAndEntitlements)
2 |
--------------------------------------------------------------------------------
/ext/asio.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2021 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 |
10 | add_library(asio INTERFACE)
11 |
12 | #note the trailing slash
13 | #install(FILES "${CMAKE_CURRENT_LIST_DIR}/asio/asio/LICENSE_1_0.txt"
14 | # DESTINATION "licenses/asio/")
15 |
16 | target_include_directories(asio INTERFACE ${CMAKE_CURRENT_LIST_DIR}/asio/asio/include)
17 | target_compile_definitions(asio INTERFACE
18 | -DASIO_STANDALONE
19 | -DASIO_HAS_STD_ADDRESSOF
20 | -DASIO_HAS_STD_ARRAY
21 | -DASIO_HAS_CSTDINT
22 | -DASIO_HAS_STD_SHARED_PTR
23 | -DASIO_HAS_STD_TYPE_TRAITS
24 | -DASIO_HAS_VARIADIC_TEMPLATES
25 | -DASIO_HAS_STD_FUNCTION
26 | -DASIO_HAS_STD_CHRONO
27 | -DASIO_HAS_MOVE
28 | -DASIO_NO_DEFAULT_LINKED_LIBS
29 | -DASIO_DISABLE_IOCP
30 | -DASIO_NO_DEPRECATED
31 | -DBOOST_ALL_NO_LIB
32 | )
33 |
--------------------------------------------------------------------------------
/ext/httpparser.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2021 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 |
10 | add_library(httpparser INTERFACE)
11 | target_include_directories(httpparser INTERFACE ${CMAKE_CURRENT_LIST_DIR}/httpparser/src)
12 |
--------------------------------------------------------------------------------
/ext/json.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2021 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 |
10 | set(JSON_BuildTests OFF CACHE BOOL "" FORCE)
11 | set(JSON_MultipleHeaders OFF CACHE BOOL "" FORCE)
12 | add_subdirectory(json EXCLUDE_FROM_ALL)
13 |
14 | set(nlohmann_json_DIR "${nlohmann_json_BINARY_DIR}" CACHE INTERNAL "")
15 | #install(FILES "${CMAKE_CURRENT_LIST_DIR}/json/LICENSE.MIT"
16 | # DESTINATION "licenses/json/")
17 |
--------------------------------------------------------------------------------
/modio/modio/cache/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2021 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 |
10 | include(split-compilation)
11 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/ModioCacheService.ipp)
12 |
--------------------------------------------------------------------------------
/modio/modio/compression/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2021 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 |
10 | include(split-compilation)
11 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/ModioCompressionService.ipp)
12 |
13 |
--------------------------------------------------------------------------------
/modio/modio/core/ModioCoreTypes.ipp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021-2025 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #ifdef MODIO_SEPARATE_COMPILATION
12 | #include "modio/core/ModioCoreTypes.h"
13 | #endif
14 |
15 | #include "platform/PlatformUtilImplementation.h"
16 |
--------------------------------------------------------------------------------
/modio/modio/core/ModioInitializeOptions.ipp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #ifdef MODIO_SEPARATE_COMPILATION
12 | #include "modio/core/ModioInitializeOptions.h"
13 | #endif
14 |
15 | namespace Modio
16 | {
17 | InitializeOptions::InitializeOptions() {}
18 |
19 | InitializeOptions::InitializeOptions(Modio::GameID GameID, Modio::ApiKey APIKey, Modio::Environment GameEnvironment,
20 | Modio::Portal PortalInUse, Modio::UserHandleType LocalSessionIdentifier)
21 | : GameID(GameID),
22 | APIKey(APIKey),
23 | User(LocalSessionIdentifier),
24 | PortalInUse(PortalInUse),
25 | GameEnvironment(GameEnvironment)
26 | {}
27 | } // namespace Modio
28 |
--------------------------------------------------------------------------------
/modio/modio/core/ModioLogBuffer.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 | #include
13 |
14 | /// @brief Internal buffer of the most recent log messages
15 | class LogBuffer
16 | {
17 | std::deque elements;
18 |
19 | public:
20 | void Insert(std::string Item)
21 | {
22 | elements.push_back(Item);
23 | while (elements.size() > 10)
24 | {
25 | elements.pop_front();
26 | }
27 | }
28 | void Clear()
29 | {
30 | elements.clear();
31 | }
32 |
33 | auto begin() const
34 | {
35 | return elements.begin();
36 | }
37 |
38 | auto end() const
39 | {
40 | return elements.end();
41 | }
42 | };
--------------------------------------------------------------------------------
/modio/modio/core/ModioModDependency.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
2 |
--------------------------------------------------------------------------------
/modio/modio/core/ModioSplitCompilation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021-2022 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 |
13 | #ifdef MODIO_SEPARATE_COMPILATION
14 | #define MODIO_IMPL
15 | #else
16 | #define MODIO_IMPL inline
17 | #endif
--------------------------------------------------------------------------------
/modio/modio/core/entities/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2021 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 |
10 | include(split-compilation)
11 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/ModioEntitlementConsumptionStatusList.ipp)
12 |
13 |
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioEntitlementConsumptionStatus.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioEntitlementConsumptionStatusList.ipp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #ifdef MODIO_SEPARATE_COMPILATION
12 | #include "modio/core/entities/ModioEntitlementConsumptionStatusList.h"
13 | #endif
14 |
15 | #include "modio/core/ModioLogger.h"
16 | #include "modio/detail/ModioJsonHelpers.h"
17 |
18 | namespace Modio
19 | {
20 |
21 | Modio::Optional EntitlementConsumptionStatusList::
22 | EntitlementsThatRequireRetry() const
23 | {
24 | if (InternalList.empty())
25 | {
26 | return {};
27 | }
28 |
29 | EntitlementConsumptionStatusList RetryElements;
30 | for (EntitlementConsumptionStatus Entitlement : InternalList)
31 | {
32 | if (Entitlement.EntitlementRequiresRetry() == true)
33 | {
34 | Modio::Detail::Logger().Log(Modio::LogLevel::Warning, Modio::LogCategory::Http,
35 | "Entitlement transaction needs retry with SKU: {} & TransactionID: {}",
36 | Entitlement.SkuId, Entitlement.TransactionId);
37 | RetryElements.Append(Entitlement);
38 | }
39 | }
40 |
41 | return RetryElements;
42 | }
43 |
44 | } // namespace Modio
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioFileMetadata.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioGameCommunityOptions.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioGameInfo.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioGameInfoList.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2024 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 | #include "modio/detail/ModioDefines.h"
13 |
14 | #include "modio/core/entities/ModioList.h"
15 | #include "modio/core/entities/ModioGameInfo.h"
16 | #include "modio/core/entities/ModioPagedResult.h"
17 | #include "modio/detail/JsonWrapper.h"
18 | #include
19 |
20 | namespace Modio
21 | {
22 | /// @docpublic
23 | /// @brief Class representing a list of games that may be a page from a larger set of results
24 | class GameInfoList : public PagedResult, public List
25 | {
26 | public:
27 | /// @docpublic
28 | /// @brief Insert GameInfoList to the end of this list
29 | void Append(const GameInfoList& Other)
30 | {
31 | InternalList.insert(InternalList.end(), std::begin(Other.InternalList), std::end(Other.InternalList));
32 | }
33 |
34 | /// @docpublic
35 | /// @brief Insert a GameInfo to the end of this list
36 | void Append(const GameInfo& GameInfoData)
37 | {
38 | InternalList.push_back(GameInfoData);
39 | }
40 |
41 | /// @docnone
42 | MODIO_IMPL friend void from_json(const nlohmann::json& Json, Modio::GameInfoList& OutGameInfoList);
43 | };
44 |
45 | } // namespace Modio
46 |
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioGameInfoList.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioGameMaturityOptions.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioGameMonetization.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioGameStats.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioMetricsSessionEndParams.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 |
13 | #include "modio/core/ModioCoreTypes.h"
14 | #include "modio/detail/JsonWrapper.h"
15 | #include "modio/detail/ModioHashHelpers.h"
16 |
17 | #include
18 |
19 | namespace Modio
20 | {
21 | /// @docpublic
22 | /// @brief Parameters to end a metrics session
23 | struct MetricsSessionEndParams
24 | {
25 | public:
26 | /// @brief A unique Guid to identify the active session to end
27 | Modio::Guid SessionId;
28 |
29 | /// @brief Milliseconds since UNIX when this request was made
30 | int64_t SessionTimestamp;
31 |
32 | /// @brief Hashed value of the session timestamp, Id, nonce and the secret metrics key
33 | std::string SessionHash;
34 |
35 | /// @brief unique Guid to identify this request
36 | Modio::Guid SessionNonce;
37 |
38 | /// @brief An incremental order Id for each request sent to the server.
39 | uint64_t SessionOrderId;
40 |
41 | /// @docnone
42 | MODIO_IMPL friend void to_json(nlohmann::json& Json, const Modio::MetricsSessionEndParams& Params);
43 | };
44 | } // namespace Modio
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioMetricsSessionHeartbeatParams.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 |
13 | #include "modio/core/ModioCoreTypes.h"
14 | #include "modio/detail/JsonWrapper.h"
15 | #include "modio/detail/ModioHashHelpers.h"
16 |
17 | #include
18 |
19 | namespace Modio
20 | {
21 | /// @docpublic
22 | /// @brief Parameters to keep alive a metrics session
23 | struct MetricsSessionHeartbeatParams
24 | {
25 | public:
26 | /// @brief A unique Guid to identify the active session to keep alive
27 | Modio::Guid SessionId;
28 |
29 | /// @brief Milliseconds since UNIX when this request was made
30 | int64_t SessionTimestamp;
31 |
32 | /// @brief Hashed value of the session timestamp, Id, nonce and the secret metrics key
33 | std::string SessionHash;
34 |
35 | /// @brief A unique Guid to identify this request
36 | Modio::Guid SessionNonce;
37 |
38 | /// @brief An incremental order Id for each request sent to the server.
39 | uint64_t SessionOrderId;
40 |
41 | /// @docnone
42 | MODIO_IMPL friend void to_json(nlohmann::json& Json, const Modio::MetricsSessionHeartbeatParams& Params);
43 | };
44 | } // namespace Modio
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioMetricsSessionStartParams.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 |
13 | #include "modio/core/ModioCoreTypes.h"
14 | #include "modio/detail/JsonWrapper.h"
15 | #include "modio/detail/ModioHashHelpers.h"
16 |
17 | #include
18 |
19 | namespace Modio
20 | {
21 | /// @docpublic
22 | /// @brief Parameters to start a metrics session
23 | struct MetricsSessionStartParams
24 | {
25 | public:
26 | /// @brief A unique Guid to identify the starting session
27 | Modio::Guid SessionId;
28 |
29 | /// @brief Milliseconds since UNIX when this request was made
30 | int64_t SessionTimestamp;
31 |
32 | /// @brief Hashed value of the session timestamp, Id, nonce and the secret metrics key
33 | std::string SessionHash;
34 |
35 | /// @brief A unique Guid to identify this request
36 | Modio::Guid SessionNonce;
37 |
38 | /// @brief The list of mods being tracked in this session
39 | std::vector ModIds;
40 |
41 | /// @brief An incremental order Id for each request sent to the server.
42 | uint64_t SessionOrderId;
43 |
44 | /// @docnone
45 | MODIO_IMPL friend void to_json(nlohmann::json& Json, const Modio::MetricsSessionStartParams& Params);
46 | };
47 | } // namespace Modio
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioModCommunityOptions.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioModDetails.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 |
13 | #include "modio/core/entities/ModioFileMetadata.h"
14 | #include "modio/core/entities/ModioList.h"
15 | #include "modio/core/entities/ModioPagedResult.h"
16 | #include
17 |
18 | namespace Modio
19 | {
20 | /// @docpublic
21 | /// @brief Collection of FileMetadata objects representing mod file updates
22 | class ModDetails : public PagedResult, public List
23 | {
24 | /// @docnone
25 | friend inline void from_json(const nlohmann::json& Json, Modio::ModDetails& ModDetails);
26 | };
27 |
28 | } // namespace Modio
29 |
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioModDetails.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioModInfo.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioModInfoList.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 | #include "modio/detail/ModioDefines.h"
13 |
14 | #include "modio/core/entities/ModioList.h"
15 | #include "modio/core/entities/ModioModInfo.h"
16 | #include "modio/core/entities/ModioPagedResult.h"
17 | #include "modio/detail/JsonWrapper.h"
18 | #include
19 |
20 | namespace Modio
21 | {
22 | /// @docpublic
23 | /// @brief Class representing a list of mods that may be a page from a larger set of results
24 | class ModInfoList : public PagedResult, public List
25 | {
26 | public:
27 | /// @docpublic
28 | /// @brief Insert ModInfoList to the end of this list
29 | void Append(const ModInfoList& Other)
30 | {
31 | InternalList.insert(InternalList.end(), std::begin(Other.InternalList), std::end(Other.InternalList));
32 | }
33 |
34 | /// @docpublic
35 | /// @brief Insert a ModInfo to the end of this list
36 | void Append(const ModInfo& ModInfoData)
37 | {
38 | InternalList.push_back(ModInfoData);
39 | }
40 |
41 | /// @docnone
42 | MODIO_IMPL friend void from_json(const nlohmann::json& Json, Modio::ModInfoList& OutModInfoList);
43 | };
44 | } // namespace Modio
45 |
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioModInfoList.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioModStats.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioModTagOptions.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioPagedResult.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioProfileMaturity.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioTerms.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioToken.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioTransactionRecord.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021-2023 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 | #include "modio/core/ModioCoreTypes.h"
13 | #include "modio/core/ModioSplitCompilation.h"
14 | #include "modio/detail/JsonWrapper.h"
15 | #include "modio/core/entities/ModioModInfo.h"
16 |
17 |
18 | namespace Modio
19 | {
20 | /// @docpublic
21 | /// @brief Contains information about a successful transaction for a mod
22 | struct TransactionRecord
23 | {
24 | /// @brief The mod the purchase was for
25 | Modio::ModID AssociatedModID = {};
26 | /// @brief The price the mod was purchased for
27 | uint64_t Price = 0;
28 | /// @brief The updated balance in the user's wallet after the transaction
29 | uint64_t UpdatedUserWalletBalance = 0;
30 | /// @brief ModInfo of the mod that was purchase and subscribed to
31 | Modio::ModInfo Mod = {};
32 |
33 | /// @docnone
34 | MODIO_IMPL friend void from_json(const nlohmann::json& Json, Modio::TransactionRecord& Transaction);
35 |
36 | };
37 | }
38 |
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioTransactionRecord.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioURLList.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 | #include "modio/core/ModioSplitCompilation.h"
13 | #include "modio/core/entities/ModioList.h"
14 | #include "modio/detail/JsonWrapper.h"
15 | #include
16 | #include
17 |
18 | namespace Modio
19 | {
20 | /// @brief Typedef a List into URLList
21 | using URLList = List;
22 |
23 | /// @docpublic
24 | /// @brief A URLList subclass to match Youtube urls
25 | class YoutubeURLList : public URLList
26 | {
27 | /// @docnone
28 | MODIO_IMPL friend void from_json(const nlohmann::json& Json, Modio::YoutubeURLList& YoutubeURLList);
29 |
30 | /// @docnone
31 | MODIO_IMPL friend void to_json(nlohmann::json& Json, const Modio::YoutubeURLList& YoutubeURLList);
32 | };
33 |
34 | /// @docpublic
35 | /// @brief A URLList subclass to match Sketchfab urls
36 | class SketchfabURLList : public URLList
37 | {
38 | /// @docnone
39 | MODIO_IMPL friend void from_json(const nlohmann::json& Json, Modio::SketchfabURLList& SketchfabURLList);
40 |
41 | /// @docnone
42 | MODIO_IMPL friend void to_json(nlohmann::json& Json, const Modio::SketchfabURLList& SketchfabURLList);
43 | };
44 |
45 | } // namespace Modio
46 |
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioURLList.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioUser.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioUserDelegationToken.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021-2023 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 | #include "modio/core/ModioCoreTypes.h"
13 | #include "modio/core/ModioSplitCompilation.h"
14 | #include "modio/core/entities/ModioModInfo.h"
15 | #include "modio/detail/JsonWrapper.h"
16 |
17 | namespace Modio
18 | {
19 | /// @docpublic
20 | /// @brief Contains information about a UserDelegationToken used for S2S transactions
21 | struct UserDelegationToken
22 | {
23 | /// @brief The type of token we are getting
24 | std::string Entity;
25 |
26 | /// @brief The token that we got
27 | std::string Token;
28 |
29 | /// @docnone
30 | MODIO_IMPL friend void from_json(const nlohmann::json& Json, Modio::UserDelegationToken& Token);
31 | };
32 | } // namespace Modio
33 |
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioUserDelegationToken.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
2 |
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioUserList.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021-2022 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 |
13 | #include "modio/detail/ModioDefines.h"
14 |
15 | #include "modio/core/ModioSplitCompilation.h"
16 | #include "modio/core/entities/ModioList.h"
17 | #include "modio/core/entities/ModioPagedResult.h"
18 | #include "modio/core/entities/ModioUser.h"
19 | #include "modio/detail/JsonWrapper.h"
20 | #include
21 |
22 | namespace Modio
23 | {
24 | /// @docpublic
25 | /// @brief Class representing a list of users
26 | class UserList : public PagedResult, public List
27 | {
28 | public:
29 | /// @docpublic
30 | /// @brief Insert UserList to the end of this list
31 | void Append(const UserList& Other)
32 | {
33 | InternalList.insert(InternalList.end(), std::begin(Other.InternalList), std::end(Other.InternalList));
34 | }
35 |
36 | /// @docpublic
37 | /// @brief Insert a User to the end of this list
38 | void Append(const User& UserData)
39 | {
40 | InternalList.push_back(UserData);
41 | }
42 |
43 | /// @docnone
44 | MODIO_IMPL friend void from_json(const nlohmann::json& Json, Modio::UserList& OutUserList);
45 | };
46 |
47 | } // namespace Modio
48 |
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioUserList.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/core/entities/ModioUserRatingList.ipp:
--------------------------------------------------------------------------------
1 | // This file intentionally empty, for temporary resolution of CI/CD issues.
--------------------------------------------------------------------------------
/modio/modio/detail/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2021 mod.io Pty Ltd.
3 | #
4 | # This file is part of the mod.io SDK.
5 | #
6 | # Distributed under the MIT License. (See accompanying file LICENSE or
7 | # view online at )
8 | #
9 |
10 | include(split-compilation)
11 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/ModioProfiling.ipp)
12 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/ModioSDKSessionData.ipp)
13 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/ModioJsonHelpers.ipp)
14 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/compression/zip/ArchiveFileImplementation.ipp)
15 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/compression/zlib/detail/deflate_stream.ipp)
16 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/compression/zlib/detail/inflate_stream.ipp)
17 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/userdata/ModioUserDataContainer.ipp)
18 | add_modio_implementation_file(${CMAKE_CURRENT_LIST_DIR}/userdata/ModioUserProfile.ipp)
19 | add_public_header(${MODIO_TARGET_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModioDefines.h)
20 | add_public_header(${MODIO_TARGET_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModioLibraryConfigurationHelpers.h)
21 |
--------------------------------------------------------------------------------
/modio/modio/detail/ConcurrentQueueWrapper.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 |
13 | #pragma push_macro("BLOCK_SIZE")
14 | #undef BLOCK_SIZE
15 |
16 | #include "modio/detail/ModioCompilerMacros.h"
17 | MODIO_DISABLE_WARNING_PUSH
18 | MODIO_DISABLE_WARNING_ASSIGNMENT_IMPLICITLY_DELETED
19 | MODIO_DISABLE_WARNING_COPY_CONSTRUCTOR_IMPLICITLY_DELETED
20 | MODIO_DISABLE_WARNING_CPP98_COMPAT
21 | MODIO_DISABLE_WARNING_SUGGEST_DESTRUCTOR_OVERRIDE
22 | MODIO_DISABLE_WARNING_EXIT_TIME_DESTRUCTORS
23 | MODIO_DISABLE_WARNING_MOVE_ASSIGNMENT_IMPLICITLY_DELETED
24 | MODIO_DISABLE_WARNING_MOVE_CONSTRUCTOR_IMPLICITLY_DELETED
25 | MODIO_DISABLE_WARNING_SPECTRE_MITIGATION
26 | MODIO_DISABLE_WARNING_STRUCTURE_PADDING
27 | MODIO_DISABLE_WARNING_UNSAFE_BUFFER_USAGE
28 | MODIO_DISABLE_WARNING_UNUSED_FUNCTION
29 | #include "concurrentqueue.h"
30 | MODIO_DISABLE_WARNING_POP
31 |
32 | #pragma pop_macro("BLOCK_SIZE")
--------------------------------------------------------------------------------
/modio/modio/detail/FilterOperations.inl:
--------------------------------------------------------------------------------
1 | FILTER_OP(Contains, "_q")
2 | FILTER_OP(Equals, "")
3 | FILTER_OP(Not, "-not")
4 | FILTER_OP(Like,"-lk")
5 | FILTER_OP(NotLike,"-not-lk")
6 | FILTER_OP(In,"-in")
7 | FILTER_OP(NotIn,"-not-in")
8 | FILTER_OP(GreaterThan,"-min")
9 | FILTER_OP(LessThan,"-max")
10 | FILTER_OP(BitwiseAnd,"-bitwise-and")
--------------------------------------------------------------------------------
/modio/modio/detail/MbedtlsWrapper.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021-2025 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 |
13 | #include "modio/detail/ModioCompilerMacros.h"
14 |
15 | MODIO_DISABLE_WARNING_PUSH
16 | #include "mbedtls/ctr_drbg.h"
17 | #include "mbedtls/entropy.h"
18 | #include "mbedtls/net_sockets.h"
19 | #include "mbedtls/ssl.h"
20 | MODIO_DISABLE_WARNING_POP
--------------------------------------------------------------------------------
/modio/modio/detail/ModioExtInitParamStub.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2021 mod.io Pty Ltd.
3 | *
4 | * This file is part of the mod.io SDK.
5 | *
6 | * Distributed under the MIT License. (See accompanying file LICENSE or
7 | * view online at )
8 | *
9 | */
10 |
11 | #pragma once
12 |
13 | namespace Modio
14 | {
15 | namespace Detail
16 | {
17 |
18 | /// @brief Stub struct for handling internal-only initialization options
19 | struct ExtendedInitParamHandler
20 | {
21 | static void PostSessionDataInit(struct Modio::InitializeOptions&) {};
22 | static void PostUserDataServiceInit(Modio::InitializeOptions&) {};
23 | };
24 | } // namespace Detail
25 | } // namespace Modio
--------------------------------------------------------------------------------
/modio/modio/detail/ModioHashHelpers.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "hmac_sha256.h"
4 | #include "modio/core/ModioStdTypes.h"
5 |
6 | #include
7 | #include
8 | #include