From 5ac1f8dd62522f3b59e25d68ab00006337972675 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 13 Jul 2022 16:53:14 +0200 Subject: [PATCH] Use LndHub capitalization consistently --- README.md | 8 ++++---- docs/docs.go | 2 +- docs/swagger.json | 2 +- docs/swagger.yaml | 2 +- lib/service/invoicesubscription.go | 2 +- main.go | 2 +- notes.md | 8 ++++---- static/img/logo.png | Bin 8324 -> 2808 bytes 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 7de1e3dd..da8dc4ac 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -
- LNDHub.go -
+# LndHub.go -# Wrapper for Lightning Network Daemon (lnd) ⚡ +![LndHub.go](static/img/logo.png) + +Wrapper for Lightning Network Daemon (lnd) ⚡ It provides separate accounts with minimum trust for end users. Live deployment at [ln.getalby.com](https://ln.getalby.com). diff --git a/docs/docs.go b/docs/docs.go index 93a16188..29c881ef 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -720,7 +720,7 @@ var SwaggerInfo = &swag.Spec{ Host: "", BasePath: "/", Schemes: []string{"https", "http"}, - Title: "LNDhub.go", + Title: "LndHub.go", Description: "Accounting wrapper for the Lightning Network providing separate accounts for end-users.", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, diff --git a/docs/swagger.json b/docs/swagger.json index 9c4eb2d5..ea9aa1a3 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -6,7 +6,7 @@ "swagger": "2.0", "info": { "description": "Accounting wrapper for the Lightning Network providing separate accounts for end-users.", - "title": "LNDhub.go", + "title": "LndHub.go", "contact": { "name": "Alby", "url": "https://getalby.com", diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 5056fcf3..b3b83296 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -180,7 +180,7 @@ info: license: name: GNU GPLv3 url: https://www.gnu.org/licenses/gpl-3.0.en.html - title: LNDhub.go + title: LndHub.go version: 0.9.0 paths: /auth: diff --git a/lib/service/invoicesubscription.go b/lib/service/invoicesubscription.go index 6a2ccfca..a2019c75 100644 --- a/lib/service/invoicesubscription.go +++ b/lib/service/invoicesubscription.go @@ -188,7 +188,7 @@ func (svc *LndhubService) createKeysendInvoice(ctx context.Context, rawInvoice * } userLoginCustomRecord := rawInvoice.Htlcs[0].CustomRecords[TLV_WALLET_ID] //Find user. Our convention here is that the TLV - //record should contain the user's LNDhub login string + //record should contain the user's login string //(LND already returns the decoded string so there is no need to hex-decode it) user, err := svc.FindUserByLogin(ctx, string(userLoginCustomRecord)) if err != nil { diff --git a/main.go b/main.go index fa4bd98e..54183b71 100644 --- a/main.go +++ b/main.go @@ -42,7 +42,7 @@ var indexHtml string //go:embed static/* var staticContent embed.FS -// @title LNDhub.go +// @title LndHub.go // @version 0.9.0 // @description Accounting wrapper for the Lightning Network providing separate accounts for end-users. diff --git a/notes.md b/notes.md index b11a5274..f5abf5e9 100644 --- a/notes.md +++ b/notes.md @@ -1,8 +1,8 @@ # Rebuilding LndHub -Goal of this project is to build a simple accounting system with a [LNDHub](https://github.com/BlueWallet/LndHub) compatible API that focusses on simplicity, maintainability and ease of deployment. +Goal of this project is to build a simple accounting system with a [LndHub](https://github.com/BlueWallet/LndHub) compatible API that focusses on simplicity, maintainability and ease of deployment. -[LNDHub](https://github.com/BlueWallet/LndHub) is a simple accounting system for LND. It allows users to send and receive lightning payments. Through the API people can access funds through a shared lightning node. (see overview.png diagram) +[LndHub](https://github.com/BlueWallet/LndHub) is a simple accounting system for LND. It allows users to send and receive lightning payments. Through the API people can access funds through a shared lightning node. (see overview.png diagram) Some design goals: @@ -17,7 +17,7 @@ Some design goals: ### API endpoints -See [LNDHub API](https://github.com/BlueWallet/LndHub/blob/master/controllers/api.js) for enpoints and request/response signatures. +See [LndHub API](https://github.com/BlueWallet/LndHub/blob/master/controllers/api.js) for enpoints and request/response signatures. #### /create Create a new user account @@ -59,4 +59,4 @@ Node information ### Links -* [LNDHub](https://github.com/BlueWallet/LndHub) - Current nodejs implementation +* [LndHub](https://github.com/BlueWallet/LndHub) - Current nodejs implementation diff --git a/static/img/logo.png b/static/img/logo.png index 5962b1bfd93fedac5b98784909de4b7771540dfa..0b8b31b0521365110086d846db60ada06463b84b 100644 GIT binary patch literal 2808 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