Compare commits

..

23 Commits

Author SHA1 Message Date
be659a2dbd 1.0.14 2016-07-18 02:50:34 +02:00
144f963d8a fixed request for newer docker 2016-07-18 02:50:28 +02:00
0c7cd35448 prepare for npmdocker 2016-07-18 01:35:04 +02:00
4e3446cb2f now encoding URI 2016-07-18 00:54:41 +02:00
cec9555908 update 2016-07-17 23:09:54 +02:00
14803c1569 1.0.13 2016-07-15 13:54:12 +02:00
2d2449890f 1.0.12 2016-07-15 12:52:40 +02:00
5fd3a63822 update to ES6 2016-07-15 12:52:33 +02:00
5ae04ce5c2 1.0.11 2016-07-12 14:32:17 +02:00
2b3b991372 fixed q types dependency 2016-07-12 14:32:12 +02:00
487ba592a7 1.0.10 2016-07-12 14:04:31 +02:00
60e3239d99 fix response syntax 2016-07-12 14:04:23 +02:00
f23cc2eb82 1.0.9 2016-07-12 13:36:56 +02:00
de05d432b1 added rxjs, added getChangeObservable 2016-07-12 13:36:34 +02:00
4a90510ff4 add eventEmitter to dockersock class 2016-07-11 21:55:10 +02:00
bfda5177a6 1.0.8 2016-07-11 17:54:29 +02:00
ad2a1ac03d update timeout 2016-07-11 17:44:02 +02:00
99db0b902e remove confusing file 2016-07-11 17:41:47 +02:00
515d2d4970 1.0.7 2016-07-11 17:24:00 +02:00
abf2234480 add typings to package.json 2016-07-11 17:23:54 +02:00
b4c6bff74d 1.0.6 2016-06-17 02:38:03 +02:00
4da7f5194a implement .createContainer() 2016-06-17 02:38:00 +02:00
c356042075 implement .callOnChange() 2016-06-17 02:21:48 +02:00
14 changed files with 310 additions and 168 deletions

View File

@ -1,22 +1,26 @@
/// <reference types="q" />
import "typings-global"; import "typings-global";
import * as plugins from "./dockersock.plugins";
import { Observable } from "rxjs";
export declare class Dockersock { export declare class Dockersock {
sockPath: string; sockPath: string;
constructor(pathArg?: string); constructor(pathArg?: string);
auth(userArg: string, passArg: string): any; auth(userArg: string, passArg: string): plugins.q.Promise<{}>;
listContainers(): any; listContainers(): plugins.q.Promise<{}>;
listContainersDetailed(): any; listContainersDetailed(): plugins.q.Promise<{}>;
listContainersRunning(): any; listContainersRunning(): plugins.q.Promise<{}>;
listContainersStopped(): any; listContainersStopped(): plugins.q.Promise<{}>;
listImages(): any; listImages(): plugins.q.Promise<{}>;
listImagesDangling(): any; listImagesDangling(): plugins.q.Promise<{}>;
pullImage(imageLabel: string): any; pullImage(imageLabelArg: string): plugins.q.Promise<{}>;
createContainer(imageNameArg: any, pullFirst?: boolean): any; createContainer(optionsArg: any, pullFirstArg?: boolean): plugins.q.Promise<{}>;
getContainerId(): void; getContainerId(): void;
startContainer(containerNameArg: any): any; startContainer(containerNameArg: any): plugins.q.Promise<{}>;
stopContainer(containerNameArg: any): any; stopContainer(containerNameArg: any): plugins.q.Promise<{}>;
removeContainer(containerNameArg: any): any; removeContainer(containerNameArg: any): plugins.q.Promise<{}>;
clean(): any; clean(): plugins.q.Promise<{}>;
getChange(): void; callOnChange(cb: Function): void;
request(methodArg: string, routeArg: string, queryArg?: string, dataArg?: {}): any; getChangeObservable(): Observable<{}>;
requestStream(methodArg: any, routeArg: any, endArg?: boolean): any; request(methodArg: string, routeArg: string, queryArg?: string, dataArg?: {}): plugins.q.Promise<{}>;
requestStream(methodArg: string, routeArg: string, queryArg?: string, dataArg?: {}): plugins.q.Promise<{}>;
} }

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,5 @@
import "typings-global"; import "typings-global";
export import beautylog = require("beautylog"); export import beautylog = require("beautylog");
export declare let q: any; export import q = require("q");
export declare let request: any; export import request = require("request");
export import rxjs = require("rxjs");

