)]}'
{"src/util/abstract_service.js":[{"author":{"_account_id":8614,"name":"Corentin Ardeois","email":"corentin.ardeois@gmail.com","username":"cardeois"},"change_message_id":"a2e57336cc46e0e64f337bfa024ceaa720232ebc","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    let rootUrl \u003d new URL(this._endpointUrl);"},{"line_number":62,"context_line":"    rootUrl.set(\u0027pathname\u0027, \u0027/\u0027);"},{"line_number":63,"context_line":"    rootUrl.set(\u0027query\u0027, \u0027\u0027);"},{"line_number":64,"context_line":"    rootUrl.set(\u0027hash\u0027, \u0027\u0027);"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    return new Promise((resolve, reject) \u003d\u003e {"},{"line_number":67,"context_line":"      let promise \u003d this.http"}],"source_content_type":"text/javascript","patch_set":1,"id":"7a8ec9b2_0a42913e","line":64,"updated":"2016-09-14 17:29:12.000000000","message":"Do you have to set query and hash even if it\u0027s empty?","commit_id":"2f6d4a7c76dc6cf96aa557afb174a9dc28b83a3b"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"fd8328d76ea63fb10071d2c979e6d895e6ffa604","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    let rootUrl \u003d new URL(this._endpointUrl);"},{"line_number":62,"context_line":"    rootUrl.set(\u0027pathname\u0027, \u0027/\u0027);"},{"line_number":63,"context_line":"    rootUrl.set(\u0027query\u0027, \u0027\u0027);"},{"line_number":64,"context_line":"    rootUrl.set(\u0027hash\u0027, \u0027\u0027);"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    return new Promise((resolve, reject) \u003d\u003e {"},{"line_number":67,"context_line":"      let promise \u003d this.http"}],"source_content_type":"text/javascript","patch_set":1,"id":"7a8ec9b2_496b4bf1","line":64,"in_reply_to":"7a8ec9b2_0a42913e","updated":"2016-09-16 13:30:15.000000000","message":"I don\u0027t think so, but as I can\u0027t predict what someone will register in the catalog, I figured this\u0027d be better.","commit_id":"2f6d4a7c76dc6cf96aa557afb174a9dc28b83a3b"},{"author":{"_account_id":8614,"name":"Corentin Ardeois","email":"corentin.ardeois@gmail.com","username":"cardeois"},"change_message_id":"a2e57336cc46e0e64f337bfa024ceaa720232ebc","unresolved":false,"context_lines":[{"line_number":77,"context_line":"      promise"},{"line_number":78,"context_line":"        .then((response) \u003d\u003e response.json())"},{"line_number":79,"context_line":"        .then((body) \u003d\u003e resolve(body.versions));"},{"line_number":80,"context_line":"    });"},{"line_number":81,"context_line":"  }"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"  /**"}],"source_content_type":"text/javascript","patch_set":1,"id":"7a8ec9b2_0b30c59d","line":80,"updated":"2016-09-14 17:29:12.000000000","message":"Not sure here, but I think it\u0027s not needed to create a new Promise, you could do:\n\n this.http\n   .httpGet(this._endpointUrl)\n   .catch((response) \u003d\u003e {\n      if (response.status \u003d\u003d\u003d 401) {\n        return this.http.httpGet(rootUrl.href);\n      }\n      return Promise.reject(response);\n  })\n  .then((response) \u003d\u003e response.json())\n  .then((body) \u003d\u003e body.versions);","commit_id":"2f6d4a7c76dc6cf96aa557afb174a9dc28b83a3b"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"fd8328d76ea63fb10071d2c979e6d895e6ffa604","unresolved":false,"context_lines":[{"line_number":77,"context_line":"      promise"},{"line_number":78,"context_line":"        .then((response) \u003d\u003e response.json())"},{"line_number":79,"context_line":"        .then((body) \u003d\u003e resolve(body.versions));"},{"line_number":80,"context_line":"    });"},{"line_number":81,"context_line":"  }"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"  /**"}],"source_content_type":"text/javascript","patch_set":1,"id":"7a8ec9b2_d418d277","line":80,"in_reply_to":"7a8ec9b2_0b30c59d","updated":"2016-09-16 13:30:15.000000000","message":"Turns out I have to build an entire new promise path, as the catch() causes the execution path to fork.","commit_id":"2f6d4a7c76dc6cf96aa557afb174a9dc28b83a3b"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"79f2a33e9781cc330266f748101c660d770a7dd2","unresolved":false,"context_lines":[{"line_number":58,"context_line":"   * @returns {Promise.\u003cT\u003e} A promise that will resolve with the list of API versions."},{"line_number":59,"context_line":"   */"},{"line_number":60,"context_line":"  versions() {"},{"line_number":61,"context_line":"    let rootUrl \u003d new URL(this._endpointUrl);"},{"line_number":62,"context_line":"    rootUrl.set(\u0027pathname\u0027, \u0027/\u0027);"},{"line_number":63,"context_line":"    rootUrl.set(\u0027query\u0027, \u0027\u0027);"},{"line_number":64,"context_line":"    rootUrl.set(\u0027hash\u0027, \u0027\u0027);"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    return new Promise((resolve, reject) \u003d\u003e {"},{"line_number":67,"context_line":"      // Build the base happy path."}],"source_content_type":"text/javascript","patch_set":3,"id":"7a8ec9b2_ee452f43","line":64,"range":{"start_line":61,"start_character":0,"end_line":64,"end_character":28},"updated":"2016-09-21 10:13:53.000000000","message":"I\u0027d move this code to catch callback - it makes no sense to always build alt url","commit_id":"f5bcc81cefce2affba6d6c8ae09d41dd2f5d4c3d"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"79f2a33e9781cc330266f748101c660d770a7dd2","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    return this"},{"line_number":95,"context_line":"      .versions()"},{"line_number":96,"context_line":"      .then((versions) \u003d\u003e {"},{"line_number":97,"context_line":"        return new Promise((resolve, reject) \u003d\u003e {"},{"line_number":98,"context_line":"          let supportedVersion \u003d"},{"line_number":99,"context_line":"            versions.find((item) \u003d\u003e this.supportedVersions.indexOf(item.id) \u003e -1);"},{"line_number":100,"context_line":"          if (supportedVersion) {"},{"line_number":101,"context_line":"            resolve(supportedVersion);"},{"line_number":102,"context_line":"          } else {"},{"line_number":103,"context_line":"            reject(\"No supported API version available.\");"},{"line_number":104,"context_line":"          }"},{"line_number":105,"context_line":"        });"},{"line_number":106,"context_line":"      });"},{"line_number":107,"context_line":"  }"},{"line_number":108,"context_line":""}],"source_content_type":"text/javascript","patch_set":3,"id":"7a8ec9b2_74157347","line":105,"range":{"start_line":97,"start_character":0,"end_line":105,"end_character":11},"updated":"2016-09-21 10:13:53.000000000","message":"I see no difference here with the previous code. I\u0027d prefer to keep the old version since it\u0027s more readable","commit_id":"f5bcc81cefce2affba6d6c8ae09d41dd2f5d4c3d"}]}
