Skip to content

Instantly share code, notes, and snippets.

View Downes's full-sized avatar

Stephen Downes Downes

View GitHub Profile
### Keybase proof
I hereby claim:
* I am downes on github.
* I am downes (https://keybase.io/downes) on keybase.
* I have a public key whose fingerprint is 2DDC 6D6B CD3C AC38 918F CF7B 6815 A072 C592 2E94
To claim this, I am signing this object:
@Downes
Downes / gist:467aaf0cf15b047267b35fe577dbb923
Created December 2, 2018 19:22
Create Badge Object in Perl
package gRSShopper::Badgr;
use strict;
use warnings;
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
use JSON qw(encode_json decode_json);
our $VERSION = "1.00";
@Downes
Downes / gist:ee3cb9b8ed55559f5379ddd2a709e253
Created December 2, 2018 19:33
Badge Module - Generate Access Token
sub generate_access_token {
my ($self) = @_;
my $access_token_url = $self->{badgr_url}."/o/token";
my $ua = LWP::UserAgent->new;
my $req = POST $access_token_url,[ username => $self->{badgr_account}, password => $self->{badgr_password} ];
my $response = $ua->request($req);
if ($response->is_success) {
my $hashref = decode_json $response->decoded_content;
$self->{access_token} = $hashref->{access_token};
@Downes
Downes / gist:67f969a8588bd2d617beb15469b1cc6e
Created December 2, 2018 19:38
Create an instance of the Badgr module
# Initialize Badgr
our $Badgr = gRSShopper::Badgr->new({
badgr_url => $Site->{badgr_url},
badgr_account => $Site->{badgr_account},
badgr_password => $Site->{badgr_password},
badgr_issuerid => $Site->{badgr_issuerid},
secure => 1, # Turns on SSH
});
@Downes
Downes / gist:fc1ee42c0dfda66f46ae96d8411e5736
Created December 2, 2018 19:54
Adding Badgr account to admin_accounts() in admin.cgi in gRSShopper
$content .= &admin_configtable($dbh,$query,"Badgr",
("Badgr API base URL:badgr_url","Badgr Account ID (email):badgr_account","Badgr Account Password:badgr_password","Access Key:badgr_cckey","Issuer ID:badgr_issuerid"));
$content .= sprintf(qq|To create and award badges, <a href="https://badgr.io/auth/login">create a Badgr account</a> and input email address and password above. The Base URL is usually https://api.badgr.io and the Access key is automatically generated.
However, before badges are awarded, a Badge Issuer must be created; <a href="%sadmin.cgi?action=badgr&badgr=issuer">Click here</a> to generate an Issuer
automatically.|,$Site->{st_cgi});
@Downes
Downes / gist:c3fbe6f0e2e6042970d5fdd2b99e76b9
Created December 2, 2018 20:15
Create Issuer API request for Badgr in Perl
# Create Request JSON
my $issuer_json = qq|{
"name": "$issuer->{name}",
"email": "$issuer->{email}",
"description": "$issuer->{description}",
"url": "$issuer->{url}"
}|;
# Format Request
my $create_issuer_url = $self->{badgr_url}."/v2/issuers";
@Downes
Downes / gist:397ca9a8b5ed1ce3b6e0a045f7c4c2a3
Created December 2, 2018 20:45
JSON for Create Badge in JSON in gRSShopper
my $badge_json = qq|
{"criteriaUrl":"$badge->{criteriaUrl}",
"issuer":"$self->{badgr_issuerid}",
"name":"$badge->{badge_title}",
"image":"$badge->{image}",
"description":"$badge->{badge_description}",
"alignments": [
{"targetName":"Testing",
"targetUrl":"$badge->{criteriaUrl}",
"targetDescription":"$badge->{badge_description}",
@Downes
Downes / gist:aaf82d5e1097ac46e3dd79b2c340bc09
Created December 2, 2018 21:07
Encoding an image into Base64 in Perl for gRSShopper
if ($filerecord->{file_dirname} eq "image/png") {
my $imgfilename = $Site->{st_urlf}.$filerecord->{file_dirname};
use File::Slurp;
use MIME::Base64 qw|encode_base64|;
$imagestr = encode_base64( read_file( $imgfilename ) );
$imagestr =~ s/\n//g;$imagestr =~ s/\n//g; # because they get inserted somehow and Badgr chokes on them
$imagestr = "data:image/png;base64,".$imagestr;
}
<!-- Button -->
<span class="nav-link" style="cursor:pointer" data-toggle="modal" data-target="#exampleModal"><img src="https://www.downes.ca/assets/icons/grssicon.JPG" alt="Open Reader" title="Open Reader" width="20" border="0"></span>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
@Downes
Downes / gist:11584c1673761a1babb95c6e4af5d326
Created December 8, 2018 17:33
Modfying width in a Bootstrap modal
<style>
@media (min-width: 768px) {
.modal-xl {
width: 90%;
max-width:1200px;
}
}
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document"><!-- cf http://output.jsbin.com/yefas/1 -->