on *:text:!uptime *:#: {
if ($mysocket(twitchuptime,https://decapi.me/twitch/uptime.php?channel= $+ $2)) {
hadd $v1 channel #
hadd $v1 stream $2
}
}
alias twitchuptime {
if ($2 == error) msg $hget($1,channel) An error occurred, please try again.
else {
tokenize 32 $1 $bvar(&mysocket,1,300).text
if ($2- = Channel is not live.) msg $hget($1,channel) $qt($hget($1,stream)) is not live currently.
elseif ($2- == Channel does not exist.) msg $hget($1,channel) $qt($hget($1,stream)) doesn't exist.
else msg $hget($1,channel) $qt($hget($1,stream)) has been live for $2-
}
}
alias mysocket {
if (www.?*.??* iswm $2) tokenize 32 $1 http:// $+ $2
if (http://?*.??* iswm $2) || (https://?*.??* iswm $2) {
var %e = $iif($gettok($2,1,47) == https:,-e),%a $gettok($2,2,47),%p $iif($gettok(%a,2,58) isnum 60-65535,$v1,$iif(%e,443,80)),%a $gettok(%a,1,58),%s $sha1($2,0) $+ .mysocket
mysocket.k %s
hadd %s command $1
hadd %s full $2
hadd %s port %p
hadd %s host %a
hadd %s path $iif($gettok($2,3-,47),/ $+ $v1 $+ $iif($right($2,1) == /,/),/)
hadd %s r 0
sockopen %e %s %a %p
.timermysocket. $+ %s -io 1 60 mysocket.t %s
if ($isid) return %s
}
else $iif($isid,return,echo -a Invalid input, us as: /mysocket <command> <link>)
}
alias -l mysocket.t $hget($1,command) $1 error open Connection timeout | mysocket.k $1
alias -l mysocket.k hfree -w $1 | sockclose $1 | .timermysocket. $+ $1 off | .remove $1 | unset %c.t
on *:sockopen:*.mysocket: {
tokenize 32 $sockname
if ($sockerr) mysocket.e $1 open
else {
sockwrite -tn $1 GET $hget($1,path) HTTP/1.1
sockwrite -tn $1 Host: $hget($1,host)
sockwrite -tn $1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:44.0) Gecko/20100101 Firefox/45.0
sockwrite -tn $1 Accept: text/html
sockwrite -tn $1 Connection: close
sockwrite -t $1 $crlf
}
}
on *:sockread:*.mysocket: {
tokenize 32 $sockname
if ($sockerr) mysocket.e $1 read
elseif ($hget($1,r)) mysocket.r $1
else {
sockread -f %c.t
while ($sockbr > 2) { hadd $1 %c.t | sockread -f %c.t }
if ($sockbr) { hadd $1 r $calc($sock($1).rcvd +$iif($hget($1,Content-Length:) <= 2097152,$v1,$v2)) | if ($sock($1).rq) mysocket.r $1 }
}
}
on *:sockclose:*.mysocket:mysocket.d $sockname
alias -l mysocket.r sockread $sock($1).rq &b | bwrite $1 -1 &b | if ($sock($1).rcvd >= $hget($1,r)) mysocket.d $1
alias -l mysocket.e $hget($1,command) $1 error $2 $sockerr $sock($1).wsmsg | mysocket.k $1
alias -l mysocket.d {
if ($hget($1,Transfer-Encoding:) == chunked) {
var %y = 1
bread $1 0 $file($1).size &f
while ($bfind(&f,%y,$crlf).text) {
var %v = $v1,%h $bvar(&f,%y,$calc(%v -%y)).text,%r $base(%h,16,10),%y $calc(%v +4+%r)
if (%r == 0) break
else bcopy &mysocket $calc(1+$bvar(&mysocket,0)) &f $calc(2+%v) %r
}
}
else bread $1 0 $file($1).size &mysocket
$hget($1,command) $1 $iif($bvar(&mysocket,0),done,error read No data received.)
mysocket.k $1
}