Skip to content

Instantly share code, notes, and snippets.

View ldclakmal's full-sized avatar
🎯
Focusing

Chanaka Lakmal ldclakmal

🎯
Focusing
View GitHub Profile
@ldclakmal
ldclakmal / cache-config.bal
Created June 6, 2020 15:02
Cache Configuration of Ballerina
public type CacheConfig record {|
int capacity = 100;
AbstractEvictionPolicy evictionPolicy = new LruEvictionPolicy();
float evictionFactor = 0.25;
int defaultMaxAgeInSeconds = -1;
int cleanupIntervalInSeconds?;
|};
@ldclakmal
ldclakmal / linked-list-api.bal
Created June 6, 2020 15:01
Linked List API of Ballerina
public type Node record {|
any value;
Node? prev = ();
Node? next = ();
|};
public type LinkedList record {
Node? head;
Node? tail;
};
@ldclakmal
ldclakmal / abstract-eviction-policy.bal
Created June 6, 2020 14:59
Abstract Eviction Policy of Ballerina
public type AbstractEvictionPolicy abstract object {
public function get(LinkedList list, Node node);
public function put(LinkedList list, Node node);
public function remove(LinkedList list, Node node);
public function replace(LinkedList list, Node newNode, Node oldNode);
public function clear(LinkedList list);
public function evict(LinkedList list) returns Node?;
};
@ldclakmal
ldclakmal / abstract-cache.bal
Last active June 6, 2020 14:58
Abstract Cache of Ballerina
public type AbstractCache abstract object {
public function put(string key, any value, int maxAgeInSeconds = -1) returns Error?;
public function get(string key) returns any|Error;
public function invalidate(string key) returns Error?;
public function invalidateAll() returns Error?;
public function hasKey(string key) returns boolean;
public function keys() returns string[];
public function size() returns int;
public function capacity() returns int;
};
@ldclakmal
ldclakmal / twitter-connector-release.yml
Created May 5, 2020 17:13
Twitter Connector - GitHub Actions
name: Deployment
on:
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
@ldclakmal
ldclakmal / twitter-client-test-1.2.0.bal
Last active May 1, 2020 14:22
Twitter Client Test in Ballerina
import ballerina/io;
import ballerina/test;
Configuration twitterConfig = {
consumerKey: "Twitter App Consumer Key",
consumerSecret: "Twitter App Consumer Secret",
accessToken: "Twitter App Access Token",
accessTokenSecret: "Twitter App Access Token Secret",
};
Client twitterClient = new(twitterConfig);
@ldclakmal
ldclakmal / twitter-client-1.2.0.bal
Last active May 1, 2020 13:45
Twitter Client in Ballerina
import ballerina/encoding;
import ballerina/http;
# The Twitter client object.
public type Client client object {
http:Client twitterClient;
Credential twitterCredential;
public function __init(Configuration twitterConfig) {
@ldclakmal
ldclakmal / http2_client.go
Last active April 20, 2019 04:46
Go HTTP/2 Client
package main
import (
"bytes"
"crypto/tls"
"crypto/x509"
"fmt"
"golang.org/x/net/http2"
"io/ioutil"
"log"
@ldclakmal
ldclakmal / http_client.go
Last active April 20, 2019 04:46
Go HTTP Client
package main
import (
"bytes"
"crypto/tls"
"crypto/x509"
"fmt"
"io/ioutil"
"log"
"net/http"
@ldclakmal
ldclakmal / http2_server.go
Last active March 5, 2019 11:58
Go HTTP/2 Server
package main
import (
"fmt"
"golang.org/x/net/http2"
"io/ioutil"
"log"
"net/http"
)