@@ -110,7 +110,6 @@ angular.module('registry-services', ['ngResource'])
110110 isArray : true ,
111111 transformResponse : function ( data /*, headers*/ ) {
112112 var res = [ ] ;
113- console . log ( data ) ;
114113 var resp = angular . fromJson ( data ) ;
115114 for ( var idx in resp . tags ) {
116115 res . push ( {
@@ -142,13 +141,97 @@ angular.module('registry-services', ['ngResource'])
142141 } ,
143142 } ) ;
144143 } ] )
145- . factory ( 'Image' , [ '$resource' , function ( $resource ) {
146- return $resource ( '/v1/images/:imageId/json' , { } , {
147- 'query' : { method :'GET' , isArray : false } ,
144+ . factory ( 'Manifest' , [ '$resource' , function ( $resource ) {
145+
146+ return $resource ( '/v2/:repoUser/:repoName/manifests/:tagName' , { } , {
147+ // Response example:
148+ // {
149+ // "schemaVersion": 1,
150+ // "name": "arthur/busybox",
151+ // "tag": "demo",
152+ // "architecture": "amd64",
153+ // "fsLayers": [
154+ // {
155+ // "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
156+ // },
157+ // {
158+ // "blobSum": "sha256:d7e8ec85c5abc60edf74bd4b8d68049350127e4102a084f22060f7321eac3586"
159+ // }
160+ // ],
161+ // "history": [
162+ // {
163+ // "v1Compatibility": "{\"id\":\"3e1018ee907f25aef8c50016296ab33624796511fdbfdbbdeca6a3ed2d0ba4e2\",\"parent\":\"176dfc9032a1ec3ac8586b383e325e1a65d1f5b5e6f46c2a55052b5aea8310f7\",\"created\":\"2016-01-12T17:47:39.251310827Z\",\"container\":\"2732d16efa11ab7da6393645e85a7f2070af94941a782a69e86457a2284f4a69\",\"container_config\":{\"Hostname\":\"ea7fe68f39fd\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) LABEL awesome=Not yet!\"],\"Image\":\"176dfc9032a1ec3ac8586b383e325e1a65d1f5b5e6f46c2a55052b5aea8310f7\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":[],\"Labels\":{\"awesome\":\"Not yet!\",\"test\":\"yes\",\"working\":\"true\"}},\"docker_version\":\"1.9.1\",\"author\":\"Arthur\",\"config\":{\"Hostname\":\"ea7fe68f39fd\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"sh\"],\"Image\":\"176dfc9032a1ec3ac8586b383e325e1a65d1f5b5e6f46c2a55052b5aea8310f7\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":[],\"Labels\":{\"awesome\":\"Not yet!\",\"test\":\"yes\",\"working\":\"true\"}},\"architecture\":\"amd64\",\"os\":\"linux\" }"
164+ // },
165+ // {
166+ // "v1Compatibility": "{\"id\":\"5c5fb281b01ee091a0fffa5b4a4c7fb7d358e7fb7c49c263d6d7a4e35d199fd0\",\"created\":\"2015-12-08T18:31:50.979824705Z\",\"container\":\"ea7fe68f39fd0df314e841247fb940ddef4c02ab7b5edb0ee724adc3174bc8d9\",\"container_config\":{\"Hostname\":\"ea7fe68f39fd\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) ADD file:c295b0748bf05d4527f500b62ff269bfd0037f7515f1375d2ee474b830bad382 in /\"],\"Image\":\"\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"docker_version\":\"1.8.3\",\"config\":{\"Hostname\":\"ea7fe68f39fd\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":null,\"Image\":\"\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"architecture\":\"amd64\",\"os\":\"linux\",\"Size\":1113436}"
167+ // }
168+ // ],
169+ // }
170+ 'query' : {
171+ method :'GET' ,
172+ isArray : false ,
173+ transformResponse : function ( data , headers ) {
174+ var res = { } ;
175+ var history = [ ] ;
176+ var tmp ;
177+ var resp = angular . fromJson ( data ) ;
178+ var v1Compatibility = undefined ;
179+ var dockerfile = [ ] ;
180+ var cmd ;
181+ var instruction ;
182+
183+ for ( var idx in resp . history ) {
184+
185+ v1Compatibility = angular . fromJson ( resp . history [ idx ] . v1Compatibility ) ;
186+
187+ if ( v1Compatibility !== undefined ) {
188+ tmp = {
189+ id : v1Compatibility . id ,
190+ os : v1Compatibility . os ,
191+ docker_version : v1Compatibility . docker_version ,
192+ created : v1Compatibility . created ,
193+ parent : v1Compatibility . parent
194+ } ;
195+ if ( v1Compatibility . author ) {
196+ tmp . author = v1Compatibility . author ;
197+ }
198+ if ( v1Compatibility . config && v1Compatibility . config . Labels ) {
199+ tmp . labels = v1Compatibility . config . Labels ;
200+ }
201+ if ( v1Compatibility . container_config && v1Compatibility . container_config . Cmd ) {
202+ cmd = v1Compatibility . container_config . Cmd
203+ instruction = cmd . join ( ' ' ) . replace ( '/bin/sh -c #(nop) ' , '' ) . replace ( '/bin/sh -c ' , 'RUN ' )
204+ dockerfile . unshift ( instruction )
205+ }
206+ history . push ( tmp ) ;
207+ }
208+ }
209+ if ( history . length > 0 ) {
210+ res = history [ 0 ] ;
211+ res . history = history ;
212+ }
213+ res . fsLayers = resp . fsLayers ;
214+ res . digest = headers ( 'docker-content-digest' ) ;
215+ res . architecture = resp . architecture ;
216+ res . dockerfile = dockerfile
217+ res . layers = dockerfile . length
218+ return res ;
219+ } ,
220+ }
148221 } ) ;
149222 } ] )
150- . factory ( 'Ancestry' , [ '$resource' , function ( $resource ) {
151- return $resource ( '/v1/images/:imageId/ancestry' , { } , {
152- 'query' : { method :'GET' , isArray : true } ,
223+ . factory ( 'Blob' , [ '$resource' , function ( $resource ) {
224+ return $resource ( '/v2/:repoUser/:repoName/blobs/:digest' , { } , {
225+
226+ 'query' : {
227+ method :'HEAD' ,
228+ interceptor : {
229+ response : function ( response ) {
230+ var res = { contentLength : parseInt ( response . headers ( 'content-length' ) ) } ;
231+ return res ;
232+ }
233+ }
234+ }
235+
153236 } ) ;
154- } ] ) ;
237+ } ] ) ;
0 commit comments