cpp-qt5-client: remove host since it is not well handled - #4429

Merged
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host
Nov 12, 2019
Merged

cpp-qt5-client: remove host since it is not well handled#4429
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host

Conversation

@MartinDelille

Copy link
Copy Markdown
Contributor

This PR replace part of the job done here: #3688

Now that the base path is well handled, the API class can use the one provided in the API description.

There was previously a mismatch between host and base path as mentionned here: #3399

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@ravinikam@stkrwork@etherealjoy@muttleyxd

@MartinDelilleMartinDelille mentioned this pull request Nov 9, 2019
4 tasks
@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

@MartinDelille
May I propose a different approach to solving this?

  1. Leave the base path in the API as it is.
 fullPath.append(this->host).append(this->basePath).append("{{{path}}}");

There are many use cases to have base path as is. e.g.

  • when same client is using multiple hosts at runtime.
  • When using REST over an existing socket. (By subclassing QNetworkManager)
  1. Properly parse the host and update/add constructor if necessary?

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

You're right there is indeed a problem in this code I wrote this summer.

The problem I raised here and that I'm trying to solve is that http://api.example.com is not a host but its not a base path neither.

I need to dig into this

@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

I tried something quick on my side to add parsing of scheme

in AbstractCppCodegen.java add the parsing of the scheme like below

 @Override
public void preprocessOpenAPI(OpenAPI openAPI) {
URL url = URLPathUtils.getServerURL(openAPI, serverVariableOverrides());
String port = URLPathUtils.getPort(url, "");
String host = url.getHost();
String scheme = url.getProtocol();
if(!port.isEmpty()) {
this.additionalProperties.put("serverPort", port);
}
if(!host.isEmpty()) {
this.additionalProperties.put("serverHost", host);
}
if(!scheme.isEmpty()) {
this.additionalProperties.put("scheme", scheme);
}
}

Then you can remove all these lines from the three header files

private:
const QString PetStoreHost = QStringLiteral("http://petstore.swagger.io");

And from all three source files

 api.setHost(PetStoreHost);

Generated constructor looks like this

