pact_broker 0.0.10 → 1.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. data/.gitignore +3 -0
  2. data/Gemfile +0 -3
  3. data/README.md +28 -1
  4. data/Rakefile +4 -2
  5. data/assets/d3.v3.js +9263 -0
  6. data/assets/force.csv +29 -0
  7. data/assets/index.html +186 -0
  8. data/assets/index2.html +224 -0
  9. data/assets/relationships +4 -0
  10. data/assets/stylesheets/github.css +387 -0
  11. data/bethtest.rb +67 -0
  12. data/config.ru +10 -4
  13. data/config/boot.rb +4 -0
  14. data/example/Gemfile +5 -0
  15. data/example/config.ru +18 -0
  16. data/lib/db.rb +52 -0
  17. data/lib/pact_broker.rb +2 -0
  18. data/lib/pact_broker/api.rb +2 -0
  19. data/lib/pact_broker/api/decorators/pact_collection_decorator.rb +1 -1
  20. data/lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb +1 -1
  21. data/lib/pact_broker/api/decorators/relationships_csv_decorator.rb +32 -0
  22. data/lib/pact_broker/api/renderers/html_pact_renderer.rb +43 -0
  23. data/lib/pact_broker/api/resources/latest_pact.rb +7 -1
  24. data/lib/pact_broker/api/resources/relationships.rb +29 -0
  25. data/lib/pact_broker/app.rb +82 -0
  26. data/lib/pact_broker/configuration.rb +47 -0
  27. data/lib/pact_broker/db.rb +7 -39
  28. data/lib/pact_broker/models/relationship.rb +27 -0
  29. data/lib/pact_broker/project_root.rb +7 -0
  30. data/lib/pact_broker/services/pacticipant_service.rb +6 -0
  31. data/lib/pact_broker/ui/controllers/base_controller.rb +15 -0
  32. data/lib/pact_broker/ui/controllers/clusters.rb +28 -0
  33. data/lib/pact_broker/ui/controllers/relationships.rb +21 -0
  34. data/lib/pact_broker/ui/view_models/clusters.rb +0 -0
  35. data/lib/pact_broker/ui/view_models/relationship.rb +35 -0
  36. data/lib/pact_broker/ui/view_models/relationships.rb +21 -0
  37. data/lib/pact_broker/ui/views/clusters/show.haml +2 -0
  38. data/lib/pact_broker/ui/views/layouts/main.haml +2 -0
  39. data/lib/pact_broker/ui/views/relationships/show.haml +44 -0
  40. data/lib/pact_broker/version.rb +1 -1
  41. data/lib/rack/hal_browser.rb +1 -0
  42. data/lib/rack/hal_browser/redirect.rb +45 -0
  43. data/pact_broker.gemspec +10 -8
  44. data/public/bootstrap.zip +0 -0
  45. data/public/config.json +412 -0
  46. data/public/css/bootstrap-theme.css +346 -0
  47. data/public/css/bootstrap-theme.min.css +7 -0
  48. data/public/css/bootstrap.css +5780 -0
  49. data/public/css/bootstrap.min.css +7 -0
  50. data/public/fonts/glyphicons-halflings-regular.eot +0 -0
  51. data/public/fonts/glyphicons-halflings-regular.svg +229 -0
  52. data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  53. data/public/fonts/glyphicons-halflings-regular.woff +0 -0
  54. data/public/javascripts/jquery-2.1.1.min.js +4 -0
  55. data/public/javascripts/jquery.tablesorter.js +1765 -0
  56. data/public/javascripts/jquery.tablesorter.min.js +5 -0
  57. data/public/js/bootstrap.js +1943 -0
  58. data/public/js/bootstrap.min.js +7 -0
  59. data/public/stylesheets/github.css +387 -0
  60. data/public/stylesheets/relationships.css +18 -0
  61. data/script/update-hal-browser +6 -0
  62. data/spec/fixtures/renderer_pact.json +34 -0
  63. data/spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb +30 -0
  64. data/spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb +29 -0
  65. data/spec/lib/pact_broker/api/resources/latest_pact_spec.rb +57 -0
  66. data/spec/lib/pact_broker/configuration_spec.rb +21 -0
  67. data/spec/lib/pact_broker/services/pacticipant_service_spec.rb +30 -0
  68. data/spec/lib/pact_broker/ui/controllers/clusters_spec.rb +27 -0
  69. data/spec/lib/pact_broker/ui/controllers/relationships_spec.rb +37 -0
  70. data/spec/lib/pact_broker/ui/view_models/relationship_spec.rb +29 -0
  71. data/spec/lib/rack/hal_browser/redirect_spec.rb +63 -0
  72. data/spec/service_consumers/pact_helper.rb +1 -1
  73. data/spec/spec_helper.rb +10 -3
  74. data/tasks/database.rb +57 -0
  75. data/tasks/db.rake +57 -12
  76. data/tasks/pact.rake +1 -1
  77. data/tasks/rspec.rake +1 -9
  78. data/vendor/hal-browser/.gitignore +1 -0
  79. data/vendor/hal-browser/MIT-LICENSE.txt +20 -0
  80. data/vendor/hal-browser/README.md +35 -0
  81. data/vendor/hal-browser/browser.html +246 -0
  82. data/vendor/hal-browser/js/hal.js +57 -0
  83. data/vendor/hal-browser/js/hal/browser.js +60 -0
  84. data/vendor/hal-browser/js/hal/http/client.js +38 -0
  85. data/vendor/hal-browser/js/hal/resource.js +34 -0
  86. data/vendor/hal-browser/js/hal/views/browser.js +29 -0
  87. data/vendor/hal-browser/js/hal/views/documentation.js +7 -0
  88. data/vendor/hal-browser/js/hal/views/embedded_resource.js +56 -0
  89. data/vendor/hal-browser/js/hal/views/embedded_resources.js +41 -0
  90. data/vendor/hal-browser/js/hal/views/explorer.js +23 -0
  91. data/vendor/hal-browser/js/hal/views/inspector.js +39 -0
  92. data/vendor/hal-browser/js/hal/views/links.js +54 -0
  93. data/vendor/hal-browser/js/hal/views/location_bar.js +40 -0
  94. data/vendor/hal-browser/js/hal/views/navigation.js +19 -0
  95. data/vendor/hal-browser/js/hal/views/non_safe_request_dialog.js +53 -0
  96. data/vendor/hal-browser/js/hal/views/properties.js +14 -0
  97. data/vendor/hal-browser/js/hal/views/query_uri_dialog.js +69 -0
  98. data/vendor/hal-browser/js/hal/views/request_headers.js +30 -0
  99. data/vendor/hal-browser/js/hal/views/resource.js +38 -0
  100. data/vendor/hal-browser/js/hal/views/response.js +24 -0
  101. data/vendor/hal-browser/js/hal/views/response_body.js +40 -0
  102. data/vendor/hal-browser/js/hal/views/response_headers.js +19 -0
  103. data/vendor/hal-browser/styles.css +67 -0
  104. data/vendor/hal-browser/vendor/css/bootstrap-responsive.css +1109 -0
  105. data/vendor/hal-browser/vendor/css/bootstrap.css +6158 -0
  106. data/vendor/hal-browser/vendor/img/ajax-loader.gif +0 -0
  107. data/vendor/hal-browser/vendor/img/glyphicons-halflings-white.png +0 -0
  108. data/vendor/hal-browser/vendor/img/glyphicons-halflings.png +0 -0
  109. data/vendor/hal-browser/vendor/js/backbone.js +1487 -0
  110. data/vendor/hal-browser/vendor/js/bootstrap.js +2276 -0
  111. data/vendor/hal-browser/vendor/js/jquery-1.9.1.js +9597 -0
  112. data/vendor/hal-browser/vendor/js/underscore.js +1227 -0
  113. data/vendor/hal-browser/vendor/js/uritemplates.js +438 -0
  114. metadata +162 -47
  115. data/Gemfile.lock +0 -110
