microsoft_kiota_abstractions 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.github/CODEOWNERS +1 -0
  3. data/.github/dependabot.yml +12 -0
  4. data/.github/workflows/code-ql.yml +76 -0
  5. data/.github/workflows/conflicting-pr-label.yml +34 -0
  6. data/.github/workflows/projectsbot.yml +81 -0
  7. data/.github/workflows/release.yml +45 -0
  8. data/.github/workflows/ruby.yml +34 -0
  9. data/.gitignore +58 -0
  10. data/CHANGELOG.md +18 -0
  11. data/CODE_OF_CONDUCT.md +9 -0
  12. data/Gemfile +6 -0
  13. data/LICENSE +21 -0
  14. data/README.md +51 -0
  15. data/Rakefile +8 -0
  16. data/SECURITY.md +41 -0
  17. data/SUPPORT.md +25 -0
  18. data/lib/microsoft_kiota_abstractions/api_client_builder.rb +19 -0
  19. data/lib/microsoft_kiota_abstractions/api_error.rb +23 -0
  20. data/lib/microsoft_kiota_abstractions/authentication/access_token_provider.rb +20 -0
  21. data/lib/microsoft_kiota_abstractions/authentication/allowed_hosts_validator.rb +39 -0
  22. data/lib/microsoft_kiota_abstractions/authentication/anonymous_authentication_provider.rb +7 -0
  23. data/lib/microsoft_kiota_abstractions/authentication/authentication_provider.rb +7 -0
  24. data/lib/microsoft_kiota_abstractions/authentication/base_bearer_token_authentication_provider.rb +26 -0
  25. data/lib/microsoft_kiota_abstractions/http_method.rb +17 -0
  26. data/lib/microsoft_kiota_abstractions/request_adapter.rb +25 -0
  27. data/lib/microsoft_kiota_abstractions/request_headers.rb +44 -0
  28. data/lib/microsoft_kiota_abstractions/request_information.rb +130 -0
  29. data/lib/microsoft_kiota_abstractions/request_option.rb +7 -0
  30. data/lib/microsoft_kiota_abstractions/serialization/additional_data_holder.rb +7 -0
  31. data/lib/microsoft_kiota_abstractions/serialization/iso_duration.rb +209 -0
  32. data/lib/microsoft_kiota_abstractions/serialization/parsable.rb +11 -0
  33. data/lib/microsoft_kiota_abstractions/serialization/parse_node.rb +61 -0
  34. data/lib/microsoft_kiota_abstractions/serialization/parse_node_factory.rb +7 -0
  35. data/lib/microsoft_kiota_abstractions/serialization/parse_node_factory_registry.rb +42 -0
  36. data/lib/microsoft_kiota_abstractions/serialization/serialization_writer.rb +69 -0
  37. data/lib/microsoft_kiota_abstractions/serialization/serialization_writer_factory.rb +9 -0
  38. data/lib/microsoft_kiota_abstractions/serialization/serialization_writer_factory_registry.rb +40 -0
  39. data/lib/microsoft_kiota_abstractions/version.rb +5 -0
  40. data/lib/microsoft_kiota_abstractions.rb +25 -0
  41. data/microsoft_kiota_abstractions.gemspec +36 -0
  42. metadata +165 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: b52a44f65735fe060086cf7e71a1294ae4344e0f99f8f6c648588c1239960c9f
