Skip to content

Conversation

@baywet
Copy link
Member

@baywet baywet commented Dec 17, 2020

  • removes parameters hashmap as the insertion is done directly from the body object
  • code-gen udpate: methods optional parameters
  • udpates unit tests
  • codegen update: adds default constructor for body
  • codegen: defensive programming
  • code-gen update: normalizes delta functions to optional parameters
  • udpates unit test for delta requests
  • updates types summary
  • splits basecollectionrequest for more precise generation
  • codegen update: collection requests rationalisation
  • updates types summary
  • code-gen update: body to parameter set rename
  • codegen update: moves delta link and delta token to request from builder
  • udpates unit test for the new parameterSet generation
  • adds a base delta collection request to parse the deltaLink

fixes #76

This pull request adds support for optional OData method parameters and streamlines the experience between functions and actions.
It also adds sugar methods for delta to parse the delta link and add the token query string parameter to the request.

final Request request = base.graphClient
            .users()
            .delta()
            .buildRequest()
            .deltaLink("https://graph.microsoft.com/v1.0/users/delta?$deltatoken=7ePNoMilh_6jGw8ZCAXfe7DBBYn5cAXbIlHDE9C1NqYBWrAmcZVRZNCeSQrOjsrQboz7DEeiB3ne78Yb6yFn4F49LhMk0eu8SAhfMyDC2yYWXGv1OXt80YGQ-rk-g7xaTcjs9Za6mQ78dwlC4apWq82EcFTjBF5V7rv4R17dMF9b0812qHLWS0aHX92TrmBBI26gLtO-_wAF2rKvltvQ8SNfJpeNyIxYO2t8fnSqaLml-ptZtgvbAPXTsJn9SpI7cDQlrZrWczdGS4yCOMUvpzClHLjb2CuKrxPcG2oD0jinB4IDB4ISC8gzb3Gst8j1cPgWMKC-Q-XVaonjz3hVi4eRVGqLtJefjuSIY8mCQv2tKTaKVfNvVSWvujtfQ6mGzLqeie0jOCI3M-w-U1iMnS3DNx6c-pGT6AmuSDjR_pR8stnqFeWKW_c5Vl8g9dbFefVHfuCelQ0WESf6rkqKReMnFM6WhExFczYCWZ42VnBBs5jEDnQpetkGf1n2x-27QLkwGUge_2cqCec8gU7lP4y43l7zBck5tP9S59TbJVJFtQ_-xw9PqMvFhnOfEciBwMubXXygEjYvltTdwiAwx4Fzaetc96GMG6Qz7SdyoSKqF5FsZvrNMsFcQAd6SjP_423-a-6ssDXeZWGQC0Sr2aLCJrXJPepfft-sTNLuPYL1Y_Pdl2DnCSvusM7tT3ONZNjRxYZhp3sZ56Su_AL0eA1pPcnqTwLpmbp7ifV2vZlG5AcXxTXYpidKjoQ1NRxIMe5ia-73-dszaMlG3wzdE_kqrJISg9UZ42W_5BdLpHNKS-dV4r2SOFzkm0qYlxWI4_p5P200C3dgP4JhODelQdEwFv-tM2NsxuDZ4EFtw2hexvRdkaVGvngqN21e32ZkAgh-aOS0uTDSRD6bE_TgIRoS53h8-Eps59wevGmgHNJUafsNICKU3XUYg0NAxohZ7t7lAsmM8Uu4L2Ex0MshI_SOVRp7Taj37NLWoaV-PYqgZIp9RNDagMYKZI4G4g2dPUIWsLq2g9dBwQNSQC2rX95hQeJAmsuQXJosmgWBn9a5JebhE_hBBiSU2YGAdNFpdBctBzwVfLJJnsNxpVYGAdc0aOa5o75WjM3fHozkMgmjVz7zz8GJLrBgEV7ArkCQNq2QZVMvZH81tLXsU6BtaBDCYH0_HdMjFArn4L3F6fapzv96DsK-ITKTIv5yra0s_u58XlLdGABKMcc5rXTAieH5W9Vio0jk1rohlXl1xwh42fWZBFAtFjEcFJ3XMke1nEqwro0BjmS6ERLJN395Wcsp7QVPisxI4VIx3wIBtdURZv7UDeRa9migUJPRjUgX4T2sHteOCPGWu_eIX6_9rlW0Lj2kfny-CMrn7f4S_jUgVeNdpMiknbRGIw2_8qUud93DEpaOs11vjLJnpCA5OYteyVt5hK5Pjy008R-tgvkYkrmUSwDWh58pWztAw2pK6bONIstjo1jc5hA9p8rcH4RPIbnMFJ2zmG8VbpsnQquPQquIIo0YLAzIeBgGiMwHjiaXPSKI_Ezuc3WsIYKlQkQHUFjI5YQUY9vBDTWzs0sHA3h_Z0jQbOGcekfeiRdFdvg_TjzTneHQG-oK1jqeCESQpb6-Oi-fJasDdjDSbmh_encE1o1OLJpiW3bCgawpgjhsI65Ygmf6CUhLNaIOaQmTtaUloF3xMk4gqtgFDNwPhuWl46U83N4sBlULJRgnuL9Douh6djW777BiU20ADrWdAO8QM0lluE3dD1LcyatAo2V6bfwozkGheYoABaoN-rlg9X2ovc5WluS56FtOs06rY1dUf8mV_qadzIgHdyYTE6qmQfnNHMVgZRxSQc4IRZwaXgT1GFq_A3Gr3bIVLbWkoNpwoITLekG6c6ISVaLNQNQD_-2mfHsvXRNJEJIIShqOL9HhJEARkK7U1yjvvlqjd05oIC65ylX2k6-jfITwAGttDBD177LMYDTJ-65ag4tPMUeZy0nUG9RePqfHs9NxSZmZf4cYct6CgsMEfi8ctUJuKhaA4MhLSKVBYTNkcy8bHAkuA7ROTopSqceWPOBuec1Ze7vp9FOQK6o0zKkgtk4rB6hBTAyGzBZybkqGisczxd-nMBYn8coqa-IiEeGWo85zfXolJBd4TLpjQWbZhUzfHlpAS64mGPDA6knY4B_cU1sLsMyxFU2m7RtlAomO5-B4ciOIebGDJIj5vg_p-6XShs6t3fERo-C43RDVG2dj-kB3Y4TxMhIRrXErdHXzI8d7Z1M6XAObh2JONHr2X48E9GRgexQEg0gRJKcPBeJaM38lt5oKIa9Pfi75ZApZlOUp6bmiJwIDORJ5eTaHzO-50pnZbzyt9uj8DAZnasj3nfrt1jzDWGmmdRqL2wNyWiiwxNWePivtJdCwr86L-qvHyqbQQjRgGpjI3xHAoAvLL717O2V6CDRIf_DGdt0Dct8DUtK9jnIaYSYukDes1FJeDj-KfF-lMdrm1K2EeTlB1pUdG_NaX1bknCmjkXy6lVgP3m3I_d7yNUVVpVsXz9kIbo-voEugmd8uo3tlx2etk_3oNU0WqGPI3xODpp_ENlpwnji1C_UO5eVGo8et9o2j482HpaEb1q-Alql0KlpgnNTb8tqGHLM3H3nf7zPJJ9Rd80tYJIBWQnzaCtLMCsvzqmTwjnOY8F0EQk6ZwLDJsee5xWeCVfpZ6ZzZH5ytcEsUWynoNM4fQvUbtt6yUu11y3AcZMP3vxfmwxou-o6tQXS_u_2W0OVjqgBk4r3FvhE0pmwNDEALIM1vbQoOASIwXBNKkvGL95AVaZZ8gxO9mX13R4KtV2PXt3QzVJOhYe0duB6gTr_Ng45doE6yNWn2tJlws3eywIhmLCh3dAqCHZghsZPltwRoqwY0Ib_JCuAnZsDA-scaRiL7ptFtIOXb1O1cT5ZRnM72lBxfkdEGKuDtv-TPo3okmqigtn4hckzaXeZlC42Ax2U2me5XqBj_Vkc9pSAwUN64-lm5cm_qrVwxy6pERuIGVP6xEh9HMBzDQgemJcurwfmKqZs.f1VLaUpVA-BopcJiSi_pLEUVB2GRt83Cbrw6x2n0Hy8")
            .withHttpMethod(HttpMethod.GET)
            .getHttpRequest();
        assertNotNull(request.url().queryParameter("$deltatoken"));

