# Custom action
# Example
- Create new file in - /var/www/keitaro/var/redirects/. For example,- /var/www/keitaro/var/redirects/jsonp.php.
- The boilerplate code: 
<?php
namespace Redirects;
use Traffic\Actions\AbstractAction;
class jsonp extends AbstractAction
{
    protected $_name = 'JSONP';     // <-- Action name
    protected $_weight = 100;            // <-- Action weight in action dropdown
    public function getType()
    {
        return self::TYPE_OTHER;              // <-- That tells Keitaro that script is an action 
    }
    protected function _execute()  
    {
        $url = $this->getActionPayload();
        
        $json = json_encode(['url' => $url]);
    
        $this->setContentType('application/javascript'); // <-- Set content type 
        $this->setStatus(200);                           // <-- Set 200 as HTTP status code
        $this->setContent($json);                        // <-- Sets $json as output 
    }
}
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
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
# Available methods
These methods available inside _execute():
| Method | Type | Description | 
|---|---|---|
| $this->getRawClick() | RawClick | Get instance of RawClick | 
| $this->getStream() | Flow | Get an instance of Flow | 
| $this->getCampaign() | Campaign | Get an instance of Campaign | 
| $this->getLanding() | Landing | Get an instance of Landing Page | 
| $this->getOffer() | Offer | Get an instance of Offer | 
| $this->getServerRequest() | ServerRequest | PSR-7 ServerRequest | 
| $this->getActionPayload() | mixed | Get action payload after placeholders applied | 
| $this->getRawActionPayload() | mixed | Get action payload before placeholders applied | 
| $this->getActionOptions() | mixed | Get action options | 
| $this->addHeader($string) | void | Add header sting to the response | 
| $this->redirect($string) | void | Do the same as $this->addHeader('Location: ...') | 
| $this->setContent($string) | void | Set output | 
| $this->setContentType($string) | void | Set content type (for example, application/javascript) | 
| $this->setStatus($number) | void | Set HTTP header status (for example, 302) | 
| $this->setDestinationInfo($string) | void | Set value for "Destination" | 
