{"id":51060011,"url":"https://github.com/furkancosgun/abap-filetype","last_synced_at":"2026-06-23T01:01:10.847Z","repository":{"id":361915473,"uuid":"1256421720","full_name":"furkancosgun/abap-filetype","owner":"furkancosgun","description":"ABAP File Type Detector","archived":false,"fork":false,"pushed_at":"2026-06-01T19:16:55.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T21:10:17.372Z","etag":null,"topics":["abap","abapgit","abaplint","filetype"],"latest_commit_sha":null,"homepage":"","language":"ABAP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/furkancosgun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-01T19:04:49.000Z","updated_at":"2026-06-01T19:16:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/furkancosgun/abap-filetype","commit_stats":null,"previous_names":["furkancosgun/abap-filetype"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/furkancosgun/abap-filetype","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkancosgun%2Fabap-filetype","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkancosgun%2Fabap-filetype/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkancosgun%2Fabap-filetype/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkancosgun%2Fabap-filetype/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/furkancosgun","download_url":"https://codeload.github.com/furkancosgun/abap-filetype/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkancosgun%2Fabap-filetype/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34671045,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abap","abapgit","abaplint","filetype"],"created_at":"2026-06-23T01:01:10.092Z","updated_at":"2026-06-23T01:01:10.835Z","avatar_url":"https://github.com/furkancosgun.png","language":"ABAP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ABAP File Type Detector\n\nAn ABAP file type detection library that identifies file formats by reading **magic byte** signatures. Detects 75+ formats and classifies them into categories (image, video, audio, archive, document, font, application).\n\n## Features\n\n- **75+ file format** support\n- Magic byte/signature based detection\n- MIME type and category classification\n- Static API - no instance required\n- Extensible architecture (custom detectors can be added)\n- Pure ABAP Objects\n\n## Usage\n\n```abap\n\" Detect file type\nDATA(lo_type) = zcl_filetype_detector=\u003edetect( lv_buffer ).\n\n\" Get extension\nDATA(lv_ext) = lo_type-\u003eget_extension( ).  \" 'jpg', 'png', 'pdf'...\n\n\" Get MIME type\nDATA(lv_mime) = lo_type-\u003eget_mime_type( ). \" 'image/jpeg'\n\n\" Category checks\nlo_type-\u003eis_image( )\nlo_type-\u003eis_video( )\nlo_type-\u003eis_audio( )\nlo_type-\u003eis_archive( )\nlo_type-\u003eis_document( )\nlo_type-\u003eis_font( )\nlo_type-\u003eis_application( )\n\n\" Convenience methods\nzcl_filetype_detector=\u003eis_image( lv_buffer )\nzcl_filetype_detector=\u003eis_detected( lv_buffer )\n\n\" Extension/MIME query\nzcl_filetype_detector=\u003eis_supported( 'jpg' )\nzcl_filetype_detector=\u003eis_mime_supported( 'image/jpeg' )\nzcl_filetype_detector=\u003eget_type( 'jpg' )\n\n\" List all possible types (multiple matches possible)\nlt_types = zcl_filetype_detector=\u003epossible_types( lv_buffer )\n```\n\n## Supported Formats\n\n| Category | Formats |\n|----------|---------|\n| **Image** | AVIF, BMP, CR2, DWG, EXR, GIF, HEIF, ICO, JP2, JPG, JXR, PNG, PSD, TIF, WebP |\n| **Video** | 3GP, AVI, FLV, M4V, MKV, MOV, MP4, MPG, WebM, WMV |\n| **Audio** | AAC, AIFF, AMR, FLAC, M4A, MID, MP3, OGG, WAV |\n| **Archive** | 7Z, AR, BZ2, CAB, CRX, DEB, EPUB, GZ, ISO, LZ, Mach-O, NES, PARQUET, RAR, RPM, TAR, XZ, Z, ZIP, ZST |\n| **Document** | DOC, DOCX, ODP, ODS, ODT, PDF, PPT, PPTX, PS, RTF, XLS, XLSX |\n| **Font** | EOT, OTF, TTF, WOFF, WOFF2 |\n| **Application** | DEX, DEY, ELF, EXE, Mach-O, SWF, SQLite, WASM |\n\n## Development\n\n### Requirements\n\n- Node.js 16+\n- npm\n\n### Setup\n\n```bash\nnpm install\n```\n\n### Lint\n\n```bash\nnpm run lint\n```\n\n### Test\n\n```bash\nnpm run unit\n```\n\n## Extending\n\nTo add a new file type:\n\n1. Create a class implementing `zif_filetype_detector`\n2. Register the detector in `zcl_filetype_detector=\u003eclass_constructor`\n\n```abap\nCLASS zcl_filetype_xyz DEFINITION PUBLIC FINAL CREATE PUBLIC.\n  PUBLIC SECTION.\n    INTERFACES zif_filetype_detector.\nENDCLASS.\n\nCLASS zcl_filetype_xyz IMPLEMENTATION.\n  METHOD zif_filetype_detector~detect.\n    rv_detected = xsdbool( iv_buffer+0(4) = 'XXXXXX' ).\n  ENDMETHOD.\nENDCLASS.\n```\n\n```abap\n\" Inside class_constructor:\nadd_detector( io_type     = zcl_filetype_type=\u003enew_type( iv_ext  = 'xyz'\n                                                         iv_mime = 'application/x-xyz' )\n              io_detector = NEW zcl_filetype_xyz( ) ).\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurkancosgun%2Fabap-filetype","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffurkancosgun%2Fabap-filetype","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurkancosgun%2Fabap-filetype/lists"}