Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[C-libcurl] Support setting basePath and apiKeys when creating an apiClient #4960

Merged
merged 1 commit into from
Jan 14, 2020
Merged

Conversation

ityuhui
Copy link
Contributor

@ityuhui ityuhui commented Jan 10, 2020

After generating a C client, user will use apiClient_create to create an apiClient to execute REST request operation.

But for now, apiClient_create does not accept any parameter so apiClient cannot get any user setting.
e.g.

apiClient_t *apiClient_create() {
    curl_global_init(CURL_GLOBAL_ALL);
    apiClient_t *apiClient = malloc(sizeof(apiClient_t));
    apiClient->basePath = "http://localhost";
    apiClient->dataReceived = NULL;
    apiClient->response_code = 0;
    apiClient->apiKeys = NULL;

    return apiClient;
}

I added a new function "apiClient_create_with_base_path" to get user settings:

apiClient_t *apiClient_create_with_base_path(const char *basePath
, list_t *apiKeys
) {
    curl_global_init(CURL_GLOBAL_ALL);
    apiClient_t *apiClient = malloc(sizeof(apiClient_t));
    if(basePath){
        apiClient->basePath = strdup(basePath);
    }else{
        apiClient->basePath = strdup("http://localhost");
    }
    apiClient->dataReceived = NULL;
    apiClient->response_code = 0;
    if(apiKeys!= NULL) {
        apiClient->apiKeys = list_create();
        listEntry_t *listEntry = NULL;
        list_ForEach(listEntry, apiKeys) {
            keyValuePair_t *pair = listEntry->data;
            keyValuePair_t *pairDup = keyValuePair_create(strdup(pair->key), strdup(pair->value));
            list_addElement(apiClient->apiKeys, pairDup);
        }
    }else{
        apiClient->apiKeys = NULL;
    }

    return apiClient;
}

And I also updated the header file and apiClient_free.

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 master: 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.

@wing328 @zhemant

@wing328
Copy link
Member

wing328 commented Jan 14, 2020

Bitrise.io failure has been addressed in the master.

@wing328 wing328 merged commit 4767259 into OpenAPITools:master Jan 14, 2020
@ityuhui ityuhui deleted the yhworking branch January 15, 2020 02:13
Sign up for free to 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.

2 participants