All Projects → golang-design → tgstore

golang-design / tgstore

Licence: MIT license
An encrypted object storage system with unlimited space backed by Telegram.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to tgstore

Oio Sds
High Performance Software-Defined Object Storage for Big Data and AI, that supports Amazon S3 and Openstack Swift
Stars: ✭ 465 (+573.91%)
Mutual labels:  object-storage
Akubra
Simple solution to keep a independent S3 storages in sync
Stars: ✭ 79 (+14.49%)
Mutual labels:  object-storage
upload-file-to-backblaze-b2-from-browser-example
Demonstrates calling the b2_upload_file Backblaze B2 Cloud Storage API from a web browser using AJAX.
Stars: ✭ 28 (-59.42%)
Mutual labels:  object-storage
Lakefs
Git-like capabilities for your object storage
Stars: ✭ 847 (+1127.54%)
Mutual labels:  object-storage
Leto
A key value storage example powered by hashicorp raft and BadgerDB
Stars: ✭ 73 (+5.8%)
Mutual labels:  object-storage
Seaweedfs
SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! Blob store has O(1) disk seek, cloud tiering. Filer supports Cloud Drive, cross-DC active-active replication, Kubernetes, POSIX FUSE mount, S3 API, S3 Gateway, Hadoop, WebDAV, encryption, Erasure Coding.
Stars: ✭ 13,380 (+19291.3%)
Mutual labels:  object-storage
Parse Server
API server module for Node/Express
Stars: ✭ 19,165 (+27675.36%)
Mutual labels:  object-storage
php object storage
对象存储PHP简易代码,支持简单上传,删除,列表功能。支持网易,腾讯,七牛,UCloud,亚马逊
Stars: ✭ 17 (-75.36%)
Mutual labels:  object-storage
Sfs
The distributed object storage server used by PitchPoint Solutions to securely store billions of large and small files using minimal resources. Object data is stored in replicated volumes implemented like Facebooks Haystack Object Store. Object metadata which essentially maps an object name to a volume position is stored in an elasticsearch index.
Stars: ✭ 78 (+13.04%)
Mutual labels:  object-storage
qscamel
qscamel is a command line tool to migrate data between different endpoint efficiently.
Stars: ✭ 34 (-50.72%)
Mutual labels:  object-storage
Minio Hs
MinIO Client SDK for Haskell
Stars: ✭ 39 (-43.48%)
Mutual labels:  object-storage
Cloudserver
Zenko CloudServer, an open-source Node.js implementation of the Amazon S3 protocol on the front-end and backend storage capabilities to multiple clouds, including Azure and Google.
Stars: ✭ 1,167 (+1591.3%)
Mutual labels:  object-storage
Dosa
DOSA is a data object abstraction layer
Stars: ✭ 172 (+149.28%)
Mutual labels:  object-storage
Nitrite Java
Java embedded nosql document store
Stars: ✭ 538 (+679.71%)
Mutual labels:  object-storage
ufile-gosdk
UCloud 对象存储官方 SDK。
Stars: ✭ 34 (-50.72%)
Mutual labels:  object-storage
Cortx
CORTX Community Object Storage is 100% open source object storage uniquely optimized for mass capacity storage devices.
Stars: ✭ 426 (+517.39%)
Mutual labels:  object-storage
Storj
Ongoing Storj v3 development. Decentralized cloud object storage that is affordable, easy to use, private, and secure.
Stars: ✭ 1,278 (+1752.17%)
Mutual labels:  object-storage
python-ecsclient
Python library for interacting with the Dell ECS Management API
Stars: ✭ 12 (-82.61%)
Mutual labels:  object-storage
minio-dart
Unofficial MinIO Dart Client SDK that provides simple APIs to access any Amazon S3 compatible object storage server.
Stars: ✭ 42 (-39.13%)
Mutual labels:  object-storage
ossperf
A lightweight tool for analyzing the performance and data integrity of object-based storage services
Stars: ✭ 67 (-2.9%)
Mutual labels:  object-storage

TGStore

PkgGoDev

An encrypted object storage system with unlimited space backed by Telegram.

Please only upload what you really need to upload, don't abuse any system.

Features

Installation

Open your terminal and execute

$ go get golang.design/x/tgstore

done.

The only requirement is the Go, at least v1.16.

Hello, 世界

Create a file named hello.go

package main

import (
	"context"
	"crypto/rand"
	"fmt"
	"io"
	"log"
	"strings"
	"time"

	"golang.design/x/tgstore"
	"golang.org/x/crypto/chacha20poly1305"
)

func main() {
	tgs := tgstore.New()
	tgs.BotToken = "<your-telegram-bot-token"
	tgs.ChatID = 1234567890

	objectSecretKey := make([]byte, chacha20poly1305.KeySize)
	if _, err := rand.Read(objectSecretKey); err != nil {
		log.Fatal(err)
	}

	startTime := time.Now()

	objectID, err := tgs.Upload(
		context.TODO(),
		objectSecretKey,
		strings.NewReader("Hello, 世界"),
	)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println("Upload time:", time.Since(startTime))

	startTime = time.Now()

	objectReader, err := tgs.Download(
		context.TODO(),
		objectSecretKey,
		objectID,
	)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println("Download time:", time.Since(startTime))

	startTime = time.Now()

	b, err := io.ReadAll(objectReader)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println("Read time:", time.Since(startTime))

	fmt.Println("Content:", string(b))
}

and run it

$ go run hello.go

then check what your terminal outputs.

Community

If you want to discuss TGStore, or ask questions about it, simply post questions or ideas here.

Contributing

If you want to help build TGStore, simply follow this to send pull requests here.

License

This project is licensed under the MIT License.

License can be found here.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].