ntk-cms-api
Version:
Ntk Cms Api And Model For Typscript
384 lines (294 loc) โข 9.12 kB
Markdown
and data models for CMS operations
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.
```bash
npm install ntk-cms-api
```
- **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
- **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
- **SMS Service** - SMS notifications
- **Payment Service** - Payment processing
- **Ticketing Service** - Support ticket system
- **Web Designer Service** - Website builder tools
```typescript
import { NgModule } from "@angular/core";
import { HttpClientModule } from "@angular/common/http";
import { NtkCmsApiModule } from "ntk-cms-api";
@NgModule({
imports: [HttpClientModule, NtkCmsApiModule],
})
export class AppModule {}
```
```typescript
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");
}
}
```
```typescript
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;
}
}
}
```
```typescript
interface NewsModel {
id?: string;
title: string;
description?: string;
body?: string;
linkMainImageId?: number;
linkMainImageIdSrc?: string;
createdDate?: Date;
updatedDate?: Date;
// ... other properties
}
```
```typescript
interface BlogModel {
id?: string;
title: string;
description?: string;
body?: string;
linkMainImageId?: number;
linkMainImageIdSrc?: string;
createdDate?: Date;
updatedDate?: Date;
// ... other properties
}
```
- `ServiceGetAll()` - Get all news articles
- `ServiceGetById(id: string)` - Get news by ID
- `ServiceAdd(model: NewsModel)` - Create new news
- `ServiceEdit(model: NewsModel)` - Update news
- `ServiceDelete(id: string)` - Delete news
- `ServiceGetAll()` - Get all blog posts
- `ServiceGetById(id: string)` - Get blog by ID
- `ServiceAdd(model: BlogModel)` - Create new blog
- `ServiceEdit(model: BlogModel)` - Update blog
- `ServiceDelete(id: string)` - Delete blog
```typescript
import { TokenService } from "ntk-cms-api";
export class AuthService {
constructor(private tokenService: TokenService) {}
async login(username: string, password: string): Promise<boolean> {
try {
const result = await this.tokenService.ServiceAccessToken(username, password).toPromise();
if (result.isSuccess) {
localStorage.setItem("token", result.token);
return true;
}
return false;
} catch (error) {
console.error("Login error:", error);
return false;
}
}
logout(): void {
localStorage.removeItem("token");
}
isAuthenticated(): boolean {
return !!localStorage.getItem("token");
}
}
```
```typescript
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 [];
}
}
}
```
The API library supports multiple languages through the translation service:
```typescript
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);
}
}
```
```typescript
// environment.ts
export const environment = {
production: false,
apiUrl: "https://api.example.com",
apiVersion: "v1",
timeout: 30000,
};
```
```typescript
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",
});
}
}
```
```typescript
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();
});
});
```
```typescript
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 handleUnauthorized(): void {
// Redirect to login or refresh token
localStorage.removeItem("token");
// Redirect to login page
}
private handleForbidden(): void {
// Handle forbidden access
console.error("Access forbidden");
}
}
```
- Enhanced API services and models
- Improved error handling
- Added new content management features
- Updated TypeScript definitions
- Bug fixes and performance improvements
- Added new service methods
- Enhanced authentication system
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests for new features
5. Submit a pull request
This library is licensed under the ISC License.
For support and questions:
- Create an issue on GitHub
- Contact: [ntk.ir](https://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.
**ntk-cms-api** - Complete API service layer