View File

@ -3,5 +3,5 @@ require("typings-global");
exports.beautylog = require("beautylog"); exports.beautylog = require("beautylog");
exports.q = require("q"); exports.q = require("q");
exports.request = require("request"); exports.request = require("request");
exports.rxjs = require("rxjs");
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRvY2tlcnNvY2sucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ1YsaUJBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUNwQyxTQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLGVBQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMiLCJmaWxlIjoiZG9ja2Vyc29jay5wbHVnaW5zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmV4cG9ydCBpbXBvcnQgYmVhdXR5bG9nID0gcmVxdWlyZShcImJlYXV0eWxvZ1wiKTtcbmV4cG9ydCBsZXQgcSA9IHJlcXVpcmUoXCJxXCIpO1xuZXhwb3J0IGxldCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7Il19 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2Vyc29jay5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZG9ja2Vyc29jay5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDVixpQkFBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLFNBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUNqQixlQUFPLFdBQVcsU0FBUyxDQUFDLENBQUM7QUFDN0IsWUFBSSxXQUFXLE1BQU0sQ0FBQyxDQUFDIn0=

3
dist/index.js vendored
View File

@ -2,5 +2,4 @@
require("typings-global"); require("typings-global");
var dockersock_classes_dockersock_1 = require("./dockersock.classes.dockersock"); var dockersock_classes_dockersock_1 = require("./dockersock.classes.dockersock");
exports.Dockersock = dockersock_classes_dockersock_1.Dockersock; exports.Dockersock = dockersock_classes_dockersock_1.Dockersock;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3hCLDhDQUF5QixpQ0FBaUMsQ0FBQztBQUFuRCxnRUFBbUQifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIsOENBQXlCLGlDQUFpQyxDQUFDO0FBQW5ELGdFQUFrRCIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5leHBvcnQge0RvY2tlcnNvY2t9IGZyb20gXCIuL2RvY2tlcnNvY2suY2xhc3Nlcy5kb2NrZXJzb2NrXCIiXX0=

6
npmextra.json Normal file
View File

@ -0,0 +1,6 @@
{
"npmts":{
"mode":"default",
"coverageTreshold":10
}
}

View File

@ -1,4 +0,0 @@
{
"mode":"default",
"coverageTreshold":10
}

View File