Notice the additional "deltaLink" method that accepts the full link and extracts the token from it.

final Request request = base.graphClient
            .reports()
            .getMailboxUsageStorage(ReportRootGetMailboxUsageStorageParameterSet.newBuilder().withPeriod("somePeriod").build())
            .buildRequest()
            .withHttpMethod(HttpMethod.GET)
            .getHttpRequest();
        assertEquals("https://graph.microsoft.com/v1.0/reports/microsoft.graph.getMailboxUsageStorage(period='somePeriod')", request.url().toString());

Notice the ParameterSet builder that provides a fluent API for consummers to add the parameters to the OData function they want to add instead of having methods with all the parameters for getMailboxUsageStorage

testBase.graphClient
.me()
.sendMail(UserSendMailParameterSet.newBuilder().withMessage(message).withSaveToSentItems(true).build())
.buildRequest()
.post();

Notice the parameter set builder that provides a fluent API for the OData action parameters, with a identic experience as for functions.

@baywet baywet linked an issue Dec 17, 2020 that may be closed by this pull request
@baywet baywet requested a review from darrelmiller December 17, 2020 20:49
@baywet baywet self-assigned this Dec 17, 2020
@baywet baywet added this to the 3.0.0 milestone Dec 17, 2020
@baywet baywet merged commit 30586ea into feature/v3 Jan 11, 2021
@baywet baywet deleted the feature/methods-optional-parameters branch January 11, 2021 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Action parameters are treated as required

3 participants