12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- var http = require('http');
- var https = require('https');
- var fs = require('fs');
- var lwip = require('lwip');
- /*
- * Skin retrieval methods are based on @jomo's CLI Crafatar implementation.
- * https://github.com/jomo/Crafatar
- */
- module.exports = {
- get_profile: function(uuid, callback) {
- https.get("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid, function(res) {
- if (res.statusCode == "204") {
- callback(null);
- return null;
- }
- res.on('data', function(d) {
- var profile = JSON.parse(d);
- if (profile.error) callback(null);
- callback(profile);
- });
-
- }).on('error', function(e) {
- console.error(e);
- });
- },
- skin_url: function(profile) {
- var url = null;
- if (profile && profile.properties) {
- profile.properties.forEach(function(prop) {
- if (prop.name == 'textures') {
- var json = Buffer(prop.value, 'base64').toString();
- var props = JSON.parse(json);
- url = props.textures.SKIN.url;
- }
- });
- }
- return url;
- },
- skin_file: function(url, filename, callback) {
- var file = fs.createWriteStream(filename);
- http.get(url, function(res) {
- res.on('data', function(data) {
- file.write(data);
- }).on('end', function() {
- file.end();
- callback();
- });
- });
- },
- extract_face: function(infile, size, callback) {
- lwip.open(infile, function(err, image){
- image.batch()
- .crop(8,8,15,15)
- .resize(size, size, "nearest-neighbor")
- .toBuffer('png', function(err, buffer){
- callback(buffer);
- });
- });
- }
- };
|