@ -1,8 +1,9 @@
{ {
"name": "dockersock", "name": "dockersock",
"version": "1.0.5", "version": "1.0.14",
"description": "easy communication with docker from node, TypeScript ready", "description": "easy communication with docker from node, TypeScript ready",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts",
"scripts": { "scripts": {
"test": "npmts --notest && npm run build && npm run startdocker && npm run cleanup", "test": "npmts --notest && npm run build && npm run startdocker && npm run cleanup",
"build": "docker build -t npmts-test-image .", "build": "docker build -t npmts-test-image .",
@ -27,10 +28,12 @@
}, },
"homepage": "https://gitlab.com/pushrocks/dockersock#README", "homepage": "https://gitlab.com/pushrocks/dockersock#README",
"dependencies": { "dependencies": {
"beautylog": "^5.0.12", "@types/q": "*",
"beautylog": "^5.0.14",
"q": "^1.4.1", "q": "^1.4.1",
"request": "^2.72.0", "request": "^2.73.0",
"typings-global": "^1.0.3" "rxjs": "^5.0.0-beta.10",
"typings-global": "^1.0.6"
}, },
"devDependencies": { "devDependencies": {
"npmts-g": "^5.2.6", "npmts-g": "^5.2.6",

View File

@ -1,17 +1,17 @@
"use strict"; "use strict";
require("typings-test"); require("typings-test");
require("should"); require("should");
var index_1 = require("../dist/index"); const index_1 = require("../dist/index");
describe("dockersock", function () { describe("dockersock", function () {
describe(".Dockersock()", function () { describe(".Dockersock()", function () {
var testDockersock; let testDockersock;
it("should create a new Dockersock instance", function () { it("should create a new Dockersock instance", function () {
testDockersock = new index_1.Dockersock(); testDockersock = new index_1.Dockersock();
testDockersock.should.be.instanceof(index_1.Dockersock); testDockersock.should.be.instanceof(index_1.Dockersock);
}); });
it("should list containers", function (done) { it("should list containers", function (done) {
testDockersock.listContainers() testDockersock.listContainers()
.then(function (dataArg) { .then((dataArg) => {
console.log(dataArg); console.log(dataArg);
done(); done();
}); });
@ -19,19 +19,18 @@ describe("dockersock", function () {
it("should list detailed containers", function (done) { it("should list detailed containers", function (done) {
this.timeout(5000); this.timeout(5000);
testDockersock.listContainersDetailed() testDockersock.listContainersDetailed()
.then(function (dataArg) { .then((dataArg) => {
console.log(dataArg); console.log(dataArg);
done(); done();
}); });
}); });
it("should pull an image from imagetag", function (done) { it("should pull an image from imagetag", function (done) {
this.timeout(30000); this.timeout(60000);
testDockersock.pullImage("hosttoday%2Fht-docker-dbase") testDockersock.pullImage("hosttoday/ht-docker-dbase")
.then(function (dataArg) { .then((dataArg) => {
done(); done();
}, done); }, done);
}); });
}); });
}); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUVoQix3QkFBeUIsZUFFekIsQ0FBQyxDQUZ1QztBQUV4QyxRQUFRLENBQUMsWUFBWSxFQUFDO0lBQ2xCLFFBQVEsQ0FBQyxlQUFlLEVBQUM7UUFDckIsSUFBSSxjQUF5QixDQUFDO1FBQzlCLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBQztZQUN6QyxjQUFjLEdBQUcsSUFBSSxrQkFBVSxFQUFFLENBQUM7WUFDbEMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFVLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyx3QkFBd0IsRUFBQyxVQUFTLElBQUk7WUFDckMsY0FBYyxDQUFDLGNBQWMsRUFBRTtpQkFDMUIsSUFBSSxDQUFDLENBQUMsT0FBTztnQkFDVixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQixJQUFJLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsaUNBQWlDLEVBQUMsVUFBUyxJQUFJO1lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsY0FBYyxDQUFDLHNCQUFzQixFQUFFO2lCQUNsQyxJQUFJLENBQUMsQ0FBQyxPQUFPO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksRUFBRSxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBQyxVQUFTLElBQUk7WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQixjQUFjLENBQUMsU0FBUyxDQUFDLDJCQUEyQixDQUFDO2lCQUNoRCxJQUFJLENBQUMsQ0FBQyxPQUFPO2dCQUNWLElBQUksRUFBRSxDQUFDO1lBQ1gsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsUUFBTyxRQUVQLENBQUMsQ0FGYztBQUVmLHNCQUF5QixlQUV6QixDQUFDLENBRnVDO0FBRXhDLFFBQVEsQ0FBQyxZQUFZLEVBQUM7SUFDbEIsUUFBUSxDQUFDLGVBQWUsRUFBQztRQUNyQixJQUFJLGNBQXlCLENBQUM7UUFDOUIsRUFBRSxDQUFDLHlDQUF5QyxFQUFDO1lBQ3pDLGNBQWMsR0FBRyxJQUFJLGtCQUFVLEVBQUUsQ0FBQztZQUNsQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsa0JBQVUsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLHdCQUF3QixFQUFDLFVBQVMsSUFBSTtZQUNyQyxjQUFjLENBQUMsY0FBYyxFQUFFO2lCQUMxQixJQUFJLENBQUMsVUFBQyxPQUFPO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksRUFBRSxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBQyxVQUFTLElBQUk7WUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQixjQUFjLENBQUMsc0JBQXNCLEVBQUU7aUJBQ2xDLElBQUksQ0FBQyxVQUFDLE9BQU87Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckIsSUFBSSxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLG9DQUFvQyxFQUFDLFVBQVMsSUFBSTtZQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLGNBQWMsQ0FBQyxTQUFTLENBQUMsNkJBQTZCLENBQUM7aUJBQ2xELElBQUksQ0FBQyxVQUFDLE9BQU87Z0JBQ1YsSUFBSSxFQUFFLENBQUM7WUFDWCxDQUFDLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJ0eXBpbmdzLXRlc3RcIjtcbmltcG9ydCBcInNob3VsZFwiXG5cbmltcG9ydCB7RG9ja2Vyc29ja30gZnJvbSBcIi4uL2Rpc3QvaW5kZXhcIlxuXG5kZXNjcmliZShcImRvY2tlcnNvY2tcIixmdW5jdGlvbigpe1xuICAgIGRlc2NyaWJlKFwiLkRvY2tlcnNvY2soKVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgIGxldCB0ZXN0RG9ja2Vyc29jazpEb2NrZXJzb2NrO1xuICAgICAgICBpdChcInNob3VsZCBjcmVhdGUgYSBuZXcgRG9ja2Vyc29jayBpbnN0YW5jZVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0ZXN0RG9ja2Vyc29jayA9IG5ldyBEb2NrZXJzb2NrKCk7XG4gICAgICAgICAgICB0ZXN0RG9ja2Vyc29jay5zaG91bGQuYmUuaW5zdGFuY2VvZihEb2NrZXJzb2NrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KFwic2hvdWxkIGxpc3QgY29udGFpbmVyc1wiLGZ1bmN0aW9uKGRvbmUpe1xuICAgICAgICAgICAgdGVzdERvY2tlcnNvY2subGlzdENvbnRhaW5lcnMoKVxuICAgICAgICAgICAgICAgIC50aGVuKChkYXRhQXJnKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhQXJnKTtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoXCJzaG91bGQgbGlzdCBkZXRhaWxlZCBjb250YWluZXJzXCIsZnVuY3Rpb24oZG9uZSl7XG4gICAgICAgICAgICB0aGlzLnRpbWVvdXQoNTAwMCk7XG4gICAgICAgICAgICB0ZXN0RG9ja2Vyc29jay5saXN0Q29udGFpbmVyc0RldGFpbGVkKClcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YUFyZyk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YUFyZyk7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KFwic2hvdWxkIHB1bGwgYW4gaW1hZ2UgZnJvbSBpbWFnZXRhZ1wiLGZ1bmN0aW9uKGRvbmUpe1xuICAgICAgICAgICAgdGhpcy50aW1lb3V0KDMwMDAwKTtcbiAgICAgICAgICAgIHRlc3REb2NrZXJzb2NrLnB1bGxJbWFnZShcImhvc3R0b2RheSUyRmh0LWRvY2tlci1kYmFzZVwiKVxuICAgICAgICAgICAgICAgIC50aGVuKChkYXRhQXJnKT0+e1xuICAgICAgICAgICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgICAgICAgfSxkb25lKTtcbiAgICAgICAgfSlcbiAgICB9KTtcbn0pOyJdfQ==

View File

@ -1,5 +1,5 @@
import "typings-test"; import "typings-test";
import "should" import "should";
import {Dockersock} from "../dist/index" import {Dockersock} from "../dist/index"
@ -26,8 +26,8 @@ describe("dockersock",function(){
}); });
}); });
it("should pull an image from imagetag",function(done){ it("should pull an image from imagetag",function(done){
this.timeout(30000); this.timeout(60000);
testDockersock.pullImage("hosttoday%2Fht-docker-dbase") testDockersock.pullImage("hosttoday/ht-docker-dbase")
.then((dataArg)=>{ .then((dataArg)=>{
done(); done();
},done); },done);

View File

@ -1,2 +0,0 @@
docker build -t dockersock-image .
docker-compose up

View File

@ -1,5 +1,6 @@
import "typings-global" import "typings-global"
import * as plugins from "./dockersock.plugins"; import * as plugins from "./dockersock.plugins";
import {Observable} from "rxjs";
export class Dockersock { export class Dockersock {
sockPath:string; sockPath:string;
@ -56,13 +57,24 @@ export class Dockersock {
listImagesDangling(){ listImagesDangling(){
return this.request("GET","/images","?dangling=true"); return this.request("GET","/images","?dangling=true");
} }
pullImage(imageLabel:string){ pullImage(imageLabelArg:string){
let imageLabel = encodeURI(imageLabelArg);
return this.requestStream("POST","/images/create?fromImage=" + imageLabel); return this.requestStream("POST","/images/create?fromImage=" + imageLabel);
}; };
createContainer(imageNameArg,pullFirst:boolean = true){ createContainer(optionsArg,pullFirstArg:boolean = true){
return this.request("POST","/containers/create","",{ let done = plugins.q.defer();
"image":imageNameArg let create = () => {
}); return this.request("POST","/containers/create","",optionsArg);
}
if(pullFirstArg){
this.pullImage(optionsArg.Image)
.then(create)
.then(done.resolve);
} else {
create()
.then(done.resolve)
}
return done.promise;
}; };
getContainerId(){ getContainerId(){
@ -80,9 +92,49 @@ export class Dockersock {
let done = plugins.q.defer(); let done = plugins.q.defer();
return done.promise; return done.promise;
}; };
getChange(){ callOnChange(cb:Function){
let cbPromise;
let changeBuffered:boolean = false; // when cb is running then buffer any consequent change
let requestStream = plugins.request.get(this.sockPath + "/events");
requestStream.on("response",(response) => {
if(response.statusCode == 200){
plugins.beautylog.ok("request returned status 200, so we are good!");
} else {
plugins.beautylog.error("request returned error: " + response.statusCode);
}
});
requestStream.on("data",(data:Buffer) => {
let status = JSON.parse(data.toString()).status;
plugins.beautylog.logReduced(status);
if(typeof cbPromise == "undefined" || cbPromise.state == "pending"){
cbPromise = cb();
} else if (changeBuffered) {
changeBuffered = true;
cbPromise.then(() => {
changeBuffered = false;
cbPromise = cb();
});
}
});
requestStream.on("end",()=> {
});
}; };
getChangeObservable(){
let requestStream = plugins.request.get(this.sockPath + "/events");
requestStream.on("response",(response) => {
if(response.statusCode == 200){
plugins.beautylog.ok("request returned status 200, so we are good!");
} else {
plugins.beautylog.error("request returned error: " + response.statusCode);
}
});
let changeObservable = Observable.fromEvent(requestStream,"data");
requestStream.on("end",()=> {
});
return changeObservable;
}
request(methodArg:string,routeArg:string,queryArg:string = "", dataArg = {}){ request(methodArg:string,routeArg:string,queryArg:string = "", dataArg = {}){
let done = plugins.q.defer(); let done = plugins.q.defer();
let jsonArg:string = JSON.stringify(dataArg); let jsonArg:string = JSON.stringify(dataArg);
@ -92,10 +144,12 @@ export class Dockersock {
method:methodArg, method:methodArg,
url:this.sockPath + routeArg + suffix + queryArg, url:this.sockPath + routeArg + suffix + queryArg,
headers:{ headers:{
"Content-Type":"application/json" "Content-Type":"application/json",
"Host":"docker.sock"
}, },
body:jsonArg body:jsonArg
}; };
//console.log(options);
plugins.request(options,(err, res, body) => { plugins.request(options,(err, res, body) => {
if (!err && res.statusCode == 200) { if (!err && res.statusCode == 200) {
var responseObj = JSON.parse(body); var responseObj = JSON.parse(body);
@ -108,26 +162,41 @@ export class Dockersock {
}); });
return done.promise; return done.promise;
} }
requestStream(methodArg,routeArg,endArg:boolean = true){ requestStream(methodArg:string,routeArg:string,queryArg:string = "", dataArg = {}){
let done = plugins.q.defer(); let done = plugins.q.defer();
if(methodArg == "POST"){ let jsonArg:string = JSON.stringify(dataArg);
let requestStream = plugins.request.post(this.sockPath + routeArg); let suffix:string = "";
requestStream.on("response",(response) => { let options = {
if(response.statusCode == 200){ method:methodArg,
plugins.beautylog.ok("request returned status 200, so we are good!"); url:this.sockPath + routeArg + suffix + queryArg,
} else { headers:{
plugins.beautylog.error("request returned error: " + response.statusCode); "Content-Type":"application/json",
done.reject(); "Host":"docker.sock"
} },
}); body:jsonArg
requestStream.on("data",(data:Buffer) => { };
let status = JSON.parse(data.toString()).status; let requestStream = plugins.request(options,(err, res, body) => {
plugins.beautylog.logReduced(status); if (!err && res.statusCode == 200) {
});
requestStream.on("end",()=> {
done.resolve(); done.resolve();
}); } else {
} console.log(err);
console.log(res);
done.reject(err);
};
});
requestStream.on("response",(response) => {
if(response.statusCode == 200){
plugins.beautylog.ok("request returned status 200, so we are good!");
} else {
plugins.beautylog.error("request returned error: " + response.statusCode);
done.reject(response);
}
});
requestStream.on("data",(data:Buffer) => {
let status;
status = JSON.parse(data.toString()).status;
plugins.beautylog.logReduced(status);
});
return done.promise; return done.promise;
} }
} }

View File

@ -1,4 +1,5 @@
import "typings-global"; import "typings-global";
export import beautylog = require("beautylog"); export import beautylog = require("beautylog");
export let q = require("q"); export import q = require("q");
export let request = require("request"); export import request = require("request");
export import rxjs = require("rxjs");

View File

@ -1,2 +1,2 @@
import "typings-global"; import "typings-global";
export {Dockersock} from "./dockersock.classes.dockersock" export {Dockersock} from "./dockersock.classes.dockersock";