定制 codebar-ag/laravel-beekeeper 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

codebar-ag/laravel-beekeeper

最新稳定版本:v12.5

Composer 安装命令:

composer require codebar-ag/laravel-beekeeper

包简介

This is my package laravel-beekeeper

README 文档

README

Latest Version on Packagist Total Downloads GitHub-Tests GitHub Code Style PHPStan Dependency Review

This package was developed to give you a quick start to communicate with the Beekeeper API using token-based authentication. It provides a clean, type-safe interface to query the most common Beekeeper endpoints including artifacts, files, streams, and posts.

Navigation

🛠 Requirements

Version PHP Version Laravel Version
v12.0.0 ^8.2 - ^8.4 ^12.*

Installation

You can install the package via composer:

composer require codebar-ag/laravel-beekeeper

Then:

php artisan beekeeper:install

Or:

You can publish the config file with:

php artisan vendor:publish --tag="beekeeper-config"

This is the contents of the published config file:

<?php

return [
    'api_token' => env('BEEKEEPER_API_TOKEN'),
    'endpoint_prefix' => env('BEEKEEPER_ENDPOINT_PREFIX'),
    'cache_store' => env('BEEKEEPER_CACHE_STORE')
];

You should finally add the following to your .env file:

BEEKEEPER_API_TOKEN=your-api-token
BEEKEEPER_ENDPOINT_PREFIX=codebar.us
BEEKEEPER_CACHE_STORE=file

Usage

Authentication

This package uses token-based authentication with the Beekeeper API. You'll need to:

  1. Obtain an API token from your Beekeeper admin panel
  2. Set the BEEKEEPER_API_TOKEN environment variable
  3. Set your Beekeeper subdomain in BEEKEEPER_ENDPOINT_PREFIX

Get the connector

use CodebarAg\LaravelBeekeeper\Connectors\BeekeeperConnector;

// Using the env variables
$connector = new BeekeeperConnector;

// Passing the credentials manually
$connector = new BeekeeperConnector(
    apiToken: $yourApiToken,
    endpointPrefix: 'foobar.us',
);

Get The Status Of The Authenticated User

use CodebarAg\LaravelBeekeeper\Requests\GetStatusOfAuthenticatedUserRequest;

$response = $connector->send(new GetStatusOfAuthenticatedUserRequest);

List Artifacts

use CodebarAg\LaravelBeekeeper\Requests\ListArtifacts;

$response = $connector->send(new ListArtifacts(
    type: Type::FOLDER,
    sort: Sort::NAME_ASC,
    limit: 20,
));

Upload A File

use CodebarAg\LaravelBeekeeper\Requests\UploadAFileRequest;

$fileContent = file_get_contents('path-to/foobar.pdf');
$fileName = 'foobar.pdf';

$response = $connector->send(new UploadAFileRequest(
    fileContent: $fileContent,
    fileName: $fileName,
    usageType: 'attachment_file',
));

Create A Child To An Artifact

use CodebarAg\LaravelBeekeeper\Requests\CreateAChildToAnArtifact;
use CodebarAg\LaravelBeekeeper\Enums\Artifacts\Type;

$response = $connector->send(new CreateAChildToAnArtifact(
    artifactId: '12345678-abcd-efgh-9012-de00edbf7b0b',
    name: 'foobar.pdf',
    type: Type::FILE,
    parentId: '12345678-abcd-efgh-9012-de00edbf7b0b',
    metadata: [
        'mimeType' => 'image/png',
        'url' => 'https://foobar.us.beekeeper.io/api/2/files/key/12345678-abcd-efgh-9012-de00edbf7b0b',
        'userId' => '12345678-abcd-efgh-9012-de00edbf7b0b',
        'key' => '12345678-abcd-efgh-9012-de00edbf7b0b',
        'id' => 12345678,
        'size' => 123456,
    ],
    adjustArtifactName: false,
    expand: []
));

