# Quick Example

## Step I: Installing Deno

#### Shell (Mac, Linux):

```
curl -fsSL https://deno.land/x/install/install.sh | sh
```

#### PowerShell (Windows):

```
iwr https://deno.land/x/install/install.ps1 -useb | iex
```

## Step II: Example file

Create a example file which the following content:

```typescript
import { Controller, Service, GET, Session, MandarineCore } from "https://deno.land/x/mandarinets/mod.ts";

@Service()
export class MyService {

    public sayARandomName(): string {
        let names: Array<string> = ["Andres", "Maureen", "Elsa"];
        return names[Math.floor(Math.random() * names.length)];
    }

}

@Controller()
export class MyController {

    constructor(private readonly myService: MyService){}

    @GET('/hello-world')
    public helloWorld(@Session() session: any) {
        if(session.times == undefined) session.times = 0;
        session.times++;

        return `Hello World number #${session.times} (Yes, there are multiple universes)`;
    }

    @GET('/say-hi')
    public sayHi() {
        return `Hello <b>${this.myService.sayARandomName()}</b> from a randomly method.`;
    }

}

new MandarineCore().MVC().run();
```

In the example above, we have created 2 endpoints: `/hello-world` which tests the use of [Sessions](https://mandarineframework.gitbook.io/mandarine-ts/mandarine-security/sessions) in Mandarine, and `/say-hi` which tests the use of [Dependency Injection](https://mandarineframework.gitbook.io/mandarine-ts/mandarine-core/dependency-injection).

## Step III: Running your file

#### tsconfig.json

Create a tsconfig.json in your current working directory with the following content:

```javascript
{
    "compilerOptions": {
        "strict": false,
        "noImplicitAny": false,
        "noImplicitThis": false,
        "alwaysStrict": false,
        "strictNullChecks": false,
        "strictFunctionTypes": true,
        "strictPropertyInitialization": false,
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "allowUmdGlobalAccess": false,
    }
}
```

After creating `tsconfig.json` , from your command line, now run `deno run`:

```bash
$ deno run --config tsconfig.json --allow-net --allow-read myFile.ts
```

Don't forget to replace **myFile.ts** with the route of your file or name of your file in the current working directory.

After running go to `http://localhost:8080/hello-world` or `http://localhost:8080/say-hi`.

### Note

If you request `http://localhost:8080/hello-world` multiple times, you will see how the number increases since a session is being used.
