ntk-cms-api
v20.25.52
Published
Ntk Cms Api And Model For Typscript
Readme
NTK CMS API Library
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
- Contact: ntk.ir
- Documentation: Check the main README.md
Note: This library is part of the NTK CMS Angular Libraries collection. For more information, see the main project README.
