|
|
|
@ -5,44 +5,37 @@ Shrt is a url shortner writen in Go and by (Polr)[https://polr.me/index.php].
|
|
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
|
|
|
|
|
[x] No duplicated URL
|
|
|
|
|
[x] Simple UI
|
|
|
|
|
[x] DB simple json file
|
|
|
|
|
[x] Count URL views
|
|
|
|
|
[] Statistiks
|
|
|
|
|
[] Delete URL
|
|
|
|
|
[] Login
|
|
|
|
|
* [x] No duplicated URL
|
|
|
|
|
* [x] Simple UI
|
|
|
|
|
* [x] DB simple json file
|
|
|
|
|
* [x] Count URL views
|
|
|
|
|
* [] Statistiks
|
|
|
|
|
* [] Delete URL
|
|
|
|
|
* [] Login
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Problem
|
|
|
|
|
Problem liegt derzeit bei der Verwendung von shrt.Get mit der übergabe eines inteface.
|
|
|
|
|
## Restful API
|
|
|
|
|
|
|
|
|
|
Short an URL
|
|
|
|
|
```
|
|
|
|
|
package main
|
|
|
|
|
GET: http://example.com/api/action/shorten?key=API_KEY_HERE&url=http://example.de/shortening/main?q=5x
|
|
|
|
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
var redirect string
|
|
|
|
|
if ok := shrt.Get(token, &redirect); ok {
|
|
|
|
|
// do something with the redirect.
|
|
|
|
|
}
|
|
|
|
|
Response:
|
|
|
|
|
{ "action": "shorten",
|
|
|
|
|
"result": "https://example.com/5kq" }
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Entgegen genommen wird es bei `lib/shrt.go`:
|
|
|
|
|
Lookup for existing URL
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
// Get returns the URL for the given token
|
|
|
|
|
func (s *Storage) Get(token string, value interface{}) bool {
|
|
|
|
|
if hash, ok := s.Token[token]; ok {
|
|
|
|
|
fmt.Printf("Url gefunden %s mit Hash: %v \n", s.Url[hash].URL, hash)
|
|
|
|
|
value = s.Url[hash].URL
|
|
|
|
|
fmt.Printf("Value: %V \n", value)
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
GET: http://example.com/api/action/lookup?key=API_KEY_HERE&url_ending=5kq
|
|
|
|
|
|
|
|
|
|
Response:
|
|
|
|
|
{ "action":"lookup",
|
|
|
|
|
"result": {
|
|
|
|
|
"long_url": "http://example.de/shortening/main?q=5x",
|
|
|
|
|
"created_at": "2017-05-12 22:48:40.997520107 +0200 CEST",
|
|
|
|
|
"clicks":"0"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Ich dachte eigentlich ich könne redirect damit manipulieren wenn ich es als pointer auf redirect übergebe aber das scheint nicht so zu sein....
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|