Delete An Artifact

use CodebarAg\LaravelBeekeeper\Requests\DeleteAnArtifact;

$response = $connector->send(new DeleteAnArtifact(
    artifactId: '12345678-abcd-efgh-9012-de00edbf7b0b'
));

// Returns a 204 No Content response on success

Create A Post In A Given Stream

use CodebarAg\LaravelBeekeeper\Requests\CreateAPostInAGivenStream;

// Basic post creation
$response = $connector->send(new CreateAPostInAGivenStream(
    streamId: '6002',
    text: 'Please indicate your preferred dates for next team event in the poll below. Thanks!'
));

// Advanced post with all options
$fileData = [
    'updated' => '2016-10-07T12:49:21',
    'name' => 'fair_play_rules.pdf',
    'created' => '2016-10-07T12:49:21',
    'url' => 'https://mytenant.beekeeper.io/file/665987/original/fair_play_rules.pdf',
    'userid' => '5cb9v45d-8i78-4v65-b5fd-81cgfac3ef17',
    'height' => 619,
    'width' => 700,
    'duration' => 315,
    'key' => 'f4fdaab0-d198-49b4-b1cc-dd85572d72f1',
    'media_type' => 'image/png',
    'usage_type' => 'attachment_image',
    'id' => 66598,
    'size' => 85
];

$response = $connector->send(new CreateAPostInAGivenStream(
    streamId: '6002',
    text: 'Please indicate your preferred dates for next team event in the poll below. Thanks!',
    html: '<p>Please <b>indicate</b> your preferred dates below.</p><p>Thanks!</p>',
    title: 'Hello guys!',
    labels: ['food', 'poll', 'events'],
    sticky: true,
    locked: true,
    reactionsDisabled: true,
    scheduledAt: '2019-08-24T14:15:22',
    files: [$fileData],
    media: [$fileData],
    options: [
        ['text' => 'This Friday'],
        ['text' => 'Monday next week']
    ],
    expand: ['user', 'stream']
));

$post = $response->dto(); // Returns a Post DTO

DTO Showcase

