ntk-cms-api
v20.26.2
Published
Complete API service layer and data models for CMS operations with TypeScript support
Maintainers
Readme
NTK CMS API Library
Complete API service layer and data models for CMS operations
Installation • Usage • API Reference • Examples
ntk-cms-api - Complete API service layer and data models for CMS operations
📋 Overview
The NTK CMS API library provides a comprehensive set of services, models, and utilities for building Content Management System applications. It includes complete API integration, data models, and business logic for various CMS modules.
🚀 Installation
npm install ntk-cms-api📦 Features
Core Services
- Main Service - Core API operations and configuration
- Log Service - Logging and error handling
- Token Service - Authentication and authorization
- File Service - File management operations
- Link Service - Link management and routing
Content Management
- News Service - News article management
- Blog Service - Blog post management
- Catalog Service - Product catalog management
- Estate Service - Real estate management
- Member Service - User and member management
Additional Services
- SMS Service - SMS notifications
- Payment Service - Payment processing
- Ticketing Service - Support ticket system
- Web Designer Service - Website builder tools
🔧 Usage
Basic Setup
import { NgModule } from "@angular/core";
import { HttpClientModule } from "@angular/common/http";
import { NtkCmsApiModule } from "ntk-cms-api";
@NgModule({
imports: [HttpClientModule, NtkCmsApiModule],
})
export class AppModule {}Configure API
import { NtkCmsApiService } from "ntk-cms-api";
export class AppComponent {
constructor(private apiService: NtkCmsApiService) {
// Set API configuration
this.apiService.setApiUrl("https://api.example.com");
this.apiService.setToken("your-auth-token");
}
}Using Services
import { NewsService, NewsModel } from "ntk-cms-api";
export class NewsComponent {
constructor(private newsService: NewsService) {}
async getNews(): Promise<NewsModel[]> {
try {
const result = await this.newsService.ServiceGetAll().toPromise();
return result.listItems || [];
} catch (error) {
console.error("Error fetching news:", error);
return [];
}
}
async createNews(news: NewsModel): Promise<boolean> {
try {
const result = await this.newsService.ServiceAdd(news).toPromise();
return result.isSuccess;
} catch (error) {
console.error("Error creating news:", error);
return false;
}
}
}📚 API Reference
Core Models
NewsModel
interface NewsModel {
id?: string;
title: string;
description?: string;
body?: string;
linkMainImageId?: number;
linkMainImageIdSrc?: string;
createdDate?: Date;
updatedDate?: Date;
// ... other properties
}BlogModel
interface BlogModel {
id?: string;
title: string;
description?: string;
body?: string;
linkMainImageId?: number;
linkMainImageIdSrc?: string;
createdDate?: Date;
updatedDate?: Date;
// ... other properties
}Service Methods
NewsService
ServiceGetAll()- Get all news articlesServiceGetById(id: string)- Get news by IDServiceAdd(model: NewsModel)- Create new newsServiceEdit(model: NewsModel)- Update newsServiceDelete(id: string)- Delete news
BlogService
ServiceGetAll()- Get all blog postsServiceGetById(id: string)- Get blog by IDServiceAdd(model: BlogModel)- Create new blogServiceEdit(model: BlogModel)- Update blogServiceDelete(id: string)- Delete blog
🔐 Authentication
Token Management
📁 File Management
File Operations
import { FileService, FileModel } from "ntk-cms-api";
export class FileComponent {
constructor(private fileService: FileService) {}
async uploadFile(file: File): Promise<FileModel | null> {
try {
const formData = new FormData();
formData.append("file", file);
const result = await this.fileService.ServiceUploadFile(formData).toPromise();
return result.isSuccess ? result.item : null;
} catch (error) {
console.error("Upload error:", error);
return null;
}
}
async getFiles(): Promise<FileModel[]> {
try {
const result = await this.fileService.ServiceGetAll().toPromise();
return result.listItems || [];
} catch (error) {
console.error("Error fetching files:", error);
return [];
}
}
}🌐 Internationalization
The API library supports multiple languages through the translation service:
import { TranslateService } from "ntk-cms-api";
export class AppComponent {
constructor(private translateService: TranslateService) {
// Set default language
this.translateService.setDefaultLang("en");
this.translateService.use("en");
}
changeLanguage(lang: string): void {
this.translateService.use(lang);
}
}🔧 Configuration
Environment Setup
// environment.ts
export const environment = {
production: false,
apiUrl: "https://api.example.com",
apiVersion: "v1",
timeout: 30000,
};Service Configuration
import { NtkCmsApiService } from "ntk-cms-api";
export class AppComponent {
constructor(private apiService: NtkCmsApiService) {
// Configure API service
this.apiService.setApiUrl(environment.apiUrl);
this.apiService.setTimeout(environment.timeout);
// Set default headers
this.apiService.setDefaultHeaders({
"Content-Type": "application/json",
Accept: "application/json",
});
}
}🧪 Testing
Unit Tests
import { TestBed } from "@angular/core/testing";
import { HttpClientTestingModule } from "@angular/common/http/testing";
import { NewsService } from "ntk-cms-api";
describe("NewsService", () => {
let service: NewsService;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [NewsService],
});
service = TestBed.inject(NewsService);
});
it("should be created", () => {
expect(service).toBeTruthy();
});
it("should fetch news articles", async () => {
const result = await service.ServiceGetAll().toPromise();
expect(result).toBeDefined();
});
});📊 Error Handling
Global Error Handler
import { Injectable } from "@angular/core";
import { HttpErrorResponse } from "@angular/common/http";
import { NtkCmsApiService } from "ntk-cms-api";
@Injectable()
export class GlobalErrorHandler {
constructor(private apiService: NtkCmsApiService) {}
handleError(error: HttpErrorResponse): void {
if (error.status === 401) {
// Handle unauthorized access
this.handleUnauthorized();
} else if (error.status === 403) {
// Handle forbidden access
this.handleForbidden();
} else {
// Handle other errors
console.error("API Error:", error);
}
}
private handleForbidden(): void {
// Handle forbidden access
console.error("Access forbidden");
}
}🔄 Version History
v18.26.17
- Enhanced API services and models
- Improved error handling
- Added new content management features
- Updated TypeScript definitions
v18.26.16
- Bug fixes and performance improvements
- Added new service methods
- Enhanced authentication system
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new features
- Submit a pull request
📄 License
This library is licensed under the ISC License.
🆘 Support
For support and questions:
- 📝 Create an issue on GitHub
- 📚 Check documentation - See main README.md
- 💬 Contact - ntk.ir
📦 npm Package
Install from npm:
npm install ntk-cms-apiPackage: npmjs.com/package/ntk-cms-api
🔗 Related Libraries
This library is part of the NTK CMS Angular Libraries collection:
- ntk-cms-filemanager - File management system
- ntk-cms-fileuploader - File upload component
- ngx-ntk-icon-picker - Icon selection component
- ngx-ntk-file-picker - Advanced file picker
- ngx-ntk-mat-color-picker - Material color picker
- ngx-ntk-cron-editor - Cron expression editor
- ngx-ntk-query-builder - Visual query builder
- ngx-ntk-smart-module - Modal and loader system
For more information, see the main project README.
Made with ❤️ by NTK Team