@@ -0,0 +1,438 @@
1
+ /*
2
+ UriTemplates Template Processor - Version: @VERSION - Dated: @DATE
3
+ (c) marc.portier@gmail.com - 2011-2012
4
+ Licensed under ALPv2
5
+ */
6
+
7
+ ;
8
+ var uritemplate = (function() {
9
+
10
+ // Below are the functions we originally used from jQuery.
11
+ // The implementations below are often more naive then what is inside jquery, but they suffice for our needs.
12
+
13
+ function isFunction(fn) {
14
+ return typeof fn == 'function';
15
+ }
16
+
17
+ function isEmptyObject (obj) {
18
+ for(var name in obj){
19
+ return false;
20
+ }
21
+ return true;
22
+ }
23
+
24
+ function extend(base, newprops) {
25
+ for (var name in newprops) {
26
+ base[name] = newprops[name];
27
+ }
28
+ return base;
29
+ }
30
+
31
+ /**
32
+ * Create a runtime cache around retrieved values from the context.
33
+ * This allows for dynamic (function) results to be kept the same for multiple
34
+ * occuring expansions within one template.
35
+ * Note: Uses key-value tupples to be able to cache null values as well.
36
+ */
37
+ //TODO move this into prep-processing
38
+ function CachingContext(context) {
39
+ this.raw = context;
40
+ this.cache = {};
41
+ }
42
+ CachingContext.prototype.get = function(key) {
43
+ var val = this.lookupRaw(key);
44
+ var result = val;
45
+
46
+ if (isFunction(val)) { // check function-result-cache
47
+ var tupple = this.cache[key];
48
+ if (tupple !== null && tupple !== undefined) {
49
+ result = tupple.val;
50
+ } else {
51
+ result = val(this.raw);
52
+ this.cache[key] = {key: key, val: result};
53
+ // NOTE: by storing tupples we make sure a null return is validly consistent too in expansions
54
+ }
55
+ }
56
+ return result;
57
+ };
58
+
59
+ CachingContext.prototype.lookupRaw = function(key) {
60
+ return CachingContext.lookup(this, this.raw, key);
61
+ };
62
+
63
+ CachingContext.lookup = function(me, context, key) {
64
+ var result = context[key];
65
+ if (result !== undefined) {
66
+ return result;
67
+ } else {
68
+ var keyparts = key.split('.');
69
+ var i = 0, keysplits = keyparts.length - 1;
70
+ for (i = 0; i<keysplits; i++) {
71
+ var leadKey = keyparts.slice(0, keysplits - i).join('.');
72
+ var trailKey = keyparts.slice(-i-1).join('.');
73
+ var leadContext = context[leadKey];
74
+ if (leadContext !== undefined) {
75
+ return CachingContext.lookup(me, leadContext, trailKey);
76
+ }
77
+ }
78
+ return undefined;
79
+ }
80
+ };
81
+
82
+
83
+ function UriTemplate(set) {
84
+ this.set = set;
85
+ }
86
+
87
+ UriTemplate.prototype.expand = function(context) {
88
+ var cache = new CachingContext(context);
89
+ var res = "";
90
+ var i = 0, cnt = this.set.length;
91
+ for (i = 0; i<cnt; i++ ) {
92
+ res += this.set[i].expand(cache);
93
+ }
94
+ return res;
95
+ };
96
+
97
+ //TODO: change since draft-0.6 about characters in literals
98
+ /* extract:
99
+ The characters outside of expressions in a URI Template string are intended to be copied literally to the URI-reference if the character is allowed in a URI (reserved / unreserved / pct-encoded) or, if not allowed, copied to the URI-reference in its UTF-8 pct-encoded form.
100
+ */
101
+ function Literal(txt ) {
102
+ this.txt = txt;
103
+ }
104
+
105
+ Literal.prototype.expand = function() {
106
+ return this.txt;
107
+ };
108
+
109
+
110
+
111
+ var RESERVEDCHARS_RE = new RegExp("[:/?#\\[\\]@!$&()*+,;=']","g");
112
+ function encodeNormal(val) {
113
+ return encodeURIComponent(val).replace(RESERVEDCHARS_RE, function(s) {return escape(s);} );
114
+ }
115
+
116
+ //var SELECTEDCHARS_RE = new RegExp("[]","g");
117
+ function encodeReserved(val) {
118
+ //return encodeURI(val).replace(SELECTEDCHARS_RE, function(s) {return escape(s)} );
119
+ return encodeURI(val); // no need for additional replace if selected-chars is empty
120
+ }
121
+
122
+
123
+ function addUnNamed(name, key, val) {
124
+ return key + (key.length > 0 ? "=" : "") + val;
125
+ }
126
+
127
+ function addNamed(name, key, val, noName) {
128
+ noName = noName || false;
129
+ if (noName) { name = ""; }
130
+
131
+ if (!key || key.length === 0) {
132
+ key = name;
133
+ }
134
+ return key + (key.length > 0 ? "=" : "") + val;
135
+ }
136
+
137
+ function addLabeled(name, key, val, noName) {
138
+ noName = noName || false;
139
+ if (noName) { name = ""; }
140
+
141
+ if (!key || key.length === 0) {
142
+ key = name;
143
+ }
144
+ return key + (key.length > 0 && val ? "=" : "") + val;
145
+ }
146
+
147
+
148
+ var simpleConf = {
149
+ prefix : "", joiner : ",", encode : encodeNormal, builder : addUnNamed
150
+ };
151
+ var reservedConf = {
152
+ prefix : "", joiner : ",", encode : encodeReserved, builder : addUnNamed
153
+ };
154
+ var fragmentConf = {
155
+ prefix : "#", joiner : ",", encode : encodeReserved, builder : addUnNamed
156
+ };
157
+ var pathParamConf = {
158
+ prefix : ";", joiner : ";", encode : encodeNormal, builder : addLabeled
159
+ };
160
+ var formParamConf = {
161
+ prefix : "?", joiner : "&", encode : encodeNormal, builder : addNamed
162
+ };
163
+ var formContinueConf = {
164
+ prefix : "&", joiner : "&", encode : encodeNormal, builder : addNamed
165
+ };
166
+ var pathHierarchyConf = {
167
+ prefix : "/", joiner : "/", encode : encodeNormal, builder : addUnNamed
168
+ };
169
+ var labelConf = {
170
+ prefix : ".", joiner : ".", encode : encodeNormal, builder : addUnNamed
171
+ };
172
+
173
+
174
+ function Expression(conf, vars ) {
175
+ extend(this, conf);
176
+ this.vars = vars;
177
+ }
178
+
179
+ Expression.build = function(ops, vars) {
180
+ var conf;
181
+ switch(ops) {
182
+ case '' : conf = simpleConf; break;
183
+ case '+' : conf = reservedConf; break;
184
+ case '#' : conf = fragmentConf; break;
185
+ case ';' : conf = pathParamConf; break;
186
+ case '?' : conf = formParamConf; break;
187
+ case '&' : conf = formContinueConf; break;
188
+ case '/' : conf = pathHierarchyConf; break;
189
+ case '.' : conf = labelConf; break;
190
+ default : throw "Unexpected operator: '"+ops+"'";
191
+ }
192
+ return new Expression(conf, vars);
193
+ };
194
+
195
+ Expression.prototype.expand = function(context) {
196
+ var joiner = this.prefix;
197
+ var nextjoiner = this.joiner;
198
+ var buildSegment = this.builder;
199
+ var res = "";
200
+ var i = 0, cnt = this.vars.length;
201
+
202
+ for (i = 0 ; i< cnt; i++) {
203
+ var varspec = this.vars[i];
204
+ varspec.addValues(context, this.encode, function(key, val, noName) {
205
+ var segm = buildSegment(varspec.name, key, val, noName);
206
+ if (segm !== null && segm !== undefined) {
207
+ res += joiner + segm;
208
+ joiner = nextjoiner;
209
+ }
210
+ });
211
+ }
212
+ return res;
213
+ };
214
+
215
+
216
+
217
+ var UNBOUND = {};
218
+
219
+ /**
220
+ * Helper class to help grow a string of (possibly encoded) parts until limit is reached
221
+ */
222
+ function Buffer(limit) {
223
+ this.str = "";
224
+ if (limit === UNBOUND) {
225
+ this.appender = Buffer.UnboundAppend;
226
+ } else {
227
+ this.len = 0;
228
+ this.limit = limit;
229
+ this.appender = Buffer.BoundAppend;
230
+ }
231
+ }
232
+
233
+ Buffer.prototype.append = function(part, encoder) {
234
+ return this.appender(this, part, encoder);
235
+ };
236
+
237
+ Buffer.UnboundAppend = function(me, part, encoder) {
238
+ part = encoder ? encoder(part) : part;
239
+ me.str += part;
240
+ return me;
241
+ };
242
+
243
+ Buffer.BoundAppend = function(me, part, encoder) {
244
+ part = part.substring(0, me.limit - me.len);
245
+ me.len += part.length;
246
+
247
+ part = encoder ? encoder(part) : part;
248
+ me.str += part;
249
+ return me;
250
+ };
251
+
252
+
253
+ function arrayToString(arr, encoder, maxLength) {
254
+ var buffer = new Buffer(maxLength);
255
+ var joiner = "";
256
+
257
+ var i = 0, cnt = arr.length;
258
+ for (i=0; i<cnt; i++) {
259
+ if (arr[i] !== null && arr[i] !== undefined) {
260
+ buffer.append(joiner).append(arr[i], encoder);
261
+ joiner = ",";
262
+ }
263
+ }
264
+ return buffer.str;
265
+ }
266
+
267
+ function objectToString(obj, encoder, maxLength) {
268
+ var buffer = new Buffer(maxLength);
269
+ var joiner = "";
270
+ var k;
271
+
272
+ for (k in obj) {
273
+ if (obj.hasOwnProperty(k) ) {
274
+ if (obj[k] !== null && obj[k] !== undefined) {
275
+ buffer.append(joiner + k + ',').append(obj[k], encoder);
276
+ joiner = ",";
277
+ }
278
+ }
279
+ }
280
+ return buffer.str;
281
+ }
282
+
283
+
284
+ function simpleValueHandler(me, val, valprops, encoder, adder) {
285
+ var result;
286
+
287
+ if (valprops.isArr) {
288
+ result = arrayToString(val, encoder, me.maxLength);
289
+ } else if (valprops.isObj) {
290
+ result = objectToString(val, encoder, me.maxLength);
291
+ } else {
292
+ var buffer = new Buffer(me.maxLength);
293
+ result = buffer.append(val, encoder).str;
294
+ }
295
+
296
+ adder("", result);
297
+ }
298
+
299
+ function explodeValueHandler(me, val, valprops, encoder, adder) {
300
+ if (valprops.isArr) {
301
+ var i = 0, cnt = val.length;
302
+ for (i = 0; i<cnt; i++) {
303
+ adder("", encoder(val[i]) );
304
+ }
305
+ } else if (valprops.isObj) {
306
+ var k;
307
+ for (k in val) {
308
+ if (val.hasOwnProperty(k)) {
309
+ adder(k, encoder(val[k]) );
310
+ }
311
+ }
312
+ } else { // explode-requested, but single value
313
+ adder("", encoder(val));
314
+ }
315
+ }
316
+
317
+ function valueProperties(val) {
318
+ var isArr = false;
319
+ var isObj = false;
320
+ var isUndef = true; //note: "" is empty but not undef
321
+
322
+ if (val !== null && val !== undefined) {
323
+ isArr = (val.constructor === Array);
324
+ isObj = (val.constructor === Object);
325
+ isUndef = (isArr && val.length === 0) || (isObj && isEmptyObject(val));
326
+ }
327
+
328
+ return {isArr: isArr, isObj: isObj, isUndef: isUndef};
329
+ }
330
+
331
+
332
+ function VarSpec (name, vhfn, nums) {
333
+ this.name = unescape(name);
334
+ this.valueHandler = vhfn;
335
+ this.maxLength = nums;
336
+ }
337
+
338
+
339
+ VarSpec.build = function(name, expl, part, nums) {
340
+ var valueHandler, valueModifier;
341
+
342
+ if (!!expl) { //interprete as boolean
343
+ valueHandler = explodeValueHandler;
344
+ } else {
345
+ valueHandler = simpleValueHandler;
346
+ }
347
+
348
+ if (!part) {
349
+ nums = UNBOUND;
350
+ }
351
+
352
+ return new VarSpec(name, valueHandler, nums);
353
+ };
354
+
355
+
356
+ VarSpec.prototype.addValues = function(context, encoder, adder) {
357
+ var val = context.get(this.name);
358
+ var valprops = valueProperties(val);
359
+ if (valprops.isUndef) { return; } // ignore empty values
360
+ this.valueHandler(this, val, valprops, encoder, adder);
361
+ };
362
+
363
+
364
+
365
+ //----------------------------------------------parsing logic
366
+ // How each varspec should look like
367
+ var VARSPEC_RE=/([^*:]*)((\*)|(:)([0-9]+))?/;
368
+
369
+ var match2varspec = function(m) {
370
+ var name = m[1];
371
+ var expl = m[3];
372
+ var part = m[4];
373
+ var nums = parseInt(m[5], 10);
374
+
375
+ return VarSpec.build(name, expl, part, nums);
376
+ };
377
+
378
+
379
+ // Splitting varspecs in list with:
380
+ var LISTSEP=",";
381
+
382
+ // How each template should look like
383
+ var TEMPL_RE=/(\{([+#.;?&\/])?(([^.*:,{}|@!=$()][^*:,{}$()]*)(\*|:([0-9]+))?(,([^.*:,{}][^*:,{}]*)(\*|:([0-9]+))?)*)\})/g;
384
+ // Note: reserved operators: |!@ are left out of the regexp in order to make those templates degrade into literals
385
+ // (as expected by the spec - see tests.html "reserved operators")
386
+
387
+
388
+ var match2expression = function(m) {
389
+ var expr = m[0];
390
+ var ops = m[2] || '';
391
+ var vars = m[3].split(LISTSEP);
392
+ var i = 0, len = vars.length;
393
+ for (i = 0; i<len; i++) {
394
+ var match;
395
+ if ( (match = vars[i].match(VARSPEC_RE)) === null) {
396
+ throw "unexpected parse error in varspec: " + vars[i];
397
+ }
398
+ vars[i] = match2varspec(match);
399
+ }
400
+
401
+ return Expression.build(ops, vars);
402
+ };
403
+
404
+
405
+ var pushLiteralSubstr = function(set, src, from, to) {
406
+ if (from < to) {
407
+ var literal = src.substr(from, to - from);
408
+ set.push(new Literal(literal));
409
+ }
410
+ };
411
+
412
+ var parse = function(str) {
413
+ var lastpos = 0;
414
+ var comp = [];
415
+
416
+ var match;
417
+ var pattern = TEMPL_RE;
418
+ pattern.lastIndex = 0; // just to be sure
419
+ while ((match = pattern.exec(str)) !== null) {
420
+ var newpos = match.index;
421
+ pushLiteralSubstr(comp, str, lastpos, newpos);
422
+
423
+ comp.push(match2expression(match));
424
+ lastpos = pattern.lastIndex;
425
+ }
426
+ pushLiteralSubstr(comp, str, lastpos, str.length);
427
+
428
+ return new UriTemplate(comp);
429
+ };
430
+
431
+
432
+ //-------------------------------------------comments and ideas
433
+
434
+ //TODO: consider building cache of previously parsed uris or even parsed expressions?
435
+
436
+ return parse;
437
+
438
+ }());
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
5
- prerelease:
4
+ version: 1.0.0.alpha1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Bethany Skurrie
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-03-24 00:00:00.000000000 Z
14
+ date: 2014-05-09 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: httparty
@@ -126,62 +126,78 @@ dependencies:
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  - !ruby/object:Gem::Dependency
129
- name: rake
129
+ name: rack
130
+ requirement: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ type: :runtime
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ - !ruby/object:Gem::Dependency
145
+ name: redcarpet
130
146
  requirement: !ruby/object:Gem::Requirement
131
147
  none: false
132
148
  requirements:
133
149
  - - ~>
134
150
  - !ruby/object:Gem::Version
135
- version: 10.0.3
136
- type: :development
151
+ version: 3.1.1
152
+ type: :runtime
137
153
  prerelease: false
138
154
  version_requirements: !ruby/object:Gem::Requirement
139
155
  none: false
140
156
  requirements:
141
157
  - - ~>
142
158
  - !ruby/object:Gem::Version
143
- version: 10.0.3
159
+ version: 3.1.1
144
160
  - !ruby/object:Gem::Dependency
145
- name: pry
161
+ name: pact
146
162
  requirement: !ruby/object:Gem::Requirement
147
163
  none: false
148
164
  requirements:
149
- - - ! '>='
165
+ - - ~>
150
166
  - !ruby/object:Gem::Version
151
- version: '0'
152
- type: :development
167
+ version: 1.1.0
168
+ type: :runtime
153
169
  prerelease: false
154
170
  version_requirements: !ruby/object:Gem::Requirement
155
171
  none: false
156
172
  requirements:
157
- - - ! '>='
173
+ - - ~>
158
174
  - !ruby/object:Gem::Version
159
- version: '0'
175
+ version: 1.1.0
160
176
  - !ruby/object:Gem::Dependency
161
- name: fakefs
177
+ name: padrino
162
178
  requirement: !ruby/object:Gem::Requirement
163
179
  none: false
164
180
  requirements:
165
181
  - - ~>
166
182
  - !ruby/object:Gem::Version
167
- version: '0.4'
168
- type: :development
183
+ version: 0.9.29
184
+ type: :runtime
169
185
  prerelease: false
170
186
  version_requirements: !ruby/object:Gem::Requirement
171
187
  none: false
172
188
  requirements:
173
189
  - - ~>
174
190
  - !ruby/object:Gem::Version
175
- version: '0.4'
191
+ version: 0.9.29
176
192
  - !ruby/object:Gem::Dependency
177
- name: rspec-fire
193
+ name: haml
178
194
  requirement: !ruby/object:Gem::Requirement
179
195
  none: false
180
196
  requirements:
181
197
  - - ! '>='
182
198
  - !ruby/object:Gem::Version
183
199
  version: '0'
184
- type: :development
200
+ type: :runtime
185
201
  prerelease: false
186
202
  version_requirements: !ruby/object:Gem::Requirement
187
203
  none: false
@@ -190,7 +206,7 @@ dependencies:
190
206
  - !ruby/object:Gem::Version
191
207
  version: '0'
192
208
  - !ruby/object:Gem::Dependency
193
- name: debugger
209
+ name: pry
194
210
  requirement: !ruby/object:Gem::Requirement
195
211
  none: false
196
212
  requirements:
@@ -206,69 +222,69 @@ dependencies:
206
222
  - !ruby/object:Gem::Version
207
223
  version: '0'
208
224
  - !ruby/object:Gem::Dependency
209
- name: ci_reporter
225
+ name: rake
210
226
  requirement: !ruby/object:Gem::Requirement
211
227
  none: false
212
228
  requirements:
213
- - - ! '>='
229
+ - - ~>
214
230
  - !ruby/object:Gem::Version
215
- version: '0'
231
+ version: '10.0'
216
232
  type: :development
217
233
  prerelease: false
218
234
  version_requirements: !ruby/object:Gem::Requirement
219
235
  none: false
220
236
  requirements:
221
- - - ! '>='
237
+ - - ~>
222
238
  - !ruby/object:Gem::Version
223
- version: '0'
239
+ version: '10.0'
224
240
  - !ruby/object:Gem::Dependency
225
- name: simplecov
241
+ name: fakefs
226
242
  requirement: !ruby/object:Gem::Requirement
227
243
  none: false
228
244
  requirements:
229
- - - ! '>='
245
+ - - ~>
230
246
  - !ruby/object:Gem::Version
231
- version: '0'
247
+ version: '0.4'
232
248
  type: :development
233
249
  prerelease: false
234
250
  version_requirements: !ruby/object:Gem::Requirement
235
251
  none: false
236
252
  requirements:
237
- - - ! '>='
253
+ - - ~>
238
254
  - !ruby/object:Gem::Version
239
- version: '0'
255
+ version: '0.4'
240
256
  - !ruby/object:Gem::Dependency
241
- name: shotgun
257
+ name: rspec-fire
242
258
  requirement: !ruby/object:Gem::Requirement
243
259
  none: false
244
260
  requirements:
245
- - - ! '>='
261
+ - - ~>
246
262
  - !ruby/object:Gem::Version
247
- version: '0'
263
+ version: 1.2.0
248
264
  type: :development
249
265
  prerelease: false
250
266
  version_requirements: !ruby/object:Gem::Requirement
251
267
  none: false
252
268
  requirements:
253
- - - ! '>='
269
+ - - ~>
254
270
  - !ruby/object:Gem::Version
255
- version: '0'
271
+ version: 1.2.0
256
272
  - !ruby/object:Gem::Dependency
257
- name: pact
273
+ name: mysql2
258
274
  requirement: !ruby/object:Gem::Requirement
259
275
  none: false
260
276
  requirements:
261
- - - '='
277
+ - - ~>
262
278
  - !ruby/object:Gem::Version
263
- version: 1.1.0.rc1
279
+ version: 0.3.15
264
280
  type: :development
265
281
  prerelease: false
266
282
  version_requirements: !ruby/object:Gem::Requirement
267
283
  none: false
268
284
  requirements:
269
- - - '='
285
+ - - ~>
270
286
  - !ruby/object:Gem::Version
271
- version: 1.1.0.rc1
287
+ version: 0.3.15
272
288
  description: A server that stores and returns pact files generated by the pact gem.
273
289
  It enables head/prod cross testing of the consumer and provider projects.
274
290
  email:
@@ -283,9 +299,15 @@ files:
283
299
  - .rspec
284
300
  - CHANGELOG.md
285
301
  - Gemfile
286
- - Gemfile.lock
287
302
  - README.md
288
303
  - Rakefile
304
+ - assets/d3.v3.js
305
+ - assets/force.csv
306
+ - assets/index.html
307
+ - assets/index2.html
308
+ - assets/relationships
309
+ - assets/stylesheets/github.css
310
+ - bethtest.rb
289
311
  - config.ru
290
312
  - config/boot.rb
291
313
  - config/database.yml
@@ -295,6 +317,9 @@ files:
295
317
  - db/migrations/04_create_tags_table.rb
296
318
  - db/migrations/05_add_order_column_to_version.rb
297
319
  - db/pact_broker_database.sqlite3
320
+ - example/Gemfile
321
+ - example/config.ru
322
+ - lib/db.rb
298
323
  - lib/pact_broker.rb
299
324
  - lib/pact_broker/api.rb
300
325
  - lib/pact_broker/api/decorators.rb
@@ -305,10 +330,12 @@ files:
305
330
  - lib/pact_broker/api/decorators/pact_pacticipant_decorator.rb
306
331
  - lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb
307
332
  - lib/pact_broker/api/decorators/pacticipant_decorator.rb
333
+ - lib/pact_broker/api/decorators/relationships_csv_decorator.rb
308
334
  - lib/pact_broker/api/decorators/representable_pact.rb
309
335
  - lib/pact_broker/api/decorators/tag_decorator.rb
310
336
  - lib/pact_broker/api/decorators/version_decorator.rb
311
337
  - lib/pact_broker/api/pact_broker_urls.rb
338
+ - lib/pact_broker/api/renderers/html_pact_renderer.rb
312
339
  - lib/pact_broker/api/resources/base_resource.rb
313
340
  - lib/pact_broker/api/resources/index.rb
314
341
  - lib/pact_broker/api/resources/latest_pact.rb
@@ -316,15 +343,20 @@ files:
316
343
  - lib/pact_broker/api/resources/pact.rb
317
344
  - lib/pact_broker/api/resources/pacticipant.rb
318
345
  - lib/pact_broker/api/resources/pacticipants.rb
346
+ - lib/pact_broker/api/resources/relationships.rb
319
347
  - lib/pact_broker/api/resources/tag.rb
348
+ - lib/pact_broker/app.rb
349
+ - lib/pact_broker/configuration.rb
320
350
  - lib/pact_broker/db.rb
321
351
  - lib/pact_broker/logging.rb
322
352
  - lib/pact_broker/models.rb
323
353
  - lib/pact_broker/models/order_versions.rb
324
354
  - lib/pact_broker/models/pact.rb
325
355
  - lib/pact_broker/models/pacticipant.rb
356
+ - lib/pact_broker/models/relationship.rb
326
357
  - lib/pact_broker/models/tag.rb
327
358
  - lib/pact_broker/models/version.rb
359
+ - lib/pact_broker/project_root.rb
328
360
  - lib/pact_broker/repositories.rb
329
361
  - lib/pact_broker/repositories/pact_repository.rb
330
362
  - lib/pact_broker/repositories/pacticipant_repository.rb
@@ -337,24 +369,100 @@ files:
337
369
  - lib/pact_broker/services/version_service.rb
338
370
  - lib/pact_broker/tasks.rb
339
371
  - lib/pact_broker/tasks/migration_task.rb
372
+ - lib/pact_broker/ui/controllers/base_controller.rb
373
+ - lib/pact_broker/ui/controllers/clusters.rb
374
+ - lib/pact_broker/ui/controllers/relationships.rb
375
+ - lib/pact_broker/ui/view_models/clusters.rb
376
+ - lib/pact_broker/ui/view_models/relationship.rb
377
+ - lib/pact_broker/ui/view_models/relationships.rb
378
+ - lib/pact_broker/ui/views/clusters/show.haml
379
+ - lib/pact_broker/ui/views/layouts/main.haml
380
+ - lib/pact_broker/ui/views/relationships/show.haml
340
381
  - lib/pact_broker/version.rb
382
+ - lib/rack/hal_browser.rb
383
+ - lib/rack/hal_browser/redirect.rb
341
384
  - pact_broker.gemspec
342
385
  - pact_broker_client-pact_broker.json
386
+ - public/bootstrap.zip
387
+ - public/config.json
388
+ - public/css/bootstrap-theme.css
389
+ - public/css/bootstrap-theme.min.css
390
+ - public/css/bootstrap.css
391
+ - public/css/bootstrap.min.css
392
+ - public/fonts/glyphicons-halflings-regular.eot
393
+ - public/fonts/glyphicons-halflings-regular.svg
394
+ - public/fonts/glyphicons-halflings-regular.ttf
395
+ - public/fonts/glyphicons-halflings-regular.woff
396
+ - public/javascripts/jquery-2.1.1.min.js
397
+ - public/javascripts/jquery.tablesorter.js
398
+ - public/javascripts/jquery.tablesorter.min.js
399
+ - public/js/bootstrap.js
400
+ - public/js/bootstrap.min.js
401
+ - public/stylesheets/github.css
402
+ - public/stylesheets/relationships.css
403
+ - script/update-hal-browser
404
+ - spec/fixtures/renderer_pact.json
343
405
  - spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb
406
+ - spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb
344
407
  - spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
408
+ - spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb
409
+ - spec/lib/pact_broker/api/resources/latest_pact_spec.rb
345
410
  - spec/lib/pact_broker/api/resources/tag_spec.rb
411
+ - spec/lib/pact_broker/configuration_spec.rb
346
412
  - spec/lib/pact_broker/models/order_versions_spec.rb
347
413
  - spec/lib/pact_broker/repositories/pact_repository_spec.rb
348
414
  - spec/lib/pact_broker/repositories/tag_repository_spec.rb
349
415
  - spec/lib/pact_broker/repositories/version_repository_spec.rb
416
+ - spec/lib/pact_broker/services/pacticipant_service_spec.rb
350
417
  - spec/lib/pact_broker/services/tag_service_spec.rb
418
+ - spec/lib/pact_broker/ui/controllers/clusters_spec.rb
419
+ - spec/lib/pact_broker/ui/controllers/relationships_spec.rb
420
+ - spec/lib/pact_broker/ui/view_models/relationship_spec.rb
421
+ - spec/lib/rack/hal_browser/redirect_spec.rb
351
422
  - spec/service_consumers/pact_helper.rb
352
423
  - spec/service_consumers/provider_states_for_pact_broker_client.rb
353
424
  - spec/spec_helper.rb
354
425
  - spec/support/provider_state_builder.rb
426
+ - tasks/database.rb
355
427
  - tasks/db.rake
356
428
  - tasks/pact.rake
357
429
  - tasks/rspec.rake
430
+ - vendor/hal-browser/.gitignore
431
+ - vendor/hal-browser/MIT-LICENSE.txt
432
+ - vendor/hal-browser/README.md
433
+ - vendor/hal-browser/browser.html
434
+ - vendor/hal-browser/js/hal.js
435
+ - vendor/hal-browser/js/hal/browser.js
436
+ - vendor/hal-browser/js/hal/http/client.js
437
+ - vendor/hal-browser/js/hal/resource.js
438
+ - vendor/hal-browser/js/hal/views/browser.js
439
+ - vendor/hal-browser/js/hal/views/documentation.js
440
+ - vendor/hal-browser/js/hal/views/embedded_resource.js
441
+ - vendor/hal-browser/js/hal/views/embedded_resources.js
442
+ - vendor/hal-browser/js/hal/views/explorer.js
443
+ - vendor/hal-browser/js/hal/views/inspector.js
444
+ - vendor/hal-browser/js/hal/views/links.js
445
+ - vendor/hal-browser/js/hal/views/location_bar.js
446
+ - vendor/hal-browser/js/hal/views/navigation.js
447
+ - vendor/hal-browser/js/hal/views/non_safe_request_dialog.js
448
+ - vendor/hal-browser/js/hal/views/properties.js
449
+ - vendor/hal-browser/js/hal/views/query_uri_dialog.js
450
+ - vendor/hal-browser/js/hal/views/request_headers.js
451
+ - vendor/hal-browser/js/hal/views/resource.js
452
+ - vendor/hal-browser/js/hal/views/response.js
453
+ - vendor/hal-browser/js/hal/views/response_body.js
454
+ - vendor/hal-browser/js/hal/views/response_headers.js
455
+ - vendor/hal-browser/styles.css
456
+ - vendor/hal-browser/vendor/css/bootstrap-responsive.css
457
+ - vendor/hal-browser/vendor/css/bootstrap.css
458
+ - vendor/hal-browser/vendor/img/ajax-loader.gif
459
+ - vendor/hal-browser/vendor/img/glyphicons-halflings-white.png
460
+ - vendor/hal-browser/vendor/img/glyphicons-halflings.png
461
+ - vendor/hal-browser/vendor/js/backbone.js
462
+ - vendor/hal-browser/vendor/js/bootstrap.js
463
+ - vendor/hal-browser/vendor/js/jquery-1.9.1.js
464
+ - vendor/hal-browser/vendor/js/underscore.js
465
+ - vendor/hal-browser/vendor/js/uritemplates.js
358
466
  homepage: https://github.com/DiUS/pact_broker
359
467
  licenses:
360
468
  - MIT
@@ -370,16 +478,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
370
478
  version: '0'
371
479
  segments:
372
480
  - 0
373
- hash: -449205238157124147
481
+ hash: -3233276074341714439
374
482
  required_rubygems_version: !ruby/object:Gem::Requirement
375
483
  none: false
376
484
  requirements:
377
- - - ! '>='
485
+ - - ! '>'
378
486
  - !ruby/object:Gem::Version
379
- version: '0'
380
- segments:
381
- - 0
382
- hash: -449205238157124147
487
+ version: 1.3.1
383
488
  requirements: []
384
489
  rubyforge_project:
385
490
  rubygems_version: 1.8.23
@@ -387,14 +492,24 @@ signing_key:
387
492
  specification_version: 3
388
493
  summary: See description
389
494
  test_files:
495
+ - spec/fixtures/renderer_pact.json
390
496
  - spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb
497
+ - spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb
391
498
  - spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
499
+ - spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb
500
+ - spec/lib/pact_broker/api/resources/latest_pact_spec.rb
392
501
  - spec/lib/pact_broker/api/resources/tag_spec.rb
502
+ - spec/lib/pact_broker/configuration_spec.rb
393
503
  - spec/lib/pact_broker/models/order_versions_spec.rb
394
504
  - spec/lib/pact_broker/repositories/pact_repository_spec.rb
395
505
  - spec/lib/pact_broker/repositories/tag_repository_spec.rb
396
506
  - spec/lib/pact_broker/repositories/version_repository_spec.rb
507
+ - spec/lib/pact_broker/services/pacticipant_service_spec.rb
397
508
  - spec/lib/pact_broker/services/tag_service_spec.rb
509
+ - spec/lib/pact_broker/ui/controllers/clusters_spec.rb
510
+ - spec/lib/pact_broker/ui/controllers/relationships_spec.rb
511
+ - spec/lib/pact_broker/ui/view_models/relationship_spec.rb
512
+ - spec/lib/rack/hal_browser/redirect_spec.rb
398
513
  - spec/service_consumers/pact_helper.rb
399
514
  - spec/service_consumers/provider_states_for_pact_broker_client.rb
400
515
  - spec/spec_helper.rb