mirror of
https://github.com/aljazceru/signal-cli-rest-api.git
synced 2025-12-19 15:44:28 +01:00
Merge branch 'master' into graalvm
This commit is contained in:
10
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
name: Bug Report
|
||||||
|
about: Something doesn't work as expected.
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Before creating an issue, please have a look at the Troubleshooting page: https://github.com/bbernhard/signal-cli-rest-api/blob/master/doc/TROUBLESHOOTING.md
|
||||||
11
.github/ISSUE_TEMPLATE/feature-request.md
vendored
Normal file
11
.github/ISSUE_TEMPLATE/feature-request.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
name: Feature Request
|
||||||
|
about: You have a neat idea that should be implemented?
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Feature Request
|
||||||
|
<!-- Fill in the relevant information below to help triage your issue. -->
|
||||||
@@ -13,6 +13,8 @@ At the moment, the following functionality is exposed via REST:
|
|||||||
- List/Serve/Delete attachments
|
- List/Serve/Delete attachments
|
||||||
- Update profile
|
- Update profile
|
||||||
|
|
||||||
|
and [many more](https://bbernhard.github.io/signal-cli-rest-api/)
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
Sample `docker-compose.yml`file:
|
Sample `docker-compose.yml`file:
|
||||||
|
|||||||
@@ -17,6 +17,16 @@ e.g:
|
|||||||
|
|
||||||
`curl -X POST -H "Content-Type: application/json" --data '{"use_voice": true}' 'http://127.0.0.1:8080/v1/register/+431212131491291'`
|
`curl -X POST -H "Content-Type: application/json" --data '{"use_voice": true}' 'http://127.0.0.1:8080/v1/register/+431212131491291'`
|
||||||
|
|
||||||
|
- Register a number (with captcha)
|
||||||
|
|
||||||
|
When you try to register a number, if you receive a response like `{"error":"Captcha required for verification (null)\n"}` then Signal is requiring a captcha. To register the number you must do the following:
|
||||||
|
1. Go to [https://signalcaptchas.org/registration/generate.html](https://signalcaptchas.org/registration/generate.html)
|
||||||
|
2. Open the developer console
|
||||||
|
3. Find the line that looks like this: `Prevented navigation to “signalcaptcha://{captcha value}” due to an unknown protocol.` Copy the captcha value
|
||||||
|
4. Use it to make the registration call like this:
|
||||||
|
|
||||||
|
`curl -X POST -H "Content-Type: application/json" -d '{"captcha":"{captcha value}"}' 'http://127.0.0.1:8080/v1/register/<number>`
|
||||||
|
|
||||||
- Verify the number using the code received via SMS/voice
|
- Verify the number using the code received via SMS/voice
|
||||||
|
|
||||||
`curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/<number>/verify/<verification code>'`
|
`curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/<number>/verify/<verification code>'`
|
||||||
|
|||||||
@@ -57,6 +57,14 @@ e.g:
|
|||||||
|
|
||||||
`curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/+431212131491291/verify/123-456'`
|
`curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/+431212131491291/verify/123-456'`
|
||||||
|
|
||||||
|
When you try to register a number, if you receive a response like `{"error":"Captcha required for verification (null)\n"}` then Signal is requiring a captcha. To register the number you must do the following:
|
||||||
|
1. Go to [https://signalcaptchas.org/registration/generate.html](https://signalcaptchas.org/registration/generate.html)
|
||||||
|
2. Open the developer console
|
||||||
|
3. Find the line that looks like this: `Prevented navigation to “signalcaptcha://{captcha value}” due to an unknown protocol.` Copy the captcha value
|
||||||
|
4. Use it to make the registration call like this:
|
||||||
|
|
||||||
|
`curl -X POST -H "Content-Type: application/json" -d '{"captcha":"{captcha value}"}' 'http://127.0.0.1:8080/v1/register/<number>`
|
||||||
|
|
||||||
## Sending messages to Signal Messenger groups
|
## Sending messages to Signal Messenger groups
|
||||||
|
|
||||||
The `signal-cli-rest-api` docker container is also capable of sending messages to a Signal Messenger group.
|
The `signal-cli-rest-api` docker container is also capable of sending messages to a Signal Messenger group.
|
||||||
@@ -84,6 +92,10 @@ Next, use the following endpoint to obtain the group id:
|
|||||||
|
|
||||||
The group id then needs to be added to the Signal Messenger's `recipients` list in the `configuration.yaml`. (see [here](https://www.home-assistant.io/integrations/signal_messenger/) for details)
|
The group id then needs to be added to the Signal Messenger's `recipients` list in the `configuration.yaml`. (see [here](https://www.home-assistant.io/integrations/signal_messenger/) for details)
|
||||||
|
|
||||||
|
## API details
|
||||||
|
|
||||||
|
Details regarding API (in example for receiving messages through REST) can be found [here](https://bbernhard.github.io/signal-cli-rest-api/)
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
In case you've problems with the `signal-cli-rest-api` container, have a look [here](TROUBLESHOOTING.md)
|
In case you've problems with the `signal-cli-rest-api` container, have a look [here](TROUBLESHOOTING.md)
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
# The signal-cli-rest-api docker container won't start (signal_messenger_signal-cli-rest-api_1 exited with code 0)
|
# The signal-cli-rest-api docker container won't start (signal_messenger_signal-cli-rest-api_1 exited with code 0)
|
||||||
|
|
||||||
If your docker container stops with `signal_messenger_signal-cli-rest-api_1 exited with code 0`, make sure that the host port isn't already occupied by another process (see [here](https://github.com/bbernhard/signal-cli-rest-api/issues/2)).
|
If your docker container stops with `signal_messenger_signal-cli-rest-api_1 exited with code 0`, make sure that the host port isn't already occupied by another process (see [here](https://github.com/bbernhard/signal-cli-rest-api/issues/2)).
|
||||||
|
|
||||||
|
# Sending a message suceeds, but no message is sent
|
||||||
|
|
||||||
|
According to [this](https://github.com/AsamK/signal-cli/issues/202) signal-cli ticket here, the receive endpoint needs to be called regularily. So, if sending a message seems to work, but no message is sent, please try to call the [Receive API endpoint](https://bbernhard.github.io/signal-cli-rest-api/#/Messages/get_v1_receive__number_).
|
||||||
|
|
||||||
|
# Cannot send message to group - please first update your profile
|
||||||
|
|
||||||
|
If you get this message, it means that you first need to [update your profile](https://bbernhard.github.io/signal-cli-rest-api/#/Profiles/put_v1_profiles__number_) to set a name (and optionally an avatar).
|
||||||
|
|||||||
@@ -245,7 +245,7 @@ func send(c *gin.Context, attachmentTmpDir string, signalCliConfig string, numbe
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanupTmpFiles(attachmentTmpPaths)
|
cleanupTmpFiles(attachmentTmpPaths)
|
||||||
c.JSON(201, nil)
|
c.Writer.WriteHeader(201)
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseWhitespaceDelimitedKeyValueStringList(in string, keys []string) []map[string]string {
|
func parseWhitespaceDelimitedKeyValueStringList(in string, keys []string) []map[string]string {
|
||||||
@@ -401,6 +401,7 @@ func (a *Api) About(c *gin.Context) {
|
|||||||
// @Success 201
|
// @Success 201
|
||||||
// @Failure 400 {object} Error
|
// @Failure 400 {object} Error
|
||||||
// @Param number path string true "Registered Phone Number"
|
// @Param number path string true "Registered Phone Number"
|
||||||
|
// @Param data body RegisterNumberRequest false "Additional Settings"
|
||||||
// @Router /v1/register/{number} [post]
|
// @Router /v1/register/{number} [post]
|
||||||
func (a *Api) RegisterNumber(c *gin.Context) {
|
func (a *Api) RegisterNumber(c *gin.Context) {
|
||||||
number := c.Param("number")
|
number := c.Param("number")
|
||||||
@@ -441,7 +442,7 @@ func (a *Api) RegisterNumber(c *gin.Context) {
|
|||||||
c.JSON(400, gin.H{"error": err.Error()})
|
c.JSON(400, gin.H{"error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(201, nil)
|
c.Writer.WriteHeader(201)
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Summary Verify a registered phone number.
|
// @Summary Verify a registered phone number.
|
||||||
@@ -452,7 +453,7 @@ func (a *Api) RegisterNumber(c *gin.Context) {
|
|||||||
// @Success 201 {string} string "OK"
|
// @Success 201 {string} string "OK"
|
||||||
// @Failure 400 {object} Error
|
// @Failure 400 {object} Error
|
||||||
// @Param number path string true "Registered Phone Number"
|
// @Param number path string true "Registered Phone Number"
|
||||||
// @Param data body VerifyNumberSettings true "Additional Settings"
|
// @Param data body VerifyNumberSettings false "Additional Settings"
|
||||||
// @Param token path string true "Verification Code"
|
// @Param token path string true "Verification Code"
|
||||||
// @Router /v1/register/{number}/verify/{token} [post]
|
// @Router /v1/register/{number}/verify/{token} [post]
|
||||||
func (a *Api) VerifyRegisteredNumber(c *gin.Context) {
|
func (a *Api) VerifyRegisteredNumber(c *gin.Context) {
|
||||||
@@ -494,7 +495,7 @@ func (a *Api) VerifyRegisteredNumber(c *gin.Context) {
|
|||||||
c.JSON(400, gin.H{"error": err.Error()})
|
c.JSON(400, gin.H{"error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(201, nil)
|
c.Writer.WriteHeader(201)
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Summary Send a signal message.
|
// @Summary Send a signal message.
|
||||||
@@ -1023,7 +1024,7 @@ func (a *Api) ListIdentities(c *gin.Context) {
|
|||||||
// @Param data body TrustIdentityRequest true "Input Data"
|
// @Param data body TrustIdentityRequest true "Input Data"
|
||||||
// @Param number path string true "Registered Phone Number"
|
// @Param number path string true "Registered Phone Number"
|
||||||
// @Param numberToTrust path string true "Number To Trust"
|
// @Param numberToTrust path string true "Number To Trust"
|
||||||
// @Router /v1/identities/{number}/{numberToTrust} [put]
|
// @Router /v1/identities/{number}/trust/{numberToTrust} [put]
|
||||||
func (a *Api) TrustIdentity(c *gin.Context) {
|
func (a *Api) TrustIdentity(c *gin.Context) {
|
||||||
number := c.Param("number")
|
number := c.Param("number")
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ var doc = `{
|
|||||||
"description": "{{.Description}}",
|
"description": "{{.Description}}",
|
||||||
"title": "{{.Title}}",
|
"title": "{{.Title}}",
|
||||||
"contact": {},
|
"contact": {},
|
||||||
"license": {},
|
|
||||||
"version": "{{.Version}}"
|
"version": "{{.Version}}"
|
||||||
},
|
},
|
||||||
"host": "{{.Host}}",
|
"host": "{{.Host}}",
|
||||||
@@ -561,7 +560,7 @@ var doc = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/v1/identities/{number}/{numberToTrust}": {
|
"/v1/identities/{number}/trust/{numberToTrust}": {
|
||||||
"put": {
|
"put": {
|
||||||
"description": "Trust an identity.",
|
"description": "Trust an identity.",
|
||||||
"produces": [
|
"produces": [
|
||||||
@@ -743,10 +742,20 @@ var doc = `{
|
|||||||
"name": "number",
|
"name": "number",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Additional Settings",
|
||||||
|
"name": "data",
|
||||||
|
"in": "body",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/api.RegisterNumberRequest"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"201": {},
|
"201": {
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Bad Request",
|
"description": "Bad Request",
|
||||||
"schema": {
|
"schema": {
|
||||||
@@ -781,7 +790,6 @@ var doc = `{
|
|||||||
"description": "Additional Settings",
|
"description": "Additional Settings",
|
||||||
"name": "data",
|
"name": "data",
|
||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/api.VerifyNumberSettings"
|
"$ref": "#/definitions/api.VerifyNumberSettings"
|
||||||
}
|
}
|
||||||
@@ -911,7 +919,6 @@ var doc = `{
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"logging": {
|
"logging": {
|
||||||
"type": "object",
|
|
||||||
"$ref": "#/definitions/api.LoggingConfiguration"
|
"$ref": "#/definitions/api.LoggingConfiguration"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -998,6 +1005,17 @@ var doc = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"api.RegisterNumberRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"captcha": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"use_voice": {
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"api.SendMessageV1": {
|
"api.SendMessageV1": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
"description": "This is the Signal Cli REST API documentation.",
|
"description": "This is the Signal Cli REST API documentation.",
|
||||||
"title": "Signal Cli REST API",
|
"title": "Signal Cli REST API",
|
||||||
"contact": {},
|
"contact": {},
|
||||||
"license": {},
|
|
||||||
"version": "1.0"
|
"version": "1.0"
|
||||||
},
|
},
|
||||||
"host": "127.0.0.1:8080",
|
"host": "127.0.0.1:8080",
|
||||||
@@ -546,7 +545,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/v1/identities/{number}/{numberToTrust}": {
|
"/v1/identities/{number}/trust/{numberToTrust}": {
|
||||||
"put": {
|
"put": {
|
||||||
"description": "Trust an identity.",
|
"description": "Trust an identity.",
|
||||||
"produces": [
|
"produces": [
|
||||||
@@ -728,10 +727,20 @@
|
|||||||
"name": "number",
|
"name": "number",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Additional Settings",
|
||||||
|
"name": "data",
|
||||||
|
"in": "body",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/api.RegisterNumberRequest"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"201": {},
|
"201": {
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Bad Request",
|
"description": "Bad Request",
|
||||||
"schema": {
|
"schema": {
|
||||||
@@ -766,7 +775,6 @@
|
|||||||
"description": "Additional Settings",
|
"description": "Additional Settings",
|
||||||
"name": "data",
|
"name": "data",
|
||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/api.VerifyNumberSettings"
|
"$ref": "#/definitions/api.VerifyNumberSettings"
|
||||||
}
|
}
|
||||||
@@ -896,7 +904,6 @@
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"logging": {
|
"logging": {
|
||||||
"type": "object",
|
|
||||||
"$ref": "#/definitions/api.LoggingConfiguration"
|
"$ref": "#/definitions/api.LoggingConfiguration"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -983,6 +990,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"api.RegisterNumberRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"captcha": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"use_voice": {
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"api.SendMessageV1": {
|
"api.SendMessageV1": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ definitions:
|
|||||||
properties:
|
properties:
|
||||||
logging:
|
logging:
|
||||||
$ref: '#/definitions/api.LoggingConfiguration'
|
$ref: '#/definitions/api.LoggingConfiguration'
|
||||||
type: object
|
|
||||||
type: object
|
type: object
|
||||||
api.CreateGroup:
|
api.CreateGroup:
|
||||||
properties:
|
properties:
|
||||||
@@ -68,6 +67,13 @@ definitions:
|
|||||||
Level:
|
Level:
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
|
api.RegisterNumberRequest:
|
||||||
|
properties:
|
||||||
|
captcha:
|
||||||
|
type: string
|
||||||
|
use_voice:
|
||||||
|
type: boolean
|
||||||
|
type: object
|
||||||
api.SendMessageV1:
|
api.SendMessageV1:
|
||||||
properties:
|
properties:
|
||||||
base64_attachment:
|
base64_attachment:
|
||||||
@@ -119,7 +125,6 @@ host: 127.0.0.1:8080
|
|||||||
info:
|
info:
|
||||||
contact: {}
|
contact: {}
|
||||||
description: This is the Signal Cli REST API documentation.
|
description: This is the Signal Cli REST API documentation.
|
||||||
license: {}
|
|
||||||
title: Signal Cli REST API
|
title: Signal Cli REST API
|
||||||
version: "1.0"
|
version: "1.0"
|
||||||
paths:
|
paths:
|
||||||
@@ -478,7 +483,7 @@ paths:
|
|||||||
summary: List Identities
|
summary: List Identities
|
||||||
tags:
|
tags:
|
||||||
- Identities
|
- Identities
|
||||||
/v1/identities/{number}/{numberToTrust}:
|
/v1/identities/{number}/trust/{numberToTrust}:
|
||||||
put:
|
put:
|
||||||
description: Trust an identity.
|
description: Trust an identity.
|
||||||
parameters:
|
parameters:
|
||||||
@@ -596,10 +601,16 @@ paths:
|
|||||||
name: number
|
name: number
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
- description: Additional Settings
|
||||||
|
in: body
|
||||||
|
name: data
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/api.RegisterNumberRequest'
|
||||||
produces:
|
produces:
|
||||||
- application/json
|
- application/json
|
||||||
responses:
|
responses:
|
||||||
"201": {}
|
"201":
|
||||||
|
description: ""
|
||||||
"400":
|
"400":
|
||||||
description: Bad Request
|
description: Bad Request
|
||||||
schema:
|
schema:
|
||||||
@@ -621,7 +632,6 @@ paths:
|
|||||||
- description: Additional Settings
|
- description: Additional Settings
|
||||||
in: body
|
in: body
|
||||||
name: data
|
name: data
|
||||||
required: true
|
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/api.VerifyNumberSettings'
|
$ref: '#/definitions/api.VerifyNumberSettings'
|
||||||
- description: Verification Code
|
- description: Verification Code
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ go 1.14
|
|||||||
require (
|
require (
|
||||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
|
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
|
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
|
||||||
|
github.com/cyphar/filepath-securejoin v0.2.2
|
||||||
|
github.com/gabriel-vasile/mimetype v1.1.2
|
||||||
github.com/gin-gonic/gin v1.6.3
|
github.com/gin-gonic/gin v1.6.3
|
||||||
github.com/go-openapi/spec v0.19.8 // indirect
|
github.com/go-openapi/spec v0.19.8 // indirect
|
||||||
github.com/go-openapi/swag v0.19.9 // indirect
|
github.com/go-openapi/swag v0.19.9 // indirect
|
||||||
|
|||||||
@@ -12,8 +12,12 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSY
|
|||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
|
github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||||
|
github.com/cyphar/filepath-securejoin v0.2.2 h1:jCwT2GTP+PY5nBz3c/YL5PAIbusElVrPujOBSCj8xRg=
|
||||||
|
github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gabriel-vasile/mimetype v1.1.2 h1:gaPnPcNor5aZSVCJVSGipcpbgMWiAAj9z182ocSGbHU=
|
||||||
|
github.com/gabriel-vasile/mimetype v1.1.2/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To=
|
||||||
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
|
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
|
||||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||||
github.com/gin-contrib/gzip v0.0.1/go.mod h1:fGBJBCdt6qCZuCAOwWuFhBB4OOq9EFqlo5dEaFhhu5w=
|
github.com/gin-contrib/gzip v0.0.1/go.mod h1:fGBJBCdt6qCZuCAOwWuFhBB4OOq9EFqlo5dEaFhhu5w=
|
||||||
@@ -87,6 +91,7 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ
|
|||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||||
|
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
|
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
|
||||||
|
|||||||
Reference in New Issue
Block a user