ntk-cms-api
Version:
Complete API service layer and data models for CMS operations with TypeScript support
397 lines (293 loc) โข 10.1 kB
Markdown
<div align="center">




**Complete API service layer and data models for CMS operations**
[](
</div>
---
**ntk-cms-api** - Complete API service layer 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 { 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 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](https://github.com/akaravi/npm-ntk-cms-angular/issues)
- ๐ **Check documentation** - See [main README.md](../../README.md)
- ๐ฌ **Contact** - [ntk.ir](https://ntk.ir)
Install from npm:
```bash
npm install ntk-cms-api
```
**Package:** [npmjs.com/package/ntk-cms-api](https://www.npmjs.com/package/ntk-cms-api)
This library is part of the **NTK CMS Angular Libraries** collection:
- [ntk-cms-filemanager](../../README.md
- [ntk-cms-fileuploader](../../README.md
- [ngx-ntk-icon-picker](../../README.md
- [ngx-ntk-file-picker](../../README.md
- [ngx-ntk-mat-color-picker](../../README.md
- [ngx-ntk-cron-editor](../../README.md
- [ngx-ntk-query-builder](../../README.md
- [ngx-ntk-smart-module](../../README.md
For more information, see the [main project README](../../README.md).
---
<div align="center">
**Made with โค๏ธ by [NTK Team](https://ntk.ir)**
[โญ Star us on GitHub](https://github.com/akaravi/npm-ntk-cms-angular) โข [๐ฆ View on npm](https://www.npmjs.com/package/ntk-cms-api)
</div>