diff --git a/.dcignore b/.dcignore new file mode 100644 index 0000000..9dc099e --- /dev/null +++ b/.dcignore @@ -0,0 +1,1547 @@ +# Write glob rules for ignored files. +# Check syntax on https://deepcode.freshdesk.com/support/solutions/articles/60000531055-how-can-i-ignore-files-or-directories- +# Check examples on https://github.com/github/gitignore + +# Hidden directories +.*/ + +# FuelPHP +/fuel/vendor +/docs/ +/fuel/app/logs/*/*/* +/fuel/app/cache/*/* + +# Godot +data_*/ + +# Lilypond +*~ + +# Nim +nimcache/ +nimblecache/ +htmldocs/ + +# Android +bin/ +gen/ +out/ +build/ +proguard/ +captures/ +freeline/ +fastlane/screenshots +fastlane/test_output +lint/intermediates/ +lint/generated/ +lint/outputs/ +lint/tmp/ + +# UnrealEngine +Binaries/* +Plugins/*/Binaries/* +Build/* +!Build/*/ +Build/*/** +Saved/* +Intermediate/* +Plugins/*/Intermediate/* +DerivedDataCache/* + +# Zephir +ext/build/ +ext/modules/ +ext/Makefile* +ext/config* +ext/autom4te* +ext/install-sh +ext/missing +ext/mkinstalldirs +ext/libtool + +# Typo3 +/fileadmin/user_upload/ +/fileadmin/_temp_/ +/fileadmin/_processed_/ +/uploads/ +/typo3conf/temp_CACHED* +/typo3conf/ENABLE_INSTALL_TOOL +/FIRST_INSTALL +/typo3 +/Packages +/typo3temp/ + +# Actionscript +bin-debug/ +bin-release/ +[Oo]bj/ +[Bb]in/ + +# WordPress +!wp-content/ +wp-content/* +!wp-content/mu-plugins/ +!wp-content/plugins/ +!wp-content/themes/ +wp-content/themes/twenty*/ +node_modules/ + +# Lithium +libraries/* +resources/tmp/* + +# Python +__pycache__/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +MANIFEST +htmlcov/ +cover/ +instance/ +docs/_build/ +target/ +profile_default/ +__pypackages__/ +celerybeat-schedule +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ +/site +cython_debug/ + +# VVVV +bin/ + +# CodeIgniter +*/config/development +*/cache/* +application/logs/* +/vendor/ + +# AppEngine +appengine-generated/ + +# Objective-C +xcuserdata/ +build/ +DerivedData/ +Carthage/Build/ +fastlane/test_output +iOSInjectionProject/ + +# GWT +war/gwt_bree/ +gwt-unitCache/ +war/WEB-INF/deploy/ +war/WEB-INF/classes/ +www-test/ + +# Delphi +__history/ +__recovery/ +modules/ + +# ROS +devel/ +logs/ +build/ +bin/ +lib/ +msg_gen/ +srv_gen/ +build_isolated/ +devel_isolated/ +/cfg/cpp/ +qtcreator-* +/planning/cfg +/planning/docs +*~ +CATKIN_IGNORE + +# Stella +obj/ + +# Jekyll +_site/ + +# MetaProgrammingSystem +classes_gen +source_gen +test_gen + +# JENKINS_HOME +!/jobs +jobs/** +!jobs/**/ +builds +indexing +jobs/**/*workspace + +# Leiningen +/lib/ +/classes/ +/target/ +/checkouts/ + +# Laravel +/vendor/ +node_modules/ +app/storage/ +public/storage +public/hot +public_html/storage +public_html/hot + +# R +/*.Rcheck/ +*_cache/ +/cache/ +docs/ +po/*~ + +# Processing +applet +out + +# GitBook +node_modules +_book + +# LemonStand +/config/* +/controllers/* +/init/* +/logs/* +/phproad/* +/temp/* +/uploaded/* +/installer_files/* +/modules/backend/* +/modules/blog/* +/modules/cms/* +/modules/core/* +/modules/session/* +/modules/shop/* +/modules/system/* +/modules/users/* + +# ArchLinuxPackages +pkg/ + +# Swift +xcuserdata/ +build/ +DerivedData/ +Carthage/Build/ +Dependencies/ +fastlane/test_output +iOSInjectionProject/ + +# Packer +packer_cache/ + +# Elixir +/_build +/cover +/deps +/doc + +# Phalcon +/cache/ +/config/development/ + +# Unity +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Uu]ser[Ss]ettings/ +/[Mm]emoryCaptures/ +/[Aa]ssets/Plugins/Editor/JetBrains* +ExportedObj/ +/[Aa]ssets/[Ss]treamingAssets/aa/* + +# Scrivener +*/QuickLook/ + +# Kohana +application/cache/* +application/logs/* + +# Prestashop +/cache/* +!/cache/push/activity +!/cache/push/trends +/download/* +/img/* +!/img/jquery-ui +!/img/scenes +/upload/* +/vendor/* +/docs/phpdoc-sf/ +/admin-dev/autoupgrade/* +/admin-dev/backups/* +/admin-dev/import/* +/admin-dev/export/* +themes/*/cache/* +config/xml/* +config/themes/* +modules/* +override/* +themes/*/ +!themes/classic +!themes/_core +!themes/_libraries +bower_components/ +node_modules/ +php-cs-fixer +translations/* +mails/* +!mails/themes/ +!mails/_partials/ +themes/default-bootstrap/lang/* +themes/default-bootstrap/mails/* +!themes/default-bootstrap/mails/en/ +themes/default-bootstrap/modules/*/mails/* +!themes/default-bootstrap/modules/*/mails/en +/bin/ +/app/Resources/translations/* +!/app/Resources/translations/default +/build/ +/var/* +!/var/cache +/var/cache/* +!/var/logs +/var/logs/* +!/var/sessions +/var/sessions/* +/vendor/ +/web/bundles/ + +# ExtJs +build/ +ext/ + +# CMake +CMakeFiles +CMakeScripts +Testing +Makefile +_deps + +# Umbraco +**/App_Data/Logs/ +**/App_Data/[Pp]review/ +**/App_Data/TEMP/ +**/App_Data/NuGetBackup/ +!**/App_Data/[Pp]ackages/* +!**/[Uu]mbraco/[Dd]eveloper/[Pp]ackages/* +!**/[Uu]mbraco/[Vv]iews/[Pp]ackages/* +**/App_Data/cache/ + +# CakePHP +/vendor/* +/tmp/cache/models/* +!/tmp/cache/models/empty +/tmp/cache/persistent/* +!/tmp/cache/persistent/empty +/tmp/cache/views/* +!/tmp/cache/views/empty +/tmp/sessions/* +!/tmp/sessions/empty +/tmp/tests/* +!/tmp/tests/empty +/logs/* +!/logs/empty +/app/tmp/* +/vendors/* + +# Java +hs_err_pid* + +# Symfony +/app/cache/* +/app/logs/* +/app/spool/* +/var/cache/* +/var/logs/* +/var/sessions/* +/var/log/* +/bin/* +!bin/console +!bin/symfony_requirements +/vendor/ +/web/bundles/ +/web/uploads/ +/build/ +**/Entity/*~ + +# Composer +/vendor/ + +# SymphonyCMS +manifest/cache/ +manifest/logs/ +manifest/tmp/ +symphony/ +workspace/uploads/ + +# JBoss6 +/server/all/data +/server/all/log +/server/all/tmp +/server/all/work +/server/default/data +/server/default/log +/server/default/tmp +/server/default/work +/server/minimal/data +/server/minimal/log +/server/minimal/tmp +/server/minimal/work +/server/jbossweb-standalone/data +/server/jbossweb-standalone/log +/server/jbossweb-standalone/tmp +/server/jbossweb-standalone/work +/server/standard/data +/server/standard/log +/server/standard/tmp +/server/standard/work + +# JBoss4 +/server/all/data +/server/all/log +/server/all/tmp +/server/all/work +/server/default/data +/server/default/log +/server/default/tmp +/server/default/work +/server/minimal/data +/server/minimal/log +/server/minimal/tmp +/server/minimal/work + +# Red +quick-test/runnable/ +system/tests/source/units/auto-tests/ +tests/source/units/auto-tests/ + +# Snap +parts/ +prime/ +stage/ + +# Splunk +local + +# Hugo +/public/ +/resources/_gen/ + +# Bazel +/bazel-* + +# Nikola +cache/ +output/ + +# JupyterNotebooks +profile_default/ + +# Puppet +pkg/* +spec/fixtures/* +coverage/* +vendor/* + +# Racket +compiled/ + +# Phoenix +/tmp +/node_modules +/assets/node_modules +/priv/static/ +/installer/_build +/installer/tmp +/installer/doc +/installer/deps + +# Logtalk +lgt_tmp/ +logtalk_tester_logs/ +logtalk_doclet_logs/ + +# NWjs +locales/ +pnacl/ + +# Cordova +/platforms + +# Vue +docs/_book +test/ + +# Kentico +!CMS/CMSAdminControls/*/ +!CMS/CMSModules/System/*/ +!CMS/App_Data/CIRepository/** +CMS/App_Data/AzureCache +CMS/App_Data/AzureTemp +CMS/App_Data/CMSTemp +CMS/App_Data/Persistent +CMS/CMSSiteUtils/Export +CMS/CMSSiteUtils/Import +CMS/App_Data/CMSModules/SmartSearch/** +!CMS/App_Data/CMSModules/SmartSearch/*/ +!CMS/App_Data/CMSModules/SmartSearch/_StopWords/** +!CMS/App_Data/CMSModules/SmartSearch/_Synonyms/** +CMS/App_Data/DancingGoat +CMS/App_Data/Templates/CommunitySite +CMS/App_Data/Templates/CorporateSite +CMS/App_Data/Templates/DancingGoat +CMS/App_Data/Templates/EcommerceSite +CMS/App_Data/Templates/IntranetPortal +CMS/App_Data/Templates/PersonalSite +CMS/App_Themes/CommunitySite +CMS/App_Themes/CorporateSite +CMS/App_Themes/EcommerceSite +CMS/App_Themes/IntranetPortal* +CMS/App_Themes/PersonalSite +CMS/CMSTemplates/CorporateSite +CMS/CommunitySite +CMS/CorporateSite +CMS/DancingGoat +CMS/EcommerceSite +CMS/IntranetPortal +CMS/PersonalSite + +# InforCMS +[Mm]odel/[Dd]eployment +!Model/Portal/*/SupportFiles/[Bb]in/ +!Model/Portal/PortalTemplates/*/SupportFiles/[Bb]in + +# Xilinx +*_synth_* +*/*/bd/*/hdl +*/*/*/bd/*/hdl +*/*/bd/*/ip/*/*/ +*/*/*/bd/*/ip/*/*/ +hw_handoff +ipshared + +# Pimcore +/pimcore +/website/var/assets/* +/website/var/backup/* +/website/var/cache/* +/website/var/classes/Object* +!/website/var/classes/objectbricks +/website/var/config/Geo* +/website/var/config/object/* +/website/var/config/portal/* +/website/var/config/sqlreport/* +/website/var/email/* +/website/var/recyclebin/* +/website/var/search/* +/website/var/system/* +/website/var/tmp/* +/website/var/versions/asset/* +/website/var/versions/document/* +/website/var/versions/object/* +/website/var/user-image/* + +# Magento2 +/sitemap +/pub/sitemap +/app/config_sandbox +/app/code/Magento/TestModule* +/pub/media/attribute/* +/pub/media/analytics/* +/pub/media/catalog/* +/pub/media/customer/* +/pub/media/downloadable/* +/pub/media/favicon/* +/pub/media/import/* +/pub/media/logo/* +/pub/media/theme/* +/pub/media/theme_customization/* +/pub/media/wysiwyg/* +/pub/media/tmp/* +/pub/media/captcha/* +/pub/static/* +/var/* +/vendor/* +/generated/* + +# Bitrix +/bitrix/* +!/bitrix/templates +!/bitrix/components +/bitrix/components/bitrix +!/bitrix/gadgets +/bitrix/gadgets/bitrix +!/bitrix/php_interface/ +/upload/ + +# Drupal7 +files/ +sites/*/files +sites/*/private +sites/*/translations +/includes +/misc +/modules +/profiles +/scripts +/themes + +# CodeSniffer +/wpcs/* + +# Jigsaw +build_* + +# Magento1 +/media/* +!/media/customer +/media/customer/* +!/media/dhl +/media/dhl/* +!/media/downloadable +/media/downloadable/* +!/media/xmlconnect +/media/xmlconnect/* +!/media/xmlconnect/custom +/media/xmlconnect/custom/* +!/media/xmlconnect/original +/media/xmlconnect/original/* +!/media/xmlconnect/system +/media/xmlconnect/system/* +/var/* +!/var/package +/var/package/* + +# ThinkPHP +/Application/Runtime/ + +# AtmelStudio +[Dd]ebug/ +[Rr]elease/ + +# IAR_EWARM +EWARM/**/Obj +EWARM/**/List +EWARM/**/Exe +EWARM/settings + +# esp-idf +build/ +sdkconfig + +# Concrete5 +error_log +files/cache/* +files/tmp/* +/application/files/* +/updates/* + +# Drupal +/sites/*/files +/sites/*/public +/sites/*/private +/sites/*/files-public +/sites/*/files-private +/sites/*/translations +/sites/*/tmp +/sites/*/cache +/sites/simpletest +/core +/vendor + +# Mercury +Mercury/ + +# Joomla +/administrator/cache/* +/administrator/components/com_actionlogs/* +/administrator/components/com_admin/* +/administrator/components/com_ajax/* +/administrator/components/com_associations/* +/administrator/components/com_banners/* +/administrator/components/com_cache/* +/administrator/components/com_categories/* +/administrator/components/com_checkin/* +/administrator/components/com_config/* +/administrator/components/com_contact/* +/administrator/components/com_content/* +/administrator/components/com_contenthistory/* +/administrator/components/com_cpanel/* +/administrator/components/com_fields/* +/administrator/components/com_finder/* +/administrator/components/com_installer/* +/administrator/components/com_joomlaupdate/* +/administrator/components/com_languages/* +/administrator/components/com_login/* +/administrator/components/com_media/* +/administrator/components/com_menus/* +/administrator/components/com_messages/* +/administrator/components/com_modules/* +/administrator/components/com_newsfeeds/* +/administrator/components/com_plugins/* +/administrator/components/com_postinstall/* +/administrator/components/com_privacy/* +/administrator/components/com_redirect/* +/administrator/components/com_search/* +/administrator/components/com_tags/* +/administrator/components/com_templates/* +/administrator/components/com_users/* +/administrator/help/* +/administrator/includes/* +/administrator/language/overrides/* +/administrator/logs/* +/administrator/modules/mod_custom/* +/administrator/modules/mod_feed/* +/administrator/modules/mod_latest/* +/administrator/modules/mod_latestactions/* +/administrator/modules/mod_logged/* +/administrator/modules/mod_login/* +/administrator/modules/mod_menu/* +/administrator/modules/mod_multilangstatus/* +/administrator/modules/mod_online/* +/administrator/modules/mod_popular/* +/administrator/modules/mod_privacy_dashboard/* +/administrator/modules/mod_quickicon/* +/administrator/modules/mod_sampledata/* +/administrator/modules/mod_stats_admin/* +/administrator/modules/mod_status/* +/administrator/modules/mod_submenu/* +/administrator/modules/mod_title/* +/administrator/modules/mod_toolbar/* +/administrator/modules/mod_unread/* +/administrator/modules/mod_version/* +/administrator/templates/hathor/* +/administrator/templates/isis/* +/administrator/templates/system/* +/bin/* +/cache/* +/cli/* +/components/com_ajax/* +/components/com_banners/* +/components/com_config/* +/components/com_contact/* +/components/com_content/* +/components/com_contenthistory/* +/components/com_fields/* +/components/com_finder/* +/components/com_mailto/* +/components/com_media/* +/components/com_menus/* +/components/com_modules/* +/components/com_newsfeeds/* +/components/com_privacy/* +/components/com_search/* +/components/com_tags/* +/components/com_users/* +/components/com_wrapper/* +/images/banners/* +/images/headers/* +/images/sampledata/* +/images/joomla* +/includes/* +/installation/* +/language/overrides/* +/layouts/joomla/* +/layouts/libraries/* +/layouts/plugins/* +/libraries/cms/* +/libraries/fof/* +/libraries/idna_convert/* +/libraries/joomla/* +/libraries/legacy/* +/libraries/php-encryption/* +/libraries/phpass/* +/libraries/phpmailer/* +/libraries/phputf8/* +/libraries/simplepie/* +/libraries/vendor/* +/media/cms/* +/media/com_associations/* +/media/com_contact/* +/media/com_content/* +/media/com_contenthistory/* +/media/com_fields/* +/media/com_finder/* +/media/com_joomlaupdate/* +/media/com_menus/* +/media/com_modules/* +/media/com_wrapper/* +/media/contacts/* +/media/editors/* +/media/jui/* +/media/mailto/* +/media/media/* +/media/mod_languages/* +/media/mod_sampledata/* +/media/overrider/* +/media/plg_captcha_recaptcha/* +/media/plg_captcha_recaptcha_invisible/* +/media/plg_quickicon_extensionupdate/* +/media/plg_quickicon_joomlaupdate/* +/media/plg_quickicon_privacycheck/* +/media/plg_system_highlight/* +/media/plg_system_stats/* +/media/plg_twofactorauth_totp/* +/media/system/* +/modules/mod_articles_archive/* +/modules/mod_articles_categories/* +/modules/mod_articles_category/* +/modules/mod_articles_latest/* +/modules/mod_articles_news/* +/modules/mod_articles_popular/* +/modules/mod_banners/* +/modules/mod_breadcrumbs/* +/modules/mod_custom/* +/modules/mod_feed/* +/modules/mod_finder/* +/modules/mod_footer/* +/modules/mod_languages/* +/modules/mod_login/* +/modules/mod_menu/* +/modules/mod_random_image/* +/modules/mod_related_items/* +/modules/mod_search/* +/modules/mod_stats/* +/modules/mod_syndicate/* +/modules/mod_tags_popular/* +/modules/mod_tags_similar/* +/modules/mod_users_latest/* +/modules/mod_whosonline/* +/modules/mod_wrapper/* +/plugins/actionlog/joomla/* +/plugins/authentication/cookie/* +/plugins/authentication/example/* +/plugins/authentication/gmail/* +/plugins/authentication/joomla/* +/plugins/authentication/ldap/* +/plugins/captcha/recaptcha/* +/plugins/captcha/recaptcha_invisible/* +/plugins/content/confirmconsent/* +/plugins/content/contact/* +/plugins/content/emailcloak/* +/plugins/content/example/* +/plugins/content/fields/* +/plugins/content/finder/* +/plugins/content/geshi/* +/plugins/content/joomla/* +/plugins/content/loadmodule/* +/plugins/content/pagebreak/* +/plugins/content/pagenavigation/* +/plugins/content/vote/* +/plugins/editors/codemirror/* +/plugins/editors/none/* +/plugins/editors/tinymce/* +/plugins/editors-xtd/article/* +/plugins/editors-xtd/contact/* +/plugins/editors-xtd/fields/* +/plugins/editors-xtd/image/* +/plugins/editors-xtd/menu/* +/plugins/editors-xtd/module/* +/plugins/editors-xtd/pagebreak/* +/plugins/editors-xtd/readmore/* +/plugins/extension/example/* +/plugins/extension/joomla/* +/plugins/fields/calendar/* +/plugins/fields/checkboxes/* +/plugins/fields/color/* +/plugins/fields/editor/* +/plugins/fields/imagelist/* +/plugins/fields/integer/* +/plugins/fields/list/* +/plugins/fields/media/* +/plugins/fields/radio/* +/plugins/fields/repeatable/* +/plugins/fields/sql/* +/plugins/fields/text/* +/plugins/fields/textarea/* +/plugins/fields/url/* +/plugins/fields/user/* +/plugins/fields/usergrouplist/* +/plugins/finder/categories/* +/plugins/finder/contacts/* +/plugins/finder/content/* +/plugins/finder/newsfeeds/* +/plugins/finder/tags/* +/plugins/installer/folderinstaller/* +/plugins/installer/packageinstaller/* +/plugins/installer/urlinstaller/* +/plugins/privacy/actionlogs/* +/plugins/privacy/consents/* +/plugins/privacy/contact/* +/plugins/privacy/content/* +/plugins/privacy/message/* +/plugins/privacy/user/* +/plugins/quickicon/extensionupdate/* +/plugins/quickicon/joomlaupdate/* +/plugins/quickicon/phpversioncheck/* +/plugins/quickicon/privacycheck/* +/plugins/sampledata/blog/* +/plugins/search/categories/* +/plugins/search/contacts/* +/plugins/search/content/* +/plugins/search/newsfeeds/* +/plugins/search/tags/* +/plugins/search/weblinks/* +/plugins/system/actionlogs/* +/plugins/system/cache/* +/plugins/system/debug/* +/plugins/system/fields/* +/plugins/system/highlight/* +/plugins/system/languagecode/* +/plugins/system/languagefilter/* +/plugins/system/log/* +/plugins/system/logout/* +/plugins/system/logrotation/* +/plugins/system/p3p/* +/plugins/system/privacyconsent/* +/plugins/system/redirect/* +/plugins/system/remember/* +/plugins/system/sef/* +/plugins/system/sessiongc/* +/plugins/system/stats/* +/plugins/system/updatenotification/* +/plugins/twofactorauth/totp/* +/plugins/twofactorauth/yubikey/* +/plugins/user/contactcreator/* +/plugins/user/example/* +/plugins/user/joomla/* +/plugins/user/profile/* +/plugins/user/terms/* +/templates/beez3/* +/templates/protostar/* +/templates/system/* +/tmp/* + +# Yii +assets/* +protected/runtime/* +themes/classic/views/ + +# Rust +debug/ +target/ + +# Node +logs +pids +lib-cov +coverage +bower_components +build/Release +node_modules/ +jspm_packages/ +web_modules/ +out +dist + +# PureScript +bower_components +node_modules +output + +# JBoss +jboss/server/all/tmp/**/* +jboss/server/all/data/**/* +jboss/server/all/work/**/* +jboss/server/default/tmp/**/* +jboss/server/default/data/**/* +jboss/server/default/work/**/* +jboss/server/minimal/tmp/**/* +jboss/server/minimal/data/**/* +jboss/server/minimal/work/**/* + +# Grails +/web-app/WEB-INF/classes +/test/reports +/logs +/plugins +/web-app/plugins +/target + +# C +*.dSYM/ + +# ZendFramework +vendor/ +data/logs/ +data/cache/ +data/sessions/ +data/tmp/ +temp/ +data/DoctrineORMModule/Proxy/ +data/DoctrineORMModule/cache/ +demos/ +extras/documentation + +# PlayFramework +bin/ +/db +/lib/ +/logs/ +/modules +/project/project +/project/target +/target +tmp/ +test-result +/dist/ + +# SugarCRM +/cache/* +/custom/history/ +/custom/modulebuilder/ +/custom/working/ +/custom/modules/*/Ext/ +/custom/application/Ext/ +/upload/* +/upload_backup/ + +# ExpressionEngine +images/avatars/ +images/captchas/ +images/smileys/ +images/member_photos/ +images/signature_attachments/ +images/pm_attachments/ +sized/ +thumbs/ +_thumbs/ +*/expressionengine/cache/* + +# KiCad +*~ +_autosave-* +fp-info-cache + +# Plone +bin/ +build/ +develop-eggs/ +downloads/ +eggs/ +fake-eggs/ +parts/ +dist/ +var/ + +# D +docs/ + +# CFWheels +plugins/**/* +files +db/sql +javascripts/bundles +stylesheets/bundles + +# Yeoman +node_modules/ +bower_components/ +build/ +dist/ + +# Nanoc +output/ +tmp/nanoc/ + +# Erlang +rel/example_project +deps +_build/ +_checkouts/ + +# VisualStudio +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ +Generated\ Files/ +[Tt]est[Rr]esult*/ +[Dd]ebugPS/ +[Rr]eleasePS/ +BenchmarkDotNet.Artifacts/ +artifacts/ +_Chutzpah* +ipch/ +$tf/ +_ReSharper*/ +_TeamCity* +_NCrunch_* +nCrunchTemp_* +AutoTest.Net/ +[Ee]xpress/ +DocProject/buildhelp/ +DocProject/Help/Html2 +DocProject/Help/html +publish/ +PublishScripts/ +**/[Pp]ackages/* +!**/[Pp]ackages/build/ +csx/ +ecf/ +rcf/ +AppPackages/ +BundleArtifacts/ +!?*.[Cc]ache/ +ClientBin/ +~$* +*~ +Generated_Code/ +_UpgradeReport_Files/ +Backup*/ +ServiceFabricBackup/ +FakesAssemblies/ +node_modules/ +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.Server/GeneratedArtifacts +_Pvt_Extensions +paket-files/ +__pycache__/ +OpenCover/ +ASALocalRun/ +healthchecksdb +MigrationBackup/ + +# Perl +!Build/ +cover_db/ +_build/ +Build +inc/ +/blib/ +/_eumm/ +/Makefile +/pm_to_blib + +# OCaml +_build/ +_opam/ + +# Agda +MAlonzo/** + +# Clojure +/lib/ +/classes/ +/target/ +/checkouts/ + +# OpenCart +download/ +image/data/ +image/cache/ +system/cache/ +system/logs/ +system/storage/ +vqmod/logs/* +vqmod/vqcache/* + +# Kotlin +hs_err_pid* + +# Julia +deps/downloads/ +deps/usr/ +docs/build/ +docs/site/ + +# Opa +_build +_tracks +opa-debug-js + +# Windows +$RECYCLE.BIN/ + +# MonoDevelop +test-results/ + +# JDeveloper +temp/ +classes/ +deploy/ +javadoc/ + +# CodeKit +/min + +# VirtualEnv +[Bb]in +[Ii]nclude +[Ll]ib +[Ll]ib64 +[Ll]ocal +[Ss]cripts + +# Tags +TAGS +!TAGS/ +tags +!tags/ +GTAGS +GRTAGS +GPATH +GSYMS + +# Virtuoso +lvsRunDir/* +drcRunDir/* + +# PSoCCreator +Debug/ +Release/ +Export/ +*/codegentemp +*/Generated_Source + +# Calabash +rerun/ +reports/ +screenshots/ +test-servers/ +vendor + +# TextMate +tmtags + +# Lazarus +backup/ +lib/ +*.app/ + +# macOS +Icon + +Network Trash Folder +Temporary Items + +# EiffelStudio +EIFGENs + +# MATLAB +helpsearch*/ +slprj/ +sccprj/ +codegen/ +octave-workspace + +# FlexBuilder +bin/ +bin-debug/ +bin-release/ + +# Eclipse +bin/ +tmp/ + +# Vim +*~ +tags + +# SynopsysVCS +simv +simv.daidir/ +simv.db.dir/ +simv.vdb/ +urgReport/ +DVEfiles/ + +# Emacs +*~ +\#*\# +auto-save-list +tramp +*_archive +/eshell/history +/eshell/lastdir +/elpa/ +/auto/ +dist/ +/server/ + +# Momentics +x86/ +arm/ +arm-p/ + +# Linux +*~ + +# SublimeText +Package Control.cache/ +Package Control.ca-certs/ + +# CVS +/CVS/* +**/CVS/* + +# Dreamweaver +_notes +_compareTemp +configs/ + +# Xcode +xcuserdata/ +build/ +DerivedData/ + +# WebMethods +**/IntegrationServer/datastore/ +**/IntegrationServer/db/ +**/IntegrationServer/DocumentStore/ +**/IntegrationServer/lib/ +**/IntegrationServer/logs/ +**/IntegrationServer/replicate/ +**/IntegrationServer/sdk/ +**/IntegrationServer/support/ +**/IntegrationServer/update/ +**/IntegrationServer/userFtpRoot/ +**/IntegrationServer/web/ +**/IntegrationServer/WmRepository4/ +**/IntegrationServer/XAStore/ +**/IntegrationServer/packages/Wm*/ + +# ModelSim +[_@]* +wlf* +cov*/ +transcript* + +# NetBeans +**/nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ + +# JetBrains +cmake-build-*/ +out/ + +# Octave +helpsearch*/ +slprj/ +sccprj/ +codegen/ +octave-workspace + +# SBT +dist/* +target/ +lib_managed/ +project/boot/ +project/plugins/project/ + +# XilinxISE +iseconfig/ +xlnx_auto_0_xdb/ +xst/ +_ngo/ +_xmsgs/ + +# Smalltalk +/package-cache +/play-cache +/play-stash +/github-cache + +# Magento +/media/* +!/media/customer +/media/customer/* +!/media/dhl +/media/dhl/* +!/media/downloadable +/media/downloadable/* +!/media/xmlconnect +/media/xmlconnect/* +!/media/xmlconnect/custom +/media/xmlconnect/custom/* +!/media/xmlconnect/original +/media/xmlconnect/original/* +!/media/xmlconnect/system +/media/xmlconnect/system/* +/var/* +!/var/package +/var/package/* + +# TurboGears2 +data/* +dist +build + +# ChefCookbook +/cookbooks +bin/* + +# TeX +latex.out/ +*-gnuplottex-* +*-tikzDictionary +_minted* +sympy-plots-for-*.tex/ +pythontex-files-*/ +TSWLatexianTemp* +*~[0-9]* + +# Rails +/public/system +/coverage/ +/spec/tmp +/log/* +/tmp/* +/vendor/bundle +/vendor/assets/bower_components +node_modules/ +/public/packs +/public/packs-test +/public/assets +/storage/* +/public/uploads + +# Dart +build/ +doc/api/ + +# Ruby +/coverage/ +/InstalledFiles +/pkg/ +/spec/reports/ +/test/tmp/ +/test/version_tmp/ +/tmp/ +build/ +build-iPhoneOS/ +build-iPhoneSimulator/ +/_yardoc/ +/doc/ +/rdoc/ +/vendor/bundle +/lib/bundler/man/ + +# Textpattern +rpc/ +sites/site*/admin/ +sites/site*/private/ +sites/site*/public/admin/ +sites/site*/public/setup/ +sites/site*/public/theme/ +textpattern/ + +# Autotools +/ar-lib +/mdate-sh +/py-compile +/test-driver +/ylwrap +/compile +/configure +/depcomp +/install-sh +/missing +/stamp-h1 +Makefile + +# Qooxdoo +cache +cache-downloads +inspector +api + +# Maven +target/ + +# Waf +waf-*-*/ +waf3-*-*/ + +# Qt +Makefile* +*build-* + +# ForceDotCom +Referenced Packages + +# SeamGen +/bootstrap/data +/bootstrap/tmp +/classes/ +/dist/ +/exploded-archives/ +/test-build/ +/test-output/ +/test-report/ +/target/ + +# RhodesRhomobile +rholog-* +sim-* +bin/libs +bin/RhoBundle +bin/tmp +bin/target + +# Xojo +Builds* +Debug*/Debug*\ Libs + +# Haskell +dist +dist-* +cabal-dev + +# Elm +elm-stuff +repl-temp-* + +# AppceleratorTitanium +build/ + +# CraftCMS +/craft/storage/* +!/craft/storage/rebrand + +# Gradle +**/build/ + +# Elisp +*~ diff --git a/Playmobile.php b/Playmobile.php deleted file mode 100644 index b7276b4..0000000 --- a/Playmobile.php +++ /dev/null @@ -1,210 +0,0 @@ -create([ - * 'baseUrl' => "http://91.204.239.44/broker-api/" - * ]); - * - * $response = $playmobile->send([ - * [ - * 'recipient' => "998936913932", - * 'message-id' => "1", - * 'originator' => "3700", - * 'text' => "test", - * ],[ - * 'recipient' => "998936913932", - * 'message-id' => "1", - * 'originator' => "3700", - * 'text' => "test", - * ], - * ]); - * echo $response == false ? "Not sent" : "Send successfully"; - */ -class Playmobile extends Component -{ - /** - * @var string $baseUrl - */ - public $baseUrl = "http://91.204.239.44/broker-api/"; - - /** - * @var string $username - */ - private $username; - - /** - * @var string $password - */ - private $password; - - /** - * @var Client $client - */ - private $client; - - /** - * @var Request $request - */ - private $request; - - /** - * Playmobile constructor. - * @param $username - * @param $password - */ - public function __construct($username, $password) - { - $this->username = $username; - $this->password = $password; - parent::__construct(); - } - - - /** - * @return string - */ - public function getBaseUrl(): string - { - return $this->baseUrl; - } - - /** - * @param string $baseUrl - */ - public function setBaseUrl(string $baseUrl): void - { - $this->baseUrl = $baseUrl; - } - - /** - * @return string - */ - public function getUsername(): string - { - return $this->username; - } - - /** - * @param string $username - */ - public function setUsername(string $username): void - { - $this->username = $username; - } - - /** - * @return string - */ - public function getPassword(): string - { - return $this->password; - } - - /** - * @param string $password - */ - public function setPassword(string $password): void - { - $this->password = $password; - } - - /** - * @return Client - */ - public function getClient(): Client - { - return $this->client; - } - - /** - * @param Client $client - */ - public function setClient(Client $client): void - { - $this->client = $client; - } - - /** - * @return Request - */ - public function getRequest(): Request - { - return $this->request; - } - - /** - * @param Request $request - */ - public function setRequest(Request $request): void - { - $this->request = $request; - } - - - /** - * @param array $options - * @throws InvalidConfigException - */ - public function create($options = []) - { - if (isset($options['baseUrl'])) { - $this->baseUrl = $options['baseUrl']; - } - $this->client = new Client(['baseUrl' => $this->baseUrl]); - $this->request = $this->client->createRequest(); - } - - /** - * @param array $messages - * @return false|string - * @throws Exception - */ - public function send($messages = []) - { - $data = []; - foreach ($messages as $message) { - if (isset($message["recipient"]) && isset($message["message-id"]) && isset($message["originator"]) && isset($message["text"])) { - $data[] = [ - "recipient" => $message["recipient"], - "message-id" => $message["message-id"], - "sms" => [ - "originator" => $message["originator"], - "content" => [ - "text" => $message['text'] - ] - ] - ]; - } - } - - $response = $this->request - ->setUrl("send") - ->setMethod("POST") - ->addHeaders(['Authorization' => "Basic " . base64_encode($this->username . ":" . $this->password)]) - ->setFormat(Client::FORMAT_JSON) - ->addData([ - "messages" => $data - ]) - ->send(); - if ($response->isOk) { - return $response->content; - } - return false; - } -} diff --git a/composer.json b/composer.json index 3cc05fe..4e95414 100644 --- a/composer.json +++ b/composer.json @@ -1,24 +1,43 @@ { - "name": "mrmuminov/yii2-playmobile-uz", - "description": "Yii2 PlaymobileUz SMS-shlyuz ", - "type": "yii2-extension", - "keywords": ["yii2","extension","sms","shlyuz","send","play","mobile","uz","playmobile","playmobileuz","mrmuminov"], - "license": "Apache-2.0", - "authors": [ - { - "name": "Bahriddin Mo'minov", - "email": "darkshadeuz@gmail.com" - } - ], - "require": { - "yiisoft/yii2": "~2.0.0", - "php": "7.*", - "ext-curl": "*" - }, - "minimum-stability": "dev", - "autoload": { - "psr-4": { - "mrmuminov\\yii2playmobileuz\\": "" - } + "name": "mrmuminov/yii2-playmobile-uz", + "description": "Yii2 PlaymobileUz SMS-shlyuz ", + "type": "yii2-extension", + "keywords": [ + "yii2", + "extension", + "sms", + "shlyuz", + "send", + "play", + "mobile", + "uz", + "playmobile", + "playmobileuz", + "mrmuminov" + ], + "license": "Apache-2.0", + "authors": [ + { + "name": "Bahriddin Mo'minov", + "email": "darkshadeuz@gmail.com" } + ], + "minimum-stability": "dev", + "require": { + "php": "^8.2", + "ext-curl": "*", + "ext-json": "*", + "yiisoft/yii2": "^2.0.0", + "guzzlehttp/guzzle": "7.7.x-dev" + }, + "autoload": { + "psr-4": { + "mrmuminov\\yii2playmobileuz\\": "src/" + } + }, + "config": { + "allow-plugins": { + "yiisoft/yii2-composer": true + } + } } diff --git a/example/__autocomplete.php b/example/__autocomplete.php new file mode 100644 index 0000000..9bcd076 --- /dev/null +++ b/example/__autocomplete.php @@ -0,0 +1,16 @@ + 'app-playmobile', + 'basePath' => dirname(__DIR__), + 'components' => [ + 'playmobile' => [ + 'class' => Playmobile::class, + 'username' => "", + 'password' => "", + + ] + ], +])); + + +try { + + /** Create Send class and set attributes */ + $data = new Send(); + $data->sms = new Sms(); + $data->sms->originator = "3700"; // change, if you need + $data->sms->content = new SmsContent(); + $data->sms->content->text = "Test Message"; + $message = new Messages(); + $message->recipient = '998XXAAABBCC'; // Phone number + $message->messageId = 'unique-id'; // Your application Unique ID + $data->messages = [ + $message + ]; + + /** Set attributes with another way */ + // $data = new Send([ + // "sms" => new Sms([ + // "originator" => "3700", + // "content" => new SmsContent([ + // "text" => "Test Message", + // ]), + // ]), + // "messages" => [ + // new Messages([ + // "messageId" => 'unique-id', + // "recipient" => '998XXAAABBCC', + // ]), + // ] + // ]); + + $responseContent = Yii::$app->playmobile->send($data); + // Success + +} catch (Exception $e) { + var_dump($e->getCode()); + var_dump($e->getMessage()); +} \ No newline at end of file diff --git a/src/ErrorException.php b/src/ErrorException.php new file mode 100644 index 0000000..2fcd79e --- /dev/null +++ b/src/ErrorException.php @@ -0,0 +1,240 @@ +setCode($code); + $this->setMessage($this->getErrorMessage()); + parent::__construct($this->getMessage(), $this->getCode(), $previous); + } + + /** + * @param int $code + */ + public function setCode(int $code): void + { + $this->code = $code; + } + + /** + * @param string $message + */ + public function setMessage(string $message): void + { + $this->message = $message; + } + + /** + * @return string + */ + protected function getErrorMessage(): string + { + $errorList = [ + self::E_100 => "#100: Internal server erro | Внутренняя ошибка сервера", + self::E_101 => "#101: Syntax error | Синтаксическая ошибка", + self::E_102 => "#102: Account lock | Аккаунт клиента заблокирован", + self::E_103 => "#103: Empty channel | Не задан канал для отправки сообщений", + self::E_104 => "#104: Invalid priority | Указано некорректное значение параметра priority", + self::E_105 => "#105: Too much IDs | Передано слишком много идентификаторов сообщений", + self::E_202 => "#202: Empty recipient | Адрес получателя не задан (кроме канала email)", + self::E_204 => "#204: Empty email address | Адрес электронной почты получателя не задан (для канала email)", + self::E_205 => "#205: Empty message-id | Идентификатор сообщения не задан", + self::E_206 => "#206: Invalid variables | Указано некорректное значение параметра variables SMS-API 5", + self::E_301 => "#301: Invalid localtime | Указано некорректное значение параметра localtime", + self::E_302 => "#302: Invalid start-datetime | Указано некорректное значение параметра start-datetime", + self::E_303 => "#303: Invalid end-datetime | Указано некорректное значение параметра end-datetime", + self::E_304 => "#304: Invalid allowed-starttime | Указано некорректное значение параметра allowed-starttime", + self::E_305 => "#305: Invalid allowed-endtime | Указано некорректное значение параметра allowed-endtime", + self::E_306 => "#306: Invalid send-evenly | Указано некорректное значение параметра send-evenly", + self::E_401 => "#401: Empty originator | Адрес отправителя не указан", + self::E_402 => "#402: Empty application | Приложение не указано", + self::E_403 => "#403: Empty ttl | Значение ttl не указано (если задано несколько каналов отправки)", + self::E_404 => "#404: Empty content | Содержимое сообщения не указано", + self::E_405 => "#405: Content error | Неправильный формат содержимого контента", + self::E_406 => "#406: Invalid content | Недопустимое значение контента для указанного канала", + self::E_407 => "#407: Invalid ttl | Неправильно указано значение времени ожидания доставки", + self::E_408 => "#408: Invalid attached files | Прикрепленные файлы имеют слишком большой объем", + self::E_410 => "#410: Invalid retry-attempts | Неправильно указано значение количества попыток дозвона", + self::E_411 => "#411: Invalid retry-timeout | Неправильно указано значение времени повторного дозвона", + ]; + if (isset($errorList[$this->getCode()])) { + return $errorList[$this->getCode()]; + } + return $this->getCode(); + } + +} \ No newline at end of file diff --git a/src/ErrorResponse.php b/src/ErrorResponse.php new file mode 100644 index 0000000..d7f41b9 --- /dev/null +++ b/src/ErrorResponse.php @@ -0,0 +1,43 @@ +error_code; + } + + public function setErrorCode(string $error_code): void + { + $this->error_code = $error_code; + } + + public function getErrorMessage(): string + { + return $this->error_message; + } + + public function setErrorMessage(string $error_message): void + { + $this->error_message = $error_message; + } + +} \ No newline at end of file diff --git a/src/Playmobile.php b/src/Playmobile.php new file mode 100644 index 0000000..45e8a98 --- /dev/null +++ b/src/Playmobile.php @@ -0,0 +1,32 @@ + $this->baseUrl, + 'username' => $this->username, + 'password' => $this->password, + ]); + $broker->setContent($data->serialize()->serialized); + return $broker->send(); + } +} diff --git a/src/requests/BaseRequest.php b/src/requests/BaseRequest.php new file mode 100644 index 0000000..e785d3d --- /dev/null +++ b/src/requests/BaseRequest.php @@ -0,0 +1,152 @@ +request; + } + + public function setRequest(Request $request): void + { + $this->request = $request; + } + + /** + * @return string + */ + public function getContentType(): string + { + return $this->contentType; + } + + /** + * @param string $contentType + */ + public function setContentType(string $contentType): void + { + $this->contentType = $contentType; + } + + public function init(): void + { + $this->setClient(new Client([ + 'base_uri' => $this->baseUrl + ])); + } + + public function getBaseUrl(): string + { + return $this->baseUrl; + } + + public function setBaseUrl(string $baseUrl): void + { + $this->baseUrl = $baseUrl; + } + + public function setContent(array $content): static + { + $this->content = json_encode($content); + return $this; + } + + public function send(): string + { + try { + $response = $this->getClient()->post( + uri: $this->getPayload(), + options: [ + RequestOptions::AUTH => [ + $this->getUsername(), + $this->getPassword(), + ], + RequestOptions::HEADERS => [ + "Content-Type" => "application/json", + ], + RequestOptions::BODY => $this->content, + ] + + ); + return $response->getBody()->getContents(); + } catch (GuzzleException $e) { + echo "
";
+            print_r($e);
+            die;
+            $exception = new ErrorException($e->getCode());
+            if (!$exception->getMessage()) {
+                $exception->setMessage($e->getMessage());
+            }
+            throw $exception;
+        }
+    }
+
+    public function getClient(): Client
+    {
+        return $this->client;
+    }
+
+    public function setClient(Client $client): void
+    {
+        $this->client = $client;
+    }
+
+    public function getPayload(): string
+    {
+        return $this->payload;
+    }
+
+    public function setPayload(string $payload): void
+    {
+        $this->payload = $payload;
+    }
+
+    public function getUsername(): string
+    {
+        return $this->username;
+    }
+
+    public function setUsername(string $username): void
+    {
+        $this->username = $username;
+    }
+
+    public function getPassword(): string
+    {
+        return $this->password;
+    }
+
+    public function setPassword(string $password): void
+    {
+        $this->password = $password;
+    }
+
+}
\ No newline at end of file
diff --git a/src/requests/SendRequest.php b/src/requests/SendRequest.php
new file mode 100644
index 0000000..b20266e
--- /dev/null
+++ b/src/requests/SendRequest.php
@@ -0,0 +1,23 @@
+setContent(new Send(...));
+ * $response = $brokerSend->send();
+ *
+ * @package mrmuminov\yii2playmobileuz\requests
+ * @author MrMuminov <
+ * @since 2.0.0
+ *
+ * @property-write Send $content
+ */
+class SendRequest extends BaseRequest
+{
+    public string $payload = '/broker-api/send';
+}
\ No newline at end of file
diff --git a/src/types/BaseType.php b/src/types/BaseType.php
new file mode 100644
index 0000000..a772b7a
--- /dev/null
+++ b/src/types/BaseType.php
@@ -0,0 +1,15 @@
+serialized = [];
+        if ($this->originator) $this->serialized['originator'] = $this->originator;
+        if ($this->ttl) $this->serialized['ttl'] = $this->ttl;
+        if ($this->content) $this->serialized['content'] = $this->content->serialize()->serialized;
+        if ($this->retryAttempts) $this->serialized['retry-attempts'] = $this->retryAttempts;
+        if ($this->retryTimeout) $this->serialized['retry-timeout'] = $this->retryTimeout;
+        return $this;
+    }
+
+    /**
+     * @param mixed $data
+     * @return self
+     */
+    public function unSerialize(mixed $data): self
+    {
+        if (isset($data['originator'])) {
+            $this->originator = $data['originator'];
+        }
+        if (isset($data['ttl'])) {
+            $this->ttl = $data['ttl'];
+        }
+        if (isset($data['content'])) {
+            $this->content = $data['content'];
+        }
+        if (isset($data['retry-attempts'])) {
+            $this->retryAttempts = $data['retry-attempts'];
+        }
+        if (isset($data['retry-timeout'])) {
+            $this->retryTimeout = $data['retry-timeout'];
+        }
+        return $this;
+    }
+
+}
\ No newline at end of file
diff --git a/src/types/CallContent.php b/src/types/CallContent.php
new file mode 100644
index 0000000..dd0ac25
--- /dev/null
+++ b/src/types/CallContent.php
@@ -0,0 +1,44 @@
+serialized = [];
+        if ($this->text) $this->serialized['text'] = $this->text;
+        if ($this->menu) $this->serialized['menu'] = $this->menu;
+        if ($this->file) $this->serialized['file'] = $this->file;
+        return $this;
+    }
+
+    public function unSerialize(mixed $data): self
+    {
+        if (isset($data['text'])) {
+            $this->text = $data['text'];
+        }
+        if (isset($data['menu'])) {
+            $this->menu = $data['menu'];
+        }
+        if (isset($data['file'])) {
+            $this->file = $data['file'];
+        }
+        return $this;
+    }
+
+}
\ No newline at end of file
diff --git a/src/types/Messages.php b/src/types/Messages.php
new file mode 100644
index 0000000..a2a83d7
--- /dev/null
+++ b/src/types/Messages.php
@@ -0,0 +1,86 @@
+serialized = [];
+        if ($this->recipient) $this->serialized['recipient'] = $this->recipient;
+        if ($this->messageId) $this->serialized['message-id'] = $this->messageId;
+        if ($this->templateId) $this->serialized['template-id'] = $this->templateId;
+        if ($this->priority) $this->serialized['priority'] = $this->priority;
+        if ($this->variables) $this->serialized['variables'] = $this->variables;
+        if ($this->timing) $this->serialized['timing'] = $this->timing->serialize()->serialized;
+        if ($this->sms) $this->serialized['sms'] = $this->sms->serialize()->serialized;
+        if ($this->call) $this->serialized['call'] = $this->call->serialize()->serialized;
+        return $this;
+    }
+
+    public function unSerialize(mixed $data): self
+    {
+        if (isset($data['recipient'])) {
+            $this->recipient = $data['recipient'];
+        }
+        if (isset($data['message-id'])) {
+            $this->messageId = $data['message-id'];
+        }
+        if (isset($data['template-id'])) {
+            $this->templateId = $data['template-id'];
+        }
+        if (isset($data['priority'])) {
+            $this->priority = $data['priority'];
+        }
+        if (isset($data['variables'])) {
+            $this->variables = $data['variables'];
+        }
+        if (isset($data['timing'])) {
+            $this->timing = $data['timing'];
+        }
+        if (isset($data['sms'])) {
+            $this->sms = $data['sms'];
+        }
+        if (isset($data['call'])) {
+            $this->call = $data['call'];
+        }
+        return $this;
+    }
+
+}
\ No newline at end of file
diff --git a/src/types/Send.php b/src/types/Send.php
new file mode 100644
index 0000000..389a2cc
--- /dev/null
+++ b/src/types/Send.php
@@ -0,0 +1,69 @@
+serialized = [];
+        if ($this->templateId) $this->serialized['template-id'] = $this->templateId;
+        if ($this->priority) $this->serialized['priority'] = $this->priority;
+        if ($this->timing) $this->serialized['timing'] = $this->timing?->serialize()->serialized;
+        if ($this->sms) $this->serialized['sms'] = $this->sms?->serialize()->serialized;
+        if ($this->call) $this->serialized['call'] = $this->call?->serialize()->serialized;
+        if (!empty($this->messages)) $this->serialized['messages'] = array_map(static function ($item) {
+            return $item->serialize()->serialized;
+        }, $this->messages);
+        return $this;
+    }
+
+    public function unSerialize(mixed $data): self
+    {
+        if (isset($data['template-id'])) {
+            $this->templateId = $data['template-id'];
+        }
+        if (isset($data['priority'])) {
+            $this->priority = $data['priority'];
+        }
+        if (isset($data['timing'])) {
+            $this->timing = $data['timing'];
+        }
+        if (isset($data['sms'])) {
+            $this->sms = $data['sms'];
+        }
+        if (isset($data['call'])) {
+            $this->call = $data['call'];
+        }
+        if (isset($data['messages'])) {
+            $this->messages = $data['messages'];
+        }
+        return $this;
+    }
+
+}
\ No newline at end of file
diff --git a/src/types/Sms.php b/src/types/Sms.php
new file mode 100644
index 0000000..1b9c5e1
--- /dev/null
+++ b/src/types/Sms.php
@@ -0,0 +1,42 @@
+serialized = [];
+        if ($this->originator) $this->serialized['originator'] = $this->originator;
+        if ($this->ttl) $this->serialized['ttl'] = $this->ttl;
+        if ($this->content) $this->serialized['content'] = $this->content->serialize()->serialized;
+        return $this;
+    }
+
+    public function unSerialize(mixed $data): self
+    {
+        if (isset($data['originator'])) {
+            $this->originator = $data['originator'];
+        }
+        if (isset($data['ttl'])) {
+            $this->ttl = $data['ttl'];
+        }
+        if (isset($data['content'])) {
+            $this->content = $data['content'];
+        }
+        return $this;
+    }
+
+}
\ No newline at end of file
diff --git a/src/types/SmsContent.php b/src/types/SmsContent.php
new file mode 100644
index 0000000..b91e11e
--- /dev/null
+++ b/src/types/SmsContent.php
@@ -0,0 +1,32 @@
+serialized = [];
+        if ($this->text) $this->serialized['text'] = $this->text;
+        return $this;
+    }
+
+    public function unSerialize(mixed $data): self
+    {
+        if (isset($data['text'])) {
+            $this->text = $data['text'];
+        }
+        return $this;
+    }
+
+}
\ No newline at end of file
diff --git a/src/types/Timing.php b/src/types/Timing.php
new file mode 100644
index 0000000..4d3835f
--- /dev/null
+++ b/src/types/Timing.php
@@ -0,0 +1,91 @@
+serialized = [];
+        if ($this->localtime) $this->serialized['localtime'] = $this->localtime;
+        if ($this->startDatetime) $this->serialized['start-datetime'] = $this->startDatetime;
+        if ($this->endDatetime) $this->serialized['end-datetime'] = $this->endDatetime;
+        if ($this->allowedStarttime) $this->serialized['allowed-starttime'] = $this->allowedStarttime;
+        if ($this->allowedEndtime) $this->serialized['allowed-endtime'] = $this->allowedEndtime;
+        if ($this->sendEvenly) $this->serialized['send-evenly'] = $this->sendEvenly;
+
+        return $this;
+    }
+
+    public function unSerialize(mixed $data): self
+    {
+        if (isset($data['localtime'])) {
+            $this->localtime = $data['localtime'];
+        }
+        if (isset($data['start-datetime'])) {
+            $this->startDatetime = $data['start-datetime'];
+        }
+        if (isset($data['end-datetime'])) {
+            $this->endDatetime = $data['end-datetime'];
+        }
+        if (isset($data['allowed-starttime'])) {
+            $this->allowedStarttime = $data['allowed-starttime'];
+        }
+        if (isset($data['allowed-endtime'])) {
+            $this->allowedEndtime = $data['allowed-endtime'];
+        }
+        if (isset($data['send-evenly'])) {
+            $this->sendEvenly = $data['send-evenly'];
+        }
+        return $this;
+    }
+
+}
\ No newline at end of file
diff --git a/src/types/TypeInterface.php b/src/types/TypeInterface.php
new file mode 100644
index 0000000..d4fe485
--- /dev/null
+++ b/src/types/TypeInterface.php
@@ -0,0 +1,13 @@
+