4
+ data.tar.gz: 20e1bd2c661446d9e445d7f2ec57defce3723780523a1a5a3b5600eb19cbf403
5
+ SHA512:
6
+ metadata.gz: 671e9274c033862c67b865e86226e5c6d9731bafd64dc9b31ff715d01e17ee318362056699ef53247adc21898e95c8fcba115cb95875d9f629ad20917dbcb3f5
7
+ data.tar.gz: 0ad38aaa8fc6e3d8c870f7ecd9e59c4ffe0a38637122fb84f72d0b92f66fd4d6f0376ab70341a56c72e05b348003295eee6f51aa2ae43c545c69600519c761b3
@@ -0,0 +1 @@
1
+ * @andrueastman @baywet @darrelmiller @zengin @MichaelMainer @ddyett @peombwa @nikithauc @ramsessanchez @calebkiage @Ndiritu @rkodev @gavinbarron
@@ -0,0 +1,12 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ open-pull-requests-limit: 10
8
+ - package-ecosystem: bundler
9
+ directory: "/"
10
+ schedule:
11
+ interval: daily
12
+ open-pull-requests-limit: 10
@@ -0,0 +1,76 @@
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: "CodeQL"
13
+
14
+ on:
15
+ push:
16
+ branches: [ "master", main ]
17
+ pull_request:
18
+ # The branches below must be a subset of the branches above
19
+ branches: [ "master" ]
20
+ schedule:
21
+ - cron: '41 2 * * 0'
22
+
23
+ jobs:
24
+ analyze:
25
+ name: Analyze
26
+ runs-on: ubuntu-latest
27
+ permissions:
28
+ actions: read
29
+ contents: read
30
+ security-events: write
31
+
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ language: [ 'ruby' ]
36
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37
+ # Use only 'java' to analyze code written in Java, Kotlin or both
38
+ # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
39
+ # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
40
+
41
+ steps:
42
+ - name: Checkout repository
43
+ uses: actions/checkout@v3
44
+
45
+ # Initializes the CodeQL tools for scanning.
46
+ - name: Initialize CodeQL
47
+ uses: github/codeql-action/init@v2
48
+ with:
49
+ languages: ${{ matrix.language }}
50
+ # If you wish to specify custom queries, you can do so here or in a config file.
51
+ # By default, queries listed here will override any specified in a config file.
52
+ # Prefix the list here with "+" to use these queries and those in the config file.
53
+
54
+ # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
55
+ # queries: security-extended,security-and-quality
56
+
57
+
58
+ # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
59
+ # If this step fails, then you should remove it and run the build manually (see below)
60
+ - name: Autobuild
61
+ uses: github/codeql-action/autobuild@v2
62
+
63
+ # ℹ️ Command-line programs to run using the OS shell.
64
+ # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
65
+
66
+ # If the Autobuild fails above, remove it and uncomment the following three lines.
67
+ # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
68
+
69
+ # - run: |
70
+ # echo "Run, Build Application using script"
71
+ # ./location_of_script_within_repo/buildscript.sh
72
+
73
+ - name: Perform CodeQL Analysis
74
+ uses: github/codeql-action/analyze@v2
75
+ with:
76
+ category: "/language:${{matrix.language}}"
@@ -0,0 +1,34 @@
1
+ # This is a basic workflow to help you get started with Actions
2
+
3
+ name: PullRequestConflicting
4
+
5
+ # Controls when the action will run. Triggers the workflow on push or pull request
6
+ # events but only for the master branch
7
+ on:
8
+ push:
9
+ branches: [ main ]
10
+ pull_request:
11
+ types: [synchronize]
12
+ branches: [ main ]
13
+
14
+ # A workflow run is made up of one or more jobs that can run sequentially or in parallel
15
+ jobs:
16
+ # This workflow contains a single job called "build"
17
+ build:
18
+ # The type of runner that the job will run on
19
+ runs-on: ubuntu-latest
20
+
21
+ # Steps represent a sequence of tasks that will be executed as part of the job
22
+ steps:
23
+ - name: check if prs are dirty
24
+ uses: eps1lon/actions-label-merge-conflict@releases/2.x
25
+ if: env.LABELING_TOKEN != '' && env.LABELING_TOKEN != null
26
+ id: check
27
+ with:
28
+ dirtyLabel: "conflicting"
29
+ repoToken: "${{ secrets.GITHUB_TOKEN }}"
30
+ continueOnMissingPermissions: true
31
+ commentOnDirty: 'This pull request has conflicting changes, the author must resolve the conflicts before this pull request can be merged.'
32
+ commentOnClean: 'Conflicts have been resolved. A maintainer will take a look shortly.'
33
+ env:
34
+ LABELING_TOKEN: ${{secrets.GITHUB_TOKEN }}
@@ -0,0 +1,81 @@
1
+ # This workflow is used to add new issues to GitHub Projects (Beta)
2
+
3
+ name: Add PR to project
4
+ on:
5
+ issues:
6
+ types: [opened]
7
+ jobs:
8
+ track_issue:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - name: Generate token
12
+ id: generate_token
13
+ uses: tibdex/github-app-token@021a2405c7f990db57f5eae5397423dcc554159c
14
+ with:
15
+ app_id: ${{ secrets.GRAPHBOT_APP_ID }}
16
+ private_key: ${{ secrets.GRAPHBOT_APP_PEM }}
17
+
18
+ - name: Get project data
19
+ env:
20
+ GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
21
+ ORGANIZATION: microsoftgraph
22
+ PROJECT_NUMBER: 38
23
+ run: |
24
+ gh api graphql -f query='
25
+ query($org: String!, $number: Int!) {
26
+ organization(login: $org){
27
+ projectNext(number: $number) {
28
+ id
29
+ fields(first:20) {
30
+ nodes {
31
+ id
32
+ name
33
+ settings
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
39
+
40
+ echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
41
+ echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
42
+ echo 'TRIAGE_OPTION_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Needs Triage 🔍") |.id' project_data.json) >> $GITHUB_ENV
43
+
44
+ - name: Add Issue to project
45
+ env:
46
+ GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
47
+ ISSUE_ID: ${{ github.event.issue.node_id }}
48
+ run: |
49
+ item_id="$( gh api graphql -f query='
50
+ mutation($project:ID!, $issue:ID!) {
51
+ addProjectNextItem(input: {projectId: $project, contentId: $issue}) {
52
+ projectNextItem {
53
+ id
54
+ }
55
+ }
56
+ }' -f project=$PROJECT_ID -f issue=$ISSUE_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
57
+
58
+ echo 'ITEM_ID='$item_id >> $GITHUB_ENV
59
+
60
+ - name: Set Triage
61
+ env:
62
+ GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
63
+ run: |
64
+ gh api graphql -f query='
65
+ mutation (
66
+ $project: ID!
67
+ $item: ID!
68
+ $status_field: ID!
69
+ $status_value: String!
70
+ ) {
71
+ set_status: updateProjectNextItemField(input: {
72
+ projectId: $project
73
+ itemId: $item
74
+ fieldId: $status_field
75
+ value: $status_value
76
+ }) {
77
+ projectNextItem {
78
+ id
79
+ }
80
+ }
81
+ }' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.TRIAGE_OPTION_ID }} --silent
@@ -0,0 +1,45 @@
1
+ name: Git Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v[0-9]+.[0-9]+.[0-9]+"
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ Git_Release:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v3
14
+ - name: Github Release
15
+ uses: anton-yurchenko/git-release@v5.0
16
+ env:
17
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN}}
18
+ DRAFT_RELEASE: "false"
19
+ PRE_RELEASE: "false"
20
+ CHANGELOG_FILE: "CHANGELOG.md"
21
+ ALLOW_EMPTY_CHANGELOG: "true"
22
+
23
+ deploy_prod:
24
+ environment:
25
+ name: production_feeds
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v3
29
+ - uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: '3.1'
32
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
33
+ bundler: 'latest'
34
+ cache-version: 1
35
+ - run: bundle exec rake
36
+ - name: Publish to RubyGems
37
+ run: |
38
+ mkdir -p $HOME/.gem
39
+ touch $HOME/.gem/credentials
40
+ chmod 0600 $HOME/.gem/credentials
41
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
42
+ gem build *.gemspec
43
+ gem push *.gem
44
+ env:
45
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -0,0 +1,34 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches: [ main ]
7
+ pull_request:
8
+
9
+ jobs:
10
+ build:
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ os: [ubuntu-latest, macos-latest]
15
+ ruby-version: ['2.7', '3.0', '3.1', head, jruby, jruby-head, truffleruby, truffleruby-head]
16
+ runs-on: ${{ matrix.os }}
17
+ steps:
18
+ - uses: actions/checkout@v3
19
+ - uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby-version }}
22
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
23
+ bundler: 'latest'
24
+ cache-version: 1
25
+ - name: Run tests
26
+ run: bundle exec rake
27
+ - name: Upload artifacts for ruby version 3 and ubuntu
28
+ if: ${{ matrix.os == 'ubuntu-latest' && matrix.ruby-version == '3.1'}}
29
+ uses: actions/upload-artifact@v3
30
+ with:
31
+ name: drop
32
+ path: |
33
+ ./Gemfile.lock
34
+ ./README.md
data/.gitignore ADDED
@@ -0,0 +1,58 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/examples.txt
9
+ /test/tmp/
10
+ /test/version_tmp/
11
+ /tmp/
12
+
13
+ # Used by dotenv library to load environment variables.
14
+ # .env
15
+
16
+ # Ignore Byebug command history file.
17
+ .byebug_history
18
+
19
+ ## Specific to RubyMotion:
20
+ .dat*
21
+ .repl_history
22
+ build/
23
+ *.bridgesupport
24
+ build-iPhoneOS/
25
+ build-iPhoneSimulator/
26
+
27
+ ## Specific to RubyMotion (use of CocoaPods):
28
+ #
29
+ # We recommend against adding the Pods directory to your .gitignore. However
30
+ # you should judge for yourself, the pros and cons are mentioned at:
31
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
32
+ #
33
+ # vendor/Pods/
34
+
35
+ ## Documentation cache and generated files:
36
+ /.yardoc/
37
+ /_yardoc/
38
+ /doc/
39
+ /rdoc/
40
+
41
+ ## Environment normalization:
42
+ /.bundle/
43
+ /vendor/bundle
44
+ /lib/bundler/man/
45
+
46
+ # for a library or gem, you might want to ignore these files since the code is
47
+ # intended to run in multiple environments; otherwise, check them in:
48
+ Gemfile.lock
49
+ .ruby-version
50
+ .ruby-gemset
51
+
52
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
53
+ .rvmrc
54
+
55
+ # Used by RuboCop. Remote config files pulled in from inherit_from directive.
56
+ # .rubocop-https?--*
57
+
58
+ .rspec_status
data/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+
12
+ ### Changed
13
+
14
+ ## [0.12.0] - 2022-12-30
15
+
16
+ ### Added
17
+
18
+ - Initial public release of the package.
@@ -0,0 +1,9 @@
1
+ # Microsoft Open Source Code of Conduct
2
+
3
+ This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
4
+
5
+ Resources:
6
+
7
+ - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
8
+ - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
9
+ - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in microsoft_kiota_abstractions.gemspec
6
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Microsoft Corporation.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE
data/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # Kiota Abstractions Library for Ruby
2
+
3
+ ![Ruby](https://github.com/microsoft/kiota/actions/workflows/ruby.yml/badge.svg)
4
+
5
+ The Kiota abstractions Library for go is the go library defining the basic constructs Kiota projects need once an SDK has been generated from an OpenAPI definition.
6
+
7
+ A [Kiota](https://github.com/microsoft/kiota) generated project will need a reference to the abstraction package to build and run.
8
+
9
+ Read more about Kiota [here](https://github.com/microsoft/kiota/blob/main/README.md).
10
+
11
+ ## Using the abstractions library
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ ```ruby
16
+ gem "microsoft_kiota_abstractions", "0.12.0"
17
+ ```
18
+
19
+ And then execute:
20
+
21
+ ```shell
22
+ bundle install
23
+ ```
24
+
25
+ Or install it yourself as:
26
+
27
+ ```shell
28
+ gem install microsoft_kiota_abstractions --version "0.12.0"
29
+ ```
30
+
31
+ ## Contributing
32
+
33
+ This project welcomes contributions and suggestions. Most contributions require you to agree to a
34
+ Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
35
+ the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
36
+
37
+ When you submit a pull request, a CLA bot will automatically determine whether you need to provide
38
+ a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
39
+ provided by the bot. You will only need to do this once across all repos using our CLA.
40
+
41
+ This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
42
+ For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
43
+ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
44
+
45
+ ## Trademarks
46
+
47
+ This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
48
+ trademarks or logos is subject to and must follow
49
+ [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
50
+ Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
51
+ Any use of third-party trademarks or logos are subject to those third-party's policies.
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
data/SECURITY.md ADDED
@@ -0,0 +1,41 @@
1
+ <!-- BEGIN MICROSOFT SECURITY.MD V0.0.8 BLOCK -->
2
+
3
+ ## Security
4
+
5
+ Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
6
+
7
+ If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.
8
+
9
+ ## Reporting Security Issues
10
+
11
+ **Please do not report security vulnerabilities through public GitHub issues.**
12
+
13
+ Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).
14
+
15
+ If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).
16
+
17
+ You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc).
18
+
19
+ Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
20
+
21
+ * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
22
+ * Full paths of source file(s) related to the manifestation of the issue
23
+ * The location of the affected source code (tag/branch/commit or direct URL)
24
+ * Any special configuration required to reproduce the issue
25
+ * Step-by-step instructions to reproduce the issue
26
+ * Proof-of-concept or exploit code (if possible)
27
+ * Impact of the issue, including how an attacker might exploit the issue
28
+
29
+ This information will help us triage your report more quickly.
30
+
31
+ If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.
32
+
33
+ ## Preferred Languages
34
+
35
+ We prefer all communications to be in English.
36
+
37
+ ## Policy
38
+
39
+ Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).
40
+
41
+ <!-- END MICROSOFT SECURITY.MD BLOCK -->
data/SUPPORT.md ADDED
@@ -0,0 +1,25 @@
1
+ # TODO: The maintainer of this repo has not yet edited this file
2
+
3
+ **REPO OWNER**: Do you want Customer Service & Support (CSS) support for this product/project?
4
+
5
+ - **No CSS support:** Fill out this template with information about how to file issues and get help.
6
+ - **Yes CSS support:** Fill out an intake form at [aka.ms/onboardsupport](https://aka.ms/onboardsupport). CSS will work with/help you to determine next steps.
7
+ - **Not sure?** Fill out an intake as though the answer were "Yes". CSS will help you decide.
8
+
9
+ *Then remove this first heading from this SUPPORT.MD file before publishing your repo.*
10
+
11
+ # Support
12
+
13
+ ## How to file issues and get help
14
+
15
+ This project uses GitHub Issues to track bugs and feature requests. Please search the existing
16
+ issues before filing new issues to avoid duplicates. For new issues, file your bug or
17
+ feature request as a new Issue.
18
+
19
+ For help and questions about using this project, please **REPO MAINTAINER: INSERT INSTRUCTIONS HERE
20
+ FOR HOW TO ENGAGE REPO OWNERS OR COMMUNITY FOR HELP. COULD BE A STACK OVERFLOW TAG OR OTHER
21
+ CHANNEL. WHERE WILL YOU HELP PEOPLE?**.
22
+
23
+ ## Microsoft Support Policy
24
+
25
+ Support for this **PROJECT or PRODUCT** is limited to the resources listed above.
@@ -0,0 +1,19 @@
1
+ require_relative "serialization/parse_node_factory"
2
+ require_relative "serialization/parse_node_factory_registry"
3
+ require_relative "serialization/serialization_writer_factory"
4
+ require_relative "serialization/serialization_writer_factory_registry"
5
+
6
+ module MicrosoftKiotaAbstractions
7
+ class ApiClientBuilder
8
+ def self.register_default_serializer(factory_class)
9
+ factory = factory_class.new()
10
+ MicrosoftKiotaAbstractions::SerializationWriterFactoryRegistry.default_instance.content_type_associated_factories[factory.get_valid_content_type()] = factory
11
+ end
12
+
13
+ def self.register_default_deserializer(factory_class)
14
+ factory = factory_class.new()
15
+ MicrosoftKiotaAbstractions::ParseNodeFactoryRegistry.default_instance.content_type_associated_factories[factory.get_valid_content_type()] = factory
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,23 @@
1
+ require_relative 'serialization/parsable'
2
+ module MicrosoftKiotaAbstractions
3
+ class ApiError < StandardError
4
+ include MicrosoftKiotaAbstractions::Parsable
5
+
6
+ ##
7
+ ## The deserialization information for the current model
8
+ ## @return a i_dictionary
9
+ ##
10
+ def get_field_deserializers()
11
+ return Hash.new
12
+ end
13
+ ##
14
+ ## Serializes information the current object
15
+ ## @param writer Serialization writer to use to serialize this model
16
+ ## @return a void
17
+ ##
18
+ def serialize(writer)
19
+ raise StandardError, 'writer cannot be null' if writer.nil?
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'allowed_hosts_validator'
4
+
5
+ module MicrosoftKiotaAbstractions
6
+ # Access Token Provider Module implementation
7
+ module AccessTokenProvider
8
+ # This function obtains the authorization token.
9
+ # :params
10
+ # uri: a string containing the uri
11
+ # additional_params: hash of symbols to string values, ie { response_mode: 'fragment', prompt: 'login' }
12
+ # default is empty hash
13
+ def get_authorization_token(uri, additional_properties = {})
14
+ raise NotImplementedError.new
15
+ end
16
+
17
+ attr_accessor :scopes, :host_validator
18
+
19
+ end
20
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri'
4
+
5
+ module MicrosoftKiotaAbstractions
6
+ # Maintains a list of valid hosts and allows authentication providers to check whether
7
+ # a host is valid before authenticating a request
8
+ class AllowedHostsValidator
9
+ # creates a new AllocatedHostsValidator with provided values
10
+ def initialize(allowed_hosts)
11
+ @allowed_hosts = {}
12
+ allowed_hosts.each { |host| @allowed_hosts[host.downcase] = true }
13
+ end
14
+
15
+ # sets the list of valid hosts with provided value (val)
16
+ def allowed_hosts=(val)
17
+ @allowed_hosts = {}
18
+ val.each { |host| @allowed_hosts[host.downcase] = true }
19
+ end
20
+
21
+ # checks whether the provided host is valid
22
+ def url_host_valid?(url)
23
+ return true if @allowed_hosts.empty?
24
+
25
+ parsed_url = URI(url)
26
+ return false if parsed_url.host.nil?
27
+
28
+ return false unless parsed_url.is_a?(URI::HTTPS)
29
+
30
+ @allowed_hosts.key? parsed_url.host.downcase
31
+
32
+ rescue URI::InvalidURIError
33
+ false
34
+ end
35
+
36
+ # gets the list of valid hosts
37
+ attr_reader :allowed_hosts
38
+ end
39
+ end
@@ -0,0 +1,7 @@
1
+ module MicrosoftKiotaAbstractions
2
+ class AnonymousAuthenticationProvider
3
+ include MicrosoftKiotaAbstractions::AuthenticationProvider
4
+ def authenticate_request(request)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module MicrosoftKiotaAbstractions
2
+ module AuthenticationProvider
3
+ def authenticate_request(request, additional_properties = {})
4
+ raise NotImplementedError.new
5
+ end
6
+ end
7
+ end