1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Factories\LinkFactory;
use App\Helpers\LinkHelper;
class ApiLinkController extends ApiController {
public function shortenLink(Request $request) {
$response_type = $request->input('response_type');
$user = self::getApiUserInfo($request);
// Validate parameters
// Encode spaces as %20 to avoid validator conflicts
$validator = \Validator::make(array_merge([
'url' => str_replace(' ', '%20', $request->input('url'))
], $request->except('url')), [
'url' => 'required|url'
]);
if ($validator->fails()) {
return abort(400, 'Parameters invalid or missing.');
}
$long_url = $request->input('url'); // * required
$is_secret = ($request->input('is_secret') == 'true' ? true : false);
$link_ip = $request->ip();
$custom_ending = $request->input('custom_ending');
try {
$formatted_link = LinkFactory::createLink($long_url, $is_secret, $custom_ending, $link_ip, $user->username, false, true);
}
catch (\Exception $e) {
abort(400, $e->getMessage());
}
return self::encodeResponse($formatted_link, 'shorten', $response_type);
}
public function lookupLink(Request $request) {
$response_type = $request->input('response_type');
$user = self::getApiUserInfo($request);
// Validate URL form data
$validator = \Validator::make($request->all(), [
'url_ending' => 'required|alpha_dash'
]);
if ($validator->fails()) {
return abort(400, 'Parameters invalid or missing.');
}
$url_ending = $request->input('url_ending');
// "secret" key required for lookups on secret URLs
$url_key = $request->input('url_key');
$link = LinkHelper::linkExists($url_ending);
if ($link['secret_key']) {
if ($url_key != $link['secret_key']) {
abort(401, "Invalid URL code for secret URL.");
}
}
if ($link) {
return self::encodeResponse([
'long_url' => $link['long_url'],
'created_at' => $link['created_at'],
'clicks' => $link['clicks'],
'updated_at' => $link['updated_at'],
'created_at' => $link['created_at']
], 'lookup', $response_type, $link['long_url']);
}
else {
abort(404, "Link not found.");
}
}
}
|