PFXPetApi::PFXPetApi() : basePath("/v2"),
host("http://petstore.swagger.io"),
timeout(0){

I ran the test and it passed with these changes.

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

The only thing is that as I said above, http://api.example.com is more a base url that a host (the host is api.example.com), so maybe we should rename host to baseUrl in the api class?

@etherealjoy

Copy link
Copy Markdown
Contributor

so maybe we should rename host to baseUrl in the api class?

Ok for me

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

Ok I finally change to the following implementation.

I had to rebase #4435 so maybe we should merge it first if everything is fine with it.

@etherealjoy
etherealjoy merged commit 21a291f into OpenAPITools:masterNov 12, 2019
@etherealjoyetherealjoy added this to the 4.2.1 milestone Nov 12, 2019
@MartinDelille
MartinDelille deleted the remove-host branch November 12, 2019 10:19
jimschubert added a commit that referenced this pull request Nov 13, 2019
* master:
[csharp-netcore] Propagate raw content to the ApiException error content. (#4381)
Remove path relative to my home dir. (#4470)
Avoid generating uncompilable response body in Spring's API template (#2903)
cpp-qt5-client: remove host since it is not well handled (#4429)
[Java] Refactor webClient generator to use URI templates to capture correct metrics (#4314)
[Java]: Client resttemplate and webclient: array parameters of type integer in path badly generated (#4379)
Dart generate keywords (#4449)
[core] Fix system properties being immutable (#4447)
[Kotlin][Client] minor improvements (#4419)
[typescript-rxjs]: Add support for nullable (#4438)
[asciidoc] fix names of parameters (#4440)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@MartinDelille@etherealjoy@muttleyxd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

cpp-qt5-client: remove host since it is not well handled - #4429

Merged
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host
Nov 12, 2019
Merged

cpp-qt5-client: remove host since it is not well handled#4429
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host

Conversation

@MartinDelille

Copy link
Copy Markdown
Contributor

This PR replace part of the job done here: #3688

Now that the base path is well handled, the API class can use the one provided in the API description.

There was previously a mismatch between host and base path as mentionned here: #3399

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@ravinikam@stkrwork@etherealjoy@muttleyxd

@MartinDelilleMartinDelille mentioned this pull request Nov 9, 2019
4 tasks
@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

@MartinDelille
May I propose a different approach to solving this?

  1. Leave the base path in the API as it is.
 fullPath.append(this->host).append(this->basePath).append("{{{path}}}");

There are many use cases to have base path as is. e.g.

  • when same client is using multiple hosts at runtime.
  • When using REST over an existing socket. (By subclassing QNetworkManager)
  1. Properly parse the host and update/add constructor if necessary?

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

You're right there is indeed a problem in this code I wrote this summer.

The problem I raised here and that I'm trying to solve is that http://api.example.com is not a host but its not a base path neither.

I need to dig into this

@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

I tried something quick on my side to add parsing of scheme

in AbstractCppCodegen.java add the parsing of the scheme like below

 @Override
public void preprocessOpenAPI(OpenAPI openAPI) {
URL url = URLPathUtils.getServerURL(openAPI, serverVariableOverrides());
String port = URLPathUtils.getPort(url, "");
String host = url.getHost();
String scheme = url.getProtocol();
if(!port.isEmpty()) {
this.additionalProperties.put("serverPort", port);
}
if(!host.isEmpty()) {
this.additionalProperties.put("serverHost", host);
}
if(!scheme.isEmpty()) {
this.additionalProperties.put("scheme", scheme);
}
}

Then you can remove all these lines from the three header files

private:
const QString PetStoreHost = QStringLiteral("http://petstore.swagger.io");

And from all three source files

 api.setHost(PetStoreHost);

Generated constructor looks like this

PFXPetApi::PFXPetApi() : basePath("/v2"),
host("http://petstore.swagger.io"),
timeout(0){

I ran the test and it passed with these changes.

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

The only thing is that as I said above, http://api.example.com is more a base url that a host (the host is api.example.com), so maybe we should rename host to baseUrl in the api class?

@etherealjoy

Copy link
Copy Markdown
Contributor

so maybe we should rename host to baseUrl in the api class?

Ok for me

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

Ok I finally change to the following implementation.

I had to rebase #4435 so maybe we should merge it first if everything is fine with it.

@etherealjoy
etherealjoy merged commit 21a291f into OpenAPITools:masterNov 12, 2019
@etherealjoyetherealjoy added this to the 4.2.1 milestone Nov 12, 2019
@MartinDelille
MartinDelille deleted the remove-host branch November 12, 2019 10:19
jimschubert added a commit that referenced this pull request Nov 13, 2019
* master:
[csharp-netcore] Propagate raw content to the ApiException error content. (#4381)
Remove path relative to my home dir. (#4470)
Avoid generating uncompilable response body in Spring's API template (#2903)
cpp-qt5-client: remove host since it is not well handled (#4429)
[Java] Refactor webClient generator to use URI templates to capture correct metrics (#4314)
[Java]: Client resttemplate and webclient: array parameters of type integer in path badly generated (#4379)
Dart generate keywords (#4449)
[core] Fix system properties being immutable (#4447)
[Kotlin][Client] minor improvements (#4419)
[typescript-rxjs]: Add support for nullable (#4438)
[asciidoc] fix names of parameters (#4440)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@MartinDelille@etherealjoy@muttleyxd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

cpp-qt5-client: remove host since it is not well handled - #4429

Merged
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host
Nov 12, 2019
Merged

cpp-qt5-client: remove host since it is not well handled#4429
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host

Conversation

@MartinDelille

Copy link
Copy Markdown
Contributor

This PR replace part of the job done here: #3688

Now that the base path is well handled, the API class can use the one provided in the API description.

There was previously a mismatch between host and base path as mentionned here: #3399

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@ravinikam@stkrwork@etherealjoy@muttleyxd

@MartinDelilleMartinDelille mentioned this pull request Nov 9, 2019
4 tasks
@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

@MartinDelille
May I propose a different approach to solving this?

  1. Leave the base path in the API as it is.
 fullPath.append(this->host).append(this->basePath).append("{{{path}}}");

There are many use cases to have base path as is. e.g.

  • when same client is using multiple hosts at runtime.
  • When using REST over an existing socket. (By subclassing QNetworkManager)
  1. Properly parse the host and update/add constructor if necessary?

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

You're right there is indeed a problem in this code I wrote this summer.

The problem I raised here and that I'm trying to solve is that http://api.example.com is not a host but its not a base path neither.

I need to dig into this

@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

I tried something quick on my side to add parsing of scheme

in AbstractCppCodegen.java add the parsing of the scheme like below

 @Override
public void preprocessOpenAPI(OpenAPI openAPI) {
URL url = URLPathUtils.getServerURL(openAPI, serverVariableOverrides());
String port = URLPathUtils.getPort(url, "");
String host = url.getHost();
String scheme = url.getProtocol();
if(!port.isEmpty()) {
this.additionalProperties.put("serverPort", port);
}
if(!host.isEmpty()) {
this.additionalProperties.put("serverHost", host);
}
if(!scheme.isEmpty()) {
this.additionalProperties.put("scheme", scheme);
}
}

Then you can remove all these lines from the three header files

private:
const QString PetStoreHost = QStringLiteral("http://petstore.swagger.io");

And from all three source files

 api.setHost(PetStoreHost);

Generated constructor looks like this

PFXPetApi::PFXPetApi() : basePath("/v2"),
host("http://petstore.swagger.io"),
timeout(0){

I ran the test and it passed with these changes.

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

The only thing is that as I said above, http://api.example.com is more a base url that a host (the host is api.example.com), so maybe we should rename host to baseUrl in the api class?

@etherealjoy

Copy link
Copy Markdown
Contributor

so maybe we should rename host to baseUrl in the api class?

Ok for me

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

Ok I finally change to the following implementation.

I had to rebase #4435 so maybe we should merge it first if everything is fine with it.

@etherealjoy
etherealjoy merged commit 21a291f into OpenAPITools:masterNov 12, 2019
@etherealjoyetherealjoy added this to the 4.2.1 milestone Nov 12, 2019
@MartinDelille
MartinDelille deleted the remove-host branch November 12, 2019 10:19
jimschubert added a commit that referenced this pull request Nov 13, 2019
* master:
[csharp-netcore] Propagate raw content to the ApiException error content. (#4381)
Remove path relative to my home dir. (#4470)
Avoid generating uncompilable response body in Spring's API template (#2903)
cpp-qt5-client: remove host since it is not well handled (#4429)
[Java] Refactor webClient generator to use URI templates to capture correct metrics (#4314)
[Java]: Client resttemplate and webclient: array parameters of type integer in path badly generated (#4379)
Dart generate keywords (#4449)
[core] Fix system properties being immutable (#4447)
[Kotlin][Client] minor improvements (#4419)
[typescript-rxjs]: Add support for nullable (#4438)
[asciidoc] fix names of parameters (#4440)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@MartinDelille@etherealjoy@muttleyxd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

cpp-qt5-client: remove host since it is not well handled - #4429

Merged
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host
Nov 12, 2019
Merged

cpp-qt5-client: remove host since it is not well handled#4429
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host

Conversation

@MartinDelille

Copy link
Copy Markdown
Contributor

This PR replace part of the job done here: #3688

Now that the base path is well handled, the API class can use the one provided in the API description.

There was previously a mismatch between host and base path as mentionned here: #3399

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@ravinikam@stkrwork@etherealjoy@muttleyxd

@MartinDelilleMartinDelille mentioned this pull request Nov 9, 2019
4 tasks
@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

@MartinDelille
May I propose a different approach to solving this?

  1. Leave the base path in the API as it is.
 fullPath.append(this->host).append(this->basePath).append("{{{path}}}");

There are many use cases to have base path as is. e.g.

  • when same client is using multiple hosts at runtime.
  • When using REST over an existing socket. (By subclassing QNetworkManager)
  1. Properly parse the host and update/add constructor if necessary?

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

You're right there is indeed a problem in this code I wrote this summer.

The problem I raised here and that I'm trying to solve is that http://api.example.com is not a host but its not a base path neither.

I need to dig into this

@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

I tried something quick on my side to add parsing of scheme

in AbstractCppCodegen.java add the parsing of the scheme like below

 @Override
public void preprocessOpenAPI(OpenAPI openAPI) {
URL url = URLPathUtils.getServerURL(openAPI, serverVariableOverrides());
String port = URLPathUtils.getPort(url, "");
String host = url.getHost();
String scheme = url.getProtocol();
if(!port.isEmpty()) {
this.additionalProperties.put("serverPort", port);
}
if(!host.isEmpty()) {
this.additionalProperties.put("serverHost", host);
}
if(!scheme.isEmpty()) {
this.additionalProperties.put("scheme", scheme);
}
}

Then you can remove all these lines from the three header files

private:
const QString PetStoreHost = QStringLiteral("http://petstore.swagger.io");

And from all three source files

 api.setHost(PetStoreHost);

Generated constructor looks like this

PFXPetApi::PFXPetApi() : basePath("/v2"),
host("http://petstore.swagger.io"),
timeout(0){

I ran the test and it passed with these changes.

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

The only thing is that as I said above, http://api.example.com is more a base url that a host (the host is api.example.com), so maybe we should rename host to baseUrl in the api class?

@etherealjoy

Copy link
Copy Markdown
Contributor

so maybe we should rename host to baseUrl in the api class?

Ok for me

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

Ok I finally change to the following implementation.

I had to rebase #4435 so maybe we should merge it first if everything is fine with it.

@etherealjoy
etherealjoy merged commit 21a291f into OpenAPITools:masterNov 12, 2019
@etherealjoyetherealjoy added this to the 4.2.1 milestone Nov 12, 2019
@MartinDelille
MartinDelille deleted the remove-host branch November 12, 2019 10:19
jimschubert added a commit that referenced this pull request Nov 13, 2019
* master:
[csharp-netcore] Propagate raw content to the ApiException error content. (#4381)
Remove path relative to my home dir. (#4470)
Avoid generating uncompilable response body in Spring's API template (#2903)
cpp-qt5-client: remove host since it is not well handled (#4429)
[Java] Refactor webClient generator to use URI templates to capture correct metrics (#4314)
[Java]: Client resttemplate and webclient: array parameters of type integer in path badly generated (#4379)
Dart generate keywords (#4449)
[core] Fix system properties being immutable (#4447)
[Kotlin][Client] minor improvements (#4419)
[typescript-rxjs]: Add support for nullable (#4438)
[asciidoc] fix names of parameters (#4440)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@MartinDelille@etherealjoy@muttleyxd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

cpp-qt5-client: remove host since it is not well handled - #4429

Merged
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host
Nov 12, 2019
Merged

cpp-qt5-client: remove host since it is not well handled#4429
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host

Conversation

@MartinDelille

Copy link
Copy Markdown
Contributor

This PR replace part of the job done here: #3688

Now that the base path is well handled, the API class can use the one provided in the API description.

There was previously a mismatch between host and base path as mentionned here: #3399

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@ravinikam@stkrwork@etherealjoy@muttleyxd

@MartinDelilleMartinDelille mentioned this pull request Nov 9, 2019
4 tasks
@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

@MartinDelille
May I propose a different approach to solving this?

  1. Leave the base path in the API as it is.
 fullPath.append(this->host).append(this->basePath).append("{{{path}}}");

There are many use cases to have base path as is. e.g.

  • when same client is using multiple hosts at runtime.
  • When using REST over an existing socket. (By subclassing QNetworkManager)
  1. Properly parse the host and update/add constructor if necessary?

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

You're right there is indeed a problem in this code I wrote this summer.

The problem I raised here and that I'm trying to solve is that http://api.example.com is not a host but its not a base path neither.

I need to dig into this

@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

I tried something quick on my side to add parsing of scheme

in AbstractCppCodegen.java add the parsing of the scheme like below

 @Override
public void preprocessOpenAPI(OpenAPI openAPI) {
URL url = URLPathUtils.getServerURL(openAPI, serverVariableOverrides());
String port = URLPathUtils.getPort(url, "");
String host = url.getHost();
String scheme = url.getProtocol();
if(!port.isEmpty()) {
this.additionalProperties.put("serverPort", port);
}
if(!host.isEmpty()) {
this.additionalProperties.put("serverHost", host);
}
if(!scheme.isEmpty()) {
this.additionalProperties.put("scheme", scheme);
}
}

Then you can remove all these lines from the three header files

private:
const QString PetStoreHost = QStringLiteral("http://petstore.swagger.io");

And from all three source files

 api.setHost(PetStoreHost);

Generated constructor looks like this

PFXPetApi::PFXPetApi() : basePath("/v2"),
host("http://petstore.swagger.io"),
timeout(0){

I ran the test and it passed with these changes.

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

The only thing is that as I said above, http://api.example.com is more a base url that a host (the host is api.example.com), so maybe we should rename host to baseUrl in the api class?

@etherealjoy

Copy link
Copy Markdown
Contributor

so maybe we should rename host to baseUrl in the api class?

Ok for me

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

Ok I finally change to the following implementation.

I had to rebase #4435 so maybe we should merge it first if everything is fine with it.

@etherealjoy
etherealjoy merged commit 21a291f into OpenAPITools:masterNov 12, 2019
@etherealjoyetherealjoy added this to the 4.2.1 milestone Nov 12, 2019
@MartinDelille
MartinDelille deleted the remove-host branch November 12, 2019 10:19
jimschubert added a commit that referenced this pull request Nov 13, 2019
* master:
[csharp-netcore] Propagate raw content to the ApiException error content. (#4381)
Remove path relative to my home dir. (#4470)
Avoid generating uncompilable response body in Spring's API template (#2903)
cpp-qt5-client: remove host since it is not well handled (#4429)
[Java] Refactor webClient generator to use URI templates to capture correct metrics (#4314)
[Java]: Client resttemplate and webclient: array parameters of type integer in path badly generated (#4379)
Dart generate keywords (#4449)
[core] Fix system properties being immutable (#4447)
[Kotlin][Client] minor improvements (#4419)
[typescript-rxjs]: Add support for nullable (#4438)
[asciidoc] fix names of parameters (#4440)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@MartinDelille@etherealjoy@muttleyxd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

cpp-qt5-client: remove host since it is not well handled - #4429

Merged
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host
Nov 12, 2019
Merged

cpp-qt5-client: remove host since it is not well handled#4429
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host

Conversation

@MartinDelille

Copy link
Copy Markdown
Contributor

This PR replace part of the job done here: #3688

Now that the base path is well handled, the API class can use the one provided in the API description.

There was previously a mismatch between host and base path as mentionned here: #3399

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@ravinikam@stkrwork@etherealjoy@muttleyxd

@MartinDelilleMartinDelille mentioned this pull request Nov 9, 2019
4 tasks
@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

@MartinDelille
May I propose a different approach to solving this?

  1. Leave the base path in the API as it is.
 fullPath.append(this->host).append(this->basePath).append("{{{path}}}");

There are many use cases to have base path as is. e.g.

  • when same client is using multiple hosts at runtime.
  • When using REST over an existing socket. (By subclassing QNetworkManager)
  1. Properly parse the host and update/add constructor if necessary?

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

You're right there is indeed a problem in this code I wrote this summer.

The problem I raised here and that I'm trying to solve is that http://api.example.com is not a host but its not a base path neither.

I need to dig into this

@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

I tried something quick on my side to add parsing of scheme

in AbstractCppCodegen.java add the parsing of the scheme like below

 @Override
public void preprocessOpenAPI(OpenAPI openAPI) {
URL url = URLPathUtils.getServerURL(openAPI, serverVariableOverrides());
String port = URLPathUtils.getPort(url, "");
String host = url.getHost();
String scheme = url.getProtocol();
if(!port.isEmpty()) {
this.additionalProperties.put("serverPort", port);
}
if(!host.isEmpty()) {
this.additionalProperties.put("serverHost", host);
}
if(!scheme.isEmpty()) {
this.additionalProperties.put("scheme", scheme);
}
}

Then you can remove all these lines from the three header files

private:
const QString PetStoreHost = QStringLiteral("http://petstore.swagger.io");

And from all three source files

 api.setHost(PetStoreHost);

Generated constructor looks like this

PFXPetApi::PFXPetApi() : basePath("/v2"),
host("http://petstore.swagger.io"),
timeout(0){

I ran the test and it passed with these changes.

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

The only thing is that as I said above, http://api.example.com is more a base url that a host (the host is api.example.com), so maybe we should rename host to baseUrl in the api class?

@etherealjoy

Copy link
Copy Markdown
Contributor

so maybe we should rename host to baseUrl in the api class?

Ok for me

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

Ok I finally change to the following implementation.

I had to rebase #4435 so maybe we should merge it first if everything is fine with it.

@etherealjoy
etherealjoy merged commit 21a291f into OpenAPITools:masterNov 12, 2019
@etherealjoyetherealjoy added this to the 4.2.1 milestone Nov 12, 2019
@MartinDelille
MartinDelille deleted the remove-host branch November 12, 2019 10:19
jimschubert added a commit that referenced this pull request Nov 13, 2019
* master:
[csharp-netcore] Propagate raw content to the ApiException error content. (#4381)
Remove path relative to my home dir. (#4470)
Avoid generating uncompilable response body in Spring's API template (#2903)
cpp-qt5-client: remove host since it is not well handled (#4429)
[Java] Refactor webClient generator to use URI templates to capture correct metrics (#4314)
[Java]: Client resttemplate and webclient: array parameters of type integer in path badly generated (#4379)
Dart generate keywords (#4449)
[core] Fix system properties being immutable (#4447)
[Kotlin][Client] minor improvements (#4419)
[typescript-rxjs]: Add support for nullable (#4438)
[asciidoc] fix names of parameters (#4440)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@MartinDelille@etherealjoy@muttleyxd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

cpp-qt5-client: remove host since it is not well handled - #4429

Merged
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host
Nov 12, 2019
Merged

cpp-qt5-client: remove host since it is not well handled#4429
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host

Conversation

@MartinDelille

Copy link
Copy Markdown
Contributor

This PR replace part of the job done here: #3688

Now that the base path is well handled, the API class can use the one provided in the API description.

There was previously a mismatch between host and base path as mentionned here: #3399

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@ravinikam@stkrwork@etherealjoy@muttleyxd

@MartinDelilleMartinDelille mentioned this pull request Nov 9, 2019
4 tasks
@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

@MartinDelille
May I propose a different approach to solving this?

  1. Leave the base path in the API as it is.
 fullPath.append(this->host).append(this->basePath).append("{{{path}}}");

There are many use cases to have base path as is. e.g.

  • when same client is using multiple hosts at runtime.
  • When using REST over an existing socket. (By subclassing QNetworkManager)
  1. Properly parse the host and update/add constructor if necessary?

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

You're right there is indeed a problem in this code I wrote this summer.

The problem I raised here and that I'm trying to solve is that http://api.example.com is not a host but its not a base path neither.

I need to dig into this

@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

I tried something quick on my side to add parsing of scheme

in AbstractCppCodegen.java add the parsing of the scheme like below

 @Override
public void preprocessOpenAPI(OpenAPI openAPI) {
URL url = URLPathUtils.getServerURL(openAPI, serverVariableOverrides());
String port = URLPathUtils.getPort(url, "");
String host = url.getHost();
String scheme = url.getProtocol();
if(!port.isEmpty()) {
this.additionalProperties.put("serverPort", port);
}
if(!host.isEmpty()) {
this.additionalProperties.put("serverHost", host);
}
if(!scheme.isEmpty()) {
this.additionalProperties.put("scheme", scheme);
}
}

Then you can remove all these lines from the three header files

private:
const QString PetStoreHost = QStringLiteral("http://petstore.swagger.io");

And from all three source files

 api.setHost(PetStoreHost);

Generated constructor looks like this

PFXPetApi::PFXPetApi() : basePath("/v2"),
host("http://petstore.swagger.io"),
timeout(0){

I ran the test and it passed with these changes.

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

The only thing is that as I said above, http://api.example.com is more a base url that a host (the host is api.example.com), so maybe we should rename host to baseUrl in the api class?

@etherealjoy

Copy link
Copy Markdown
Contributor

so maybe we should rename host to baseUrl in the api class?

Ok for me

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

Ok I finally change to the following implementation.

I had to rebase #4435 so maybe we should merge it first if everything is fine with it.

@etherealjoy
etherealjoy merged commit 21a291f into OpenAPITools:masterNov 12, 2019
@etherealjoyetherealjoy added this to the 4.2.1 milestone Nov 12, 2019
@MartinDelille
MartinDelille deleted the remove-host branch November 12, 2019 10:19
jimschubert added a commit that referenced this pull request Nov 13, 2019
* master:
[csharp-netcore] Propagate raw content to the ApiException error content. (#4381)
Remove path relative to my home dir. (#4470)
Avoid generating uncompilable response body in Spring's API template (#2903)
cpp-qt5-client: remove host since it is not well handled (#4429)
[Java] Refactor webClient generator to use URI templates to capture correct metrics (#4314)
[Java]: Client resttemplate and webclient: array parameters of type integer in path badly generated (#4379)
Dart generate keywords (#4449)
[core] Fix system properties being immutable (#4447)
[Kotlin][Client] minor improvements (#4419)
[typescript-rxjs]: Add support for nullable (#4438)
[asciidoc] fix names of parameters (#4440)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@MartinDelille@etherealjoy@muttleyxd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

cpp-qt5-client: remove host since it is not well handled - #4429

Merged
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host
Nov 12, 2019
Merged

cpp-qt5-client: remove host since it is not well handled#4429
etherealjoy merged 5 commits into
OpenAPITools:masterfrom
MartinDelille:remove-host

Conversation

@MartinDelille

Copy link
Copy Markdown
Contributor

This PR replace part of the job done here: #3688

Now that the base path is well handled, the API class can use the one provided in the API description.

There was previously a mismatch between host and base path as mentionned here: #3399

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@ravinikam@stkrwork@etherealjoy@muttleyxd

@MartinDelilleMartinDelille mentioned this pull request Nov 9, 2019
4 tasks
@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

@MartinDelille
May I propose a different approach to solving this?

  1. Leave the base path in the API as it is.
 fullPath.append(this->host).append(this->basePath).append("{{{path}}}");

There are many use cases to have base path as is. e.g.

  • when same client is using multiple hosts at runtime.
  • When using REST over an existing socket. (By subclassing QNetworkManager)
  1. Properly parse the host and update/add constructor if necessary?

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

You're right there is indeed a problem in this code I wrote this summer.

The problem I raised here and that I'm trying to solve is that http://api.example.com is not a host but its not a base path neither.

I need to dig into this

@etherealjoy

etherealjoy commented Nov 10, 2019

Copy link
Copy Markdown
Contributor

I tried something quick on my side to add parsing of scheme

in AbstractCppCodegen.java add the parsing of the scheme like below

 @Override
public void preprocessOpenAPI(OpenAPI openAPI) {
URL url = URLPathUtils.getServerURL(openAPI, serverVariableOverrides());
String port = URLPathUtils.getPort(url, "");
String host = url.getHost();
String scheme = url.getProtocol();
if(!port.isEmpty()) {
this.additionalProperties.put("serverPort", port);
}
if(!host.isEmpty()) {
this.additionalProperties.put("serverHost", host);
}
if(!scheme.isEmpty()) {
this.additionalProperties.put("scheme", scheme);
}
}

Then you can remove all these lines from the three header files

private:
const QString PetStoreHost = QStringLiteral("http://petstore.swagger.io");

And from all three source files

 api.setHost(PetStoreHost);

Generated constructor looks like this

PFXPetApi::PFXPetApi() : basePath("/v2"),
host("http://petstore.swagger.io"),
timeout(0){

I ran the test and it passed with these changes.

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

The only thing is that as I said above, http://api.example.com is more a base url that a host (the host is api.example.com), so maybe we should rename host to baseUrl in the api class?

@etherealjoy

Copy link
Copy Markdown
Contributor

so maybe we should rename host to baseUrl in the api class?

Ok for me

@MartinDelille

Copy link
Copy Markdown
ContributorAuthor

Ok I finally change to the following implementation.

I had to rebase #4435 so maybe we should merge it first if everything is fine with it.

@etherealjoy
etherealjoy merged commit 21a291f into OpenAPITools:masterNov 12, 2019
@etherealjoyetherealjoy added this to the 4.2.1 milestone Nov 12, 2019
@MartinDelille
MartinDelille deleted the remove-host branch November 12, 2019 10:19
jimschubert added a commit that referenced this pull request Nov 13, 2019
* master:
[csharp-netcore] Propagate raw content to the ApiException error content. (#4381)
Remove path relative to my home dir. (#4470)
Avoid generating uncompilable response body in Spring's API template (#2903)
cpp-qt5-client: remove host since it is not well handled (#4429)
[Java] Refactor webClient generator to use URI templates to capture correct metrics (#4314)
[Java]: Client resttemplate and webclient: array parameters of type integer in path badly generated (#4379)
Dart generate keywords (#4449)
[core] Fix system properties being immutable (#4447)
[Kotlin][Client] minor improvements (#4419)
[typescript-rxjs]: Add support for nullable (#4438)
[asciidoc] fix names of parameters (#4440)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@MartinDelille@etherealjoy@muttleyxd