CodebarAg\LaravelBeekeeper\Data\Artifacts\Artifact {
    +id: "12345678-abcd-efgh-9012-de00edbf7b0b"                         // string
    +tenantId: "12345"                                                  // string
    +name: "Documents"                                                  // string
    +type: CodebarAg\LaravelBeekeeper\Enums\Artifacts\Type              // Type
    +parentId: null                                                     // string|null
    +metadata: Illuminate\Support\Collection                            // Collection
    +createdAt: Carbon\CarbonImmutable                                  // CarbonImmutable
    +updatedAt: Carbon\CarbonImmutable                                  // CarbonImmutable
    +breadcrumbs: Illuminate\Support\Collection                         // Collection
    +children: Illuminate\Support\Collection                            // Collection
    +acl: Illuminate\Support\Collection                                 // Collection
    +filterData: Illuminate\Support\Collection                          // Collection
}
CodebarAg\LaravelBeekeeper\Data\Configs\AuthenticatedUserStatus {
    +maxFileSize: 262144000                                             // int|null
    +maxFilesOnPost: 8                                                  // int|null
    +maxPhotoSize: 15728640                                             // int|null
    +maxMediaOnPost: 50                                                 // int|null
    +maxVideoSize: 524288000                                            // int|null
    +maxVideoSizeForAdmins: 2147483648                                  // int|null
    +maxVoiceRecordingLength: 900                                       // int|null
    +maxUsersInGroupChat: 200                                           // int|null
    +featureFlags: Illuminate\Support\Collection                        // Collection|null
    +integrations: Illuminate\Support\Collection                        // Collection|null
    +styling: Illuminate\Support\Collection                             // Collection|null
    +tracking: Illuminate\Support\Collection                            // Collection|null   
    +general: CodebarAg\LaravelBeekeeper\Data\Configs\General           // General|null
}
CodebarAg\LaravelBeekeeper\Data\Configs\General {
    +id: 12345                                                          // int
    +companyAccount: "12345678-abcd-efgh-9012-de00edbf7b0b"             // string
    +name: "foobar"                                                     // string
    +language: "en"                                                     // string
    +created: Carbon\CarbonImmutable                                    // CarbonImmutable
    +url: "https://foobar.us.beekeeper.io/"                             // string
    +tagline: "Welcome to Beekeeper!"                                   // string
    +fqdn: "foobar.us.beekeeper.io"                                     // string
    +supportEmail: ""                                                   // string
    +isDataSecurityContactSet: false                                    // bool
    +timezone: "Europe/London"                                          // string    
    +subdomain: "foobar"                                                // string
}
CodebarAg\LaravelBeekeeper\Data\Files\File {
    +name: "test-1.pdf"                                                                               // string
    +status: CodebarAg\LaravelBeekeeper\Enums\Files\Status                                            // Status|null
    +created: Carbon\CarbonImmutable                                                                  // CarbonImmutable
    +updated: Carbon\CarbonImmutable                                                                  // CarbonImmutable
    +url: "https://foobar.us.beekeeper.io/api/2/files/key/12345678-abcd-efgh-9012-de00edbf7b0b"       // string
    +userId: "12345678-abcd-efgh-9012-de00edbf7b0b"                                                   // string
    +height: null                                                                                     // int|null
    +width: null                                                                                      // int|null
    +key: "12345678-abcd-efgh-9012-de00edbf7b0b"                                                      // string
    +duration: null                                                                                   // int|null
    +mediaType: "application/pdf"                                                                     // string
    +usageType: CodebarAg\LaravelBeekeeper\Enums\Files\UsageType                                      // UsageType
    +id: 22268153                                                                                     // int                                 
    +size: 8570                                                                                       // int
    +versions: Illuminate\Support\Collection                                                          // Collection
}
CodebarAg\LaravelBeekeeper\Data\Files\FileVersion {
    +name: "test-1.pdf"                                                                               // string
    +url: "https://foobar.us.beekeeper.io/api/2/files/key/12345678-abcd-efgh-9012-de00edbf7b0b"      // string
    +height: null                                                                                     // int|null
    +width: null                                                                                      // int|null
}
CodebarAg\LaravelBeekeeper\Data\Streams\Post {
    +id: 2234                                                                                         // int
    +text: "Please indicate your preferred dates for next team event in the poll below. Thanks!"     // string|null
    +html: "<p>Please <b>indicate</b> your preferred dates below.</p><p>Thanks!</p>"                  // string|null
    +title: "Hello guys!"                                                                             // string|null
    +labels: Illuminate\Support\Collection                                                            // Collection
    +sticky: true                                                                                     // bool
    +likeCount: 42                                                                                    // int
    +streamId: 6002                                                                                   // int
    +digest: 1                                                                                        // int
    +userId: "5cb9v45d-8i78-4v65-b5fd-81cgfac3ef17"                                                  // string
    +uuid: "731b28bc-7f10-4b68-a089-fc672abc9955"                                                    // string
    +commentCount: 2                                                                                  // int
    +reportCount: 0                                                                                   // int
    +source: "beekeeper"                                                                              // string
    +voteCount: 12                                                                                    // int
    +moderated: true                                                                                  // bool
    +photo: "https://d6698txzbomp3.cloudfront.net/72e3b7d4-c6a4-47e9-8f81-7b7d10bdd84a"              // string|null
    +languageConfidence: 0.86                                                                         // float|null
    +type: "post"                                                                                     // string
    +metadata: "string"                                                                               // string|null
    +profile: "peter_smith"                                                                           // string|null
    +edited: true                                                                                     // bool
    +displayNameExtension: "General Manager"                                                          // string|null
    +subscribedByUser: true                                                                           // bool
    +reportable: true                                                                                 // bool
    +anonymous: true                                                                                  // bool
    +displayName: "John Smith"                                                                        // string|null
    +unread: true                                                                                     // bool
    +locked: true                                                                                     // bool
    +reactionsDisabled: true                                                                          // bool
    +name: "Peter Smith"                                                                              // string|null
    +language: "en"                                                                                   // string|null
    +languageInformation: array                                                                       // array|null
    +created: Carbon\CarbonImmutable                                                                  // CarbonImmutable|null
    +postedByUser: true                                                                               // bool
    +avatar: "https://dz343oy86h947.cloudfront.net/business/neutral/normal/05.png"                    // string|null
    +reportedByUser: true                                                                             // bool
    +likedByUser: true                                                                                // bool
    +mentions: Illuminate\Support\Collection                                                          // Collection
    +mentionsDetails: array                                                                           // array|null
    +scheduledAt: Carbon\CarbonImmutable                                                              // CarbonImmutable|null
    +status: "published"                                                                              // string|null
    +files: Illuminate\Support\Collection                                                             // Collection
    +photos: Illuminate\Support\Collection                                                            // Collection
    +videos: Illuminate\Support\Collection                                                            // Collection
    +media: Illuminate\Support\Collection                                                             // Collection
    +options: Illuminate\Support\Collection                                                           // Collection
    +stateId: "2017-06-19T08:49:53"                                                                  // string|null
}
CodebarAg\LaravelBeekeeper\Data\Streams\Stream {
    +id: "12345678-abcd-efgh-9012-de00edbf7b0b"                                                      // string
    +tenantId: "12345"                                                                                // string
    +name: "General Discussion"                                                                       // string
    +description: "General discussion stream for all team members"                                    // string|null
    +type: CodebarAg\LaravelBeekeeper\Enums\Streams\Type                                             // Type|null
    +isPublic: true                                                                                   // bool
    +isArchived: false                                                                                // bool
    +createdAt: Carbon\CarbonImmutable                                                                // CarbonImmutable|null
    +updatedAt: Carbon\CarbonImmutable                                                                // CarbonImmutable|null
    +createdBy: "12345678-abcd-efgh-9012-de00edbf7b0b"                                               // string|null
    +updatedBy: "12345678-abcd-efgh-9012-de00edbf7b0b"                                               // string|null
    +posts: Illuminate\Support\Collection                                                             // Collection
    +subscribers: Illuminate\Support\Collection                                                       // Collection
    +permissions: Illuminate\Support\Collection                                                       // Collection
    +metadata: Illuminate\Support\Collection                                                          // Collection
}

Available Enums

The package provides several enums for type safety and better code organization:

Artifact Enums

use CodebarAg\LaravelBeekeeper\Enums\Artifacts\Type;
use CodebarAg\LaravelBeekeeper\Enums\Artifacts\Sort;

// Artifact types
Type::FOLDER
Type::FILE

// Sorting options
Sort::NAME_ASC
Sort::NAME_DESC
Sort::CREATED_ASC
Sort::CREATED_DESC

File Enums

use CodebarAg\LaravelBeekeeper\Enums\Files\Status;
use CodebarAg\LaravelBeekeeper\Enums\Files\UsageType;

// File status
Status::PROCESSING
Status::READY
Status::ERROR

// Usage types
UsageType::ATTACHMENT_IMAGE
UsageType::ATTACHMENT_FILE
UsageType::ATTACHMENT_VIDEO
UsageType::AVATAR
UsageType::COVER_IMAGE
UsageType::LOGO
// ... and more

Stream Enums

use CodebarAg\LaravelBeekeeper\Enums\Streams\Type;

// Stream types
Type::PUBLIC
Type::PRIVATE
Type::ANNOUNCEMENT
Type::DISCUSSION
Type::PROJECT
Type::DEPARTMENT
Type::TEAM

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 296
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-03-20

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固