microsoft_kiota_serialization_json 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0ba822cb4d35f1970449b0905e7ef8a8264fd5c9735c01a39fe8f7c23fc48e24
4
+ data.tar.gz: 609ac085e0bab75b312f22e60bf2315b07242c2cc5317e054ec731e0e47f35a9
5
+ SHA512:
6
+ metadata.gz: d34cadd37ea2dedae24d3e2e71595e087655274d0f0217bed244fd7930f11e57d27a81edbb120aa8218c3aa9f96008a736d02e7101f13731477e2ccc5a650cfb
7
+ data.tar.gz: 4a8fa4d2d1d3bfeff833bfd1d1d58bed8e86c4b2f4fae2dc429f98794d348d6411d565d76b6760ab6f21121d9d6009326a098ba2472adfa7b34cb5d13eb2b30e
@@ -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/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
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.7.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,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ 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,53 @@
1
+ # Kiota Json Serialization Library for Ruby
2
+
3
+ ![Ruby](https://github.com/microsoft/kiota-serialization-json-ruby/actions/workflows/ruby.yml/badge.svg)
4
+
5
+ The Json Serialization Library for Ruby is the Ruby JSON serialization library implementation.
6
+
7
+ A [Kiota](https://github.com/microsoft/kiota) generated project will need a reference to a json serialization package to handle json payloads from an API endpoint.
8
+
9
+ Read more about Kiota [here](https://github.com/microsoft/kiota/blob/main/README.md).
10
+
11
+ ## Using the Serialization JSON Library
12
+
13
+ ## Installation
14
+
15
+ Add this line to your application's Gemfile:
16
+
17
+ ```ruby
18
+ gem "microsoft_kiota_serialization_json", "0.7.0"
19
+ ```
20
+
21
+ And then execute:
22
+
23
+ ```shell
24
+ bundle install
25
+ ```
26
+
27
+ Or install it yourself as:
28
+
29
+ ```shell
30
+ gem install microsoft_kiota_serialization_json --version "0.7.0"
31
+ ```
32
+
33
+ ## Contributing
34
+
35
+ This project welcomes contributions and suggestions. Most contributions require you to agree to a
36
+ Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
37
+ the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
38
+
39
+ When you submit a pull request, a CLA bot will automatically determine whether you need to provide
40
+ a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
41
+ provided by the bot. You will only need to do this once across all repos using our CLA.
42
+
43
+ This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
44
+ For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
45
+ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
46
+
47
+ ## Trademarks
48
+
49
+ This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
50
+ trademarks or logos is subject to and must follow
51
+ [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
52
+ Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
53
+ 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,128 @@
1
+ require 'time'
2
+ require 'date'
3
+ require 'json'
4
+ require 'uuidtools'
5
+ require 'microsoft_kiota_abstractions'
6
+
7
+
8
+ module MicrosoftKiotaSerializationJson
9
+ class JsonParseNode
10
+ include MicrosoftKiotaAbstractions::ParseNode
11
+ def initialize(node)
12
+ @current_node = node
13
+ end
14
+
15
+ def get_string_value
16
+ @current_node.to_s
17
+ end
18
+
19
+ def get_boolean_value
20
+ @current_node
21
+ end
22
+
23
+ def get_number_value
24
+ @current_node.to_i
25
+ end
26
+
27
+ def get_float_value
28
+ @current_node.to_f
29
+ end
30
+
31
+ def get_guid_value
32
+ UUIDTools::UUID.parse(@current_node)
33
+ end
34
+
35
+ def get_date_value
36
+ Date.parse(@current_node)
37
+ end
38
+
39
+ def get_time_value()
40
+ Time.parse(@current_node)
41
+ end
42
+
43
+ def get_date_time_value()
44
+ DateTime.parse(@current_node)
45
+ end
46
+
47
+ def get_duration_value()
48
+ MicrosoftKiotaAbstractions::ISODuration.new(@current_node)
49
+ end
50
+
51
+ def get_collection_of_primitive_values(type)
52
+ @current_node.map do |x|
53
+ current_parse_node = JsonParseNode.new(x)
54
+ case type
55
+ when String
56
+ current_parse_node.get_string_value
57
+ when Float
58
+ current_parse_node.get_float_value
59
+ when Integer
60
+ current_parse_node.get_float_value
61
+ when "Boolean"
62
+ current_parse_node.get_float_value
63
+ when DateTime
64
+ current_parse_node.get_date_time_value
65
+ when Time
66
+ current_parse_node.get_time_value
67
+ when Date
68
+ current_parse_node.get_date_value
69
+ when MicrosoftKiotaAbstractions::ISODuration
70
+ current_parse_node.get_duration_value
71
+ when UUIDTools::UUID
72
+ current_parse_node.get_guid_value
73
+ else
74
+ current_parse_node.get_string_value
75
+ end
76
+ rescue StandardError => e
77
+ raise e.class, `Failed to fetch #{type} type`
78
+ end
79
+ end
80
+
81
+ def get_collection_of_object_values(factory)
82
+ raise StandardError, 'Factory cannot be null' if factory.nil?
83
+ @current_node.map do |x|
84
+ current_parse_node = JsonParseNode.new(x)
85
+ current_parse_node.get_object_value(factory)
86
+ end
87
+ end
88
+
89
+ def get_object_value(factory)
90
+ raise StandardError, 'Factory cannot be null' if factory.nil?
91
+ item = factory.call(self)
92
+ assign_field_values(item)
93
+ item
94
+ rescue StandardError => e
95
+ raise e.class, 'Error during deserialization'
96
+ end
97
+
98
+ def assign_field_values(item)
99
+ fields = item.get_field_deserializers
100
+ @current_node.each do |k, v|
101
+ deserializer = fields[k]
102
+ if deserializer
103
+ deserializer.call(JsonParseNode.new(v))
104
+ elsif item.additional_data
105
+ item.additional_data[k] = v
106
+ else
107
+ item.additional_data = Hash.new(k => v)
108
+ end
109
+ end
110
+ end
111
+
112
+ def get_enum_values(_type)
113
+ raw_values = get_string_value
114
+ raw_values.split(',').map(&:strip)
115
+ end
116
+
117
+ def get_enum_value(type)
118
+ items = get_enum_values(type).map(&:to_sym)
119
+ items[0] if items.length.positive?
120
+ end
121
+
122
+ def get_child_node(name)
123
+ raise StandardError, 'Name cannot be null' if name.nil? || name.empty?
124
+ raw_value = @current_node[name]
125
+ return JsonParseNode.new(raw_value) if raw_value
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,23 @@
1
+ require 'json'
2
+ require 'microsoft_kiota_abstractions'
3
+
4
+ module MicrosoftKiotaSerializationJson
5
+ class JsonParseNodeFactory
6
+ include MicrosoftKiotaAbstractions::ParseNodeFactory
7
+
8
+ def get_valid_content_type
9
+ 'application/json'
10
+ end
11
+
12
+ def get_parse_node(content_type, content)
13
+ if !content_type
14
+ raise StandardError, 'content type cannot be undefined or empty'
15
+ elsif get_valid_content_type != content_type
16
+ raise StandardError, `expected a #{get_valid_content_type} content type`
17
+ end
18
+ raise StandardError, 'content cannot be undefined or empty' unless content
19
+
20
+ JsonParseNode.new(JSON.parse(content))
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,228 @@
1
+ require 'time'
2
+ require 'date'
3
+ require 'json'
4
+ require "uuidtools"
5
+ require 'microsoft_kiota_abstractions'
6
+
7
+ module MicrosoftKiotaSerializationJson
8
+ class JsonSerializationWriter
9
+ include MicrosoftKiotaAbstractions::SerializationWriter
10
+ @writer
11
+
12
+ def initialize()
13
+ @writer = Hash.new()
14
+ end
15
+
16
+ def writer
17
+ @writer
18
+ end
19
+
20
+ def write_string_value(key, value)
21
+ if !key && !value
22
+ raise StandardError, "no key or value included in write_string_value(key, value)"
23
+ end
24
+ if !key
25
+ return value.to_s
26
+ end
27
+ if !value
28
+ @writer[key] = nil
29
+ else
30
+ @writer[key] = value
31
+ end
32
+ end
33
+
34
+ def write_boolean_value(key, value)
35
+ if !key && !value
36
+ raise StandardError, "no key or value included in write_boolean_value(key, value)"
37
+ end
38
+ if !key
39
+ return value
40
+ end
41
+ @writer[key] = value
42
+ end
43
+
44
+ def write_number_value(key, value)
45
+ if !key && !value
46
+ raise StandardError, "no key or value included in write_number_value(key, value)"
47
+ end
48
+ if !key
49
+ return value
50
+ end
51
+ @writer[key] = value
52
+ end
53
+
54
+ def write_float_value(key, value)
55
+ if !key && !value
56
+ raise StandardError, "no key or value included in write_float_value(key, value)"
57
+ end
58
+ if !key
59
+ return value
60
+ end
61
+ @writer[key] = value
62
+ end
63
+
64
+ def write_guid_value(key, value)
65
+ if !key && !value
66
+ raise StandardError, "no key or value included in write_guid_value(key, value)"
67
+ end
68
+ if !key
69
+ return value.to_s
70
+ end
71
+ if !value
72
+ @writer[key] = nil
73
+ else
74
+ @writer[key] = value.to_s
75
+ end
76
+ end
77
+
78
+ def write_date_value(key, value)
79
+ if !key && !value
80
+ raise StandardError, "no key or value included in write_date_value(key, value)"
81
+ end
82
+ if !key
83
+ return value.strftime("%Y-%m-%d")
84
+ end
85
+ if !value
86
+ @writer[key] = nil
87
+ else
88
+ @writer[key] = value.strftime("%Y-%m-%d")
89
+ end
90
+ end
91
+
92
+ def write_time_value(key, value)
93
+ if !key && !value
94
+ raise StandardError, "no key or value included in write_time_value(key, value)"
95
+ end
96
+ if !key
97
+ return value.strftime("%H:%M:%S%Z")
98
+ end
99
+ if !value
100
+ @writer[key] = nil
101
+ else
102
+ @writer[key] = value.strftime("%H:%M:%S%Z")
103
+ end
104
+ end
105
+
106
+ def write_date_time_value(key, value)
107
+ if !key && !value
108
+ raise StandardError, "no key or value included in write_date_time_value(key, value)"
109
+ end
110
+ if !key
111
+ return value.strftime("%Y-%m-%dT%H:%M:%S%Z")
112
+ end
113
+ if !value
114
+ @writer[key] = nil
115
+ else
116
+ @writer[key] = value.strftime("%Y-%m-%dT%H:%M:%S%Z")
117
+ end
118
+ end
119
+
120
+ def write_duration_value(key, value)
121
+ if !key && !value
122
+ raise StandardError, "no key or value included in write_duration_value(key, value)"
123
+ end
124
+ if !key
125
+ return value.string
126
+ end
127
+ if !value
128
+ @writer[key] = nil
129
+ else
130
+ @writer[key] = value.string
131
+ end
132
+ end
133
+
134
+ def write_collection_of_primitive_values(key, values)
135
+ if values
136
+ if !key
137
+ return values.map do |v|
138
+ self.write_any_value(nil, v)
139
+ end
140
+ end
141
+ @writer[key] = values.map do |v|
142
+ self.write_any_value(key, v)
143
+ end
144
+ end
145
+ end
146
+
147
+ def write_collection_of_object_values(key, values)
148
+ if values
149
+ if !key
150
+ return values.map do |v|
151
+ self.write_object_value(nil, v)
152
+ end
153
+ end
154
+ @writer[key] = values.map do |v|
155
+ self.write_object_value(nil, v).writer
156
+ end
157
+ end
158
+ end
159
+
160
+ def write_object_value(key, value)
161
+ if value
162
+ if !key
163
+ temp = JsonSerializationWriter.new()
164
+ value.serialize(temp)
165
+ return temp
166
+ end
167
+ begin
168
+ temp = JsonSerializationWriter.new()
169
+ value.serialize(temp)
170
+ @writer[key] = temp.writer
171
+ rescue StandardError => e
172
+ raise e.class, "no key or value included in write_boolean_value(key, value)"
173
+ end
174
+ end
175
+ end
176
+
177
+ def write_enum_value(key, values)
178
+ self.write_string_value(key, values.to_s)
179
+ end
180
+
181
+ def get_serialized_content()
182
+ return @writer.to_json #TODO encode to byte array to stay content type agnostic
183
+ end
184
+
185
+ def write_additional_data(value)
186
+ if !value
187
+ return
188
+ end
189
+ value.each do |x, y|
190
+ self.write_any_value(x,y)
191
+ end
192
+ end
193
+
194
+ def write_any_value(key, value)
195
+ if value
196
+ if !!value == value
197
+ return value
198
+ elsif value.instance_of? String
199
+ return self.write_string_value(key, value)
200
+ elsif value.instance_of? Integer
201
+ return self.write_number_value(key, value)
202
+ elsif value.instance_of? Float
203
+ return self.write_float_value(key, value)
204
+ elsif value.instance_of? DateTime
205
+ return self.write_date_time_value(key, value)
206
+ elsif value.instance_of? Time
207
+ return self.write_time_value(key, value)
208
+ elsif value.instance_of? Date
209
+ return self.write_date_value(key, value)
210
+ elsif value.instance_of? MicrosoftKiotaAbstractions::ISODuration
211
+ return self.write_duration_value(key, value)
212
+ elsif value.instance_of? Array
213
+ return self.write_collection_of_primitive_values(key, value)
214
+ elsif value.is_a? Object
215
+ return value.to_s
216
+ else
217
+ raise StandardError, "encountered unknown value type during serialization #{value.to_s}"
218
+ end
219
+ else
220
+ if key
221
+ @writer[key] = nil
222
+ else
223
+ raise StandardError, "no key included when writing json property"
224
+ end
225
+ end
226
+ end
227
+ end
228
+ end
@@ -0,0 +1,21 @@
1
+ require 'microsoft_kiota_abstractions'
2
+
3
+ module MicrosoftKiotaSerializationJson
4
+ class JsonSerializationWriterFactory
5
+ include MicrosoftKiotaAbstractions::SerializationWriterFactory
6
+
7
+ def get_valid_content_type
8
+ 'application/json'
9
+ end
10
+
11
+ def get_serialization_writer(content_type)
12
+ if !content_type
13
+ raise StandardError, 'content type cannot be undefined or empty'
14
+ elsif get_valid_content_type != content_type
15
+ raise StandardError, `expected a #{get_valid_content_type} content type`
16
+ end
17
+
18
+ JsonSerializationWriter.new
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MicrosoftKiotaSerializationJson
4
+ VERSION = "0.7.0"
5
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "microsoft_kiota_serialization_json/json_parse_node"
4
+ require_relative "microsoft_kiota_serialization_json/json_parse_node_factory"
5
+ require_relative "microsoft_kiota_serialization_json/json_serialization_writer"
6
+ require_relative "microsoft_kiota_serialization_json/json_serialization_writer_factory"
7
+ require_relative "microsoft_kiota_serialization_json/version"
8
+
9
+ module MicrosoftKiotaSerializationJson
10
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/microsoft_kiota_serialization_json/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "microsoft_kiota_serialization_json"
7
+ spec.version = MicrosoftKiotaSerializationJson::VERSION
8
+ spec.authors = 'Microsoft Corporation'
9
+ spec.email = 'graphsdkpub@microsoft.com'
10
+ spec.description = 'Implementation of Kiota Serialization interfaces for JSON'
11
+ spec.summary = 'Microsoft Kiota Serialization - Ruby serialization for building library agnostic http client'
12
+ spec.homepage = 'https://microsoft.github.io/kiota/'
13
+ spec.license = 'MIT'
14
+ spec.metadata = {
15
+ 'bug_tracker_uri' => 'https://github.com/microsoft/kiota-serialization-json-ruby/issues',
16
+ 'changelog_uri' => 'https://github.com/microsoft/kiota-serialization-json-ruby/blob/main/CHANGELOG.md',
17
+ 'homepage_uri' => spec.homepage,
18
+ 'source_code_uri' => 'https://github.com/microsoft/kiota-serialization-json-ruby',
19
+ 'github_repo' => 'ssh://github.com/microsoft/kiota-serialization-json-ruby'
20
+ }
21
+ spec.required_ruby_version = ">= 2.7.0"
22
+
23
+ # Specify which files should be added to the gem when it is released.
24
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
27
+ end
28
+ spec.bindir = 'bin'
29
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ['lib']
31
+
32
+ spec.add_runtime_dependency 'microsoft_kiota_abstractions', '~> 0.12.0', '>= 0.12.0'
33
+ spec.add_runtime_dependency 'uuidtools'
34
+ spec.add_development_dependency 'rake', '~> 13.0'
35
+ spec.add_development_dependency 'rspec', '~> 3.0'
36
+ spec.add_development_dependency 'rubocop'
37
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: microsoft_kiota_serialization_json
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
5
+ platform: ruby
6
+ authors:
7
+ - Microsoft Corporation
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-12-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: microsoft_kiota_abstractions
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.12.0
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.12.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 0.12.0
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.12.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: uuidtools
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '13.0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '13.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubocop
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ description: Implementation of Kiota Serialization interfaces for JSON
90
+ email: graphsdkpub@microsoft.com
91
+ executables: []
92
+ extensions: []
93
+ extra_rdoc_files: []
94
+ files:
95
+ - ".github/CODEOWNERS"
96
+ - ".github/dependabot.yml"
97
+ - ".github/workflows/code-ql.yml"
98
+ - ".github/workflows/conflicting-pr-label.yml"
99
+ - ".github/workflows/projectsbot.yml"
100
+ - ".github/workflows/release.yml"
101
+ - ".github/workflows/ruby.yml"
102
+ - ".gitignore"
103
+ - ".rspec"
104
+ - CHANGELOG.md
105
+ - CODE_OF_CONDUCT.md
106
+ - Gemfile
107
+ - LICENSE
108
+ - README.md
109
+ - Rakefile
110
+ - SECURITY.md
111
+ - SUPPORT.md
112
+ - lib/microsoft_kiota_serialization_json.rb
113
+ - lib/microsoft_kiota_serialization_json/json_parse_node.rb
114
+ - lib/microsoft_kiota_serialization_json/json_parse_node_factory.rb
115
+ - lib/microsoft_kiota_serialization_json/json_serialization_writer.rb
116
+ - lib/microsoft_kiota_serialization_json/json_serialization_writer_factory.rb
117
+ - lib/microsoft_kiota_serialization_json/version.rb
118
+ - microsoft_kiota_serialization_json.gemspec
119
+ homepage: https://microsoft.github.io/kiota/
120
+ licenses:
121
+ - MIT
122
+ metadata:
123
+ bug_tracker_uri: https://github.com/microsoft/kiota-serialization-json-ruby/issues
124
+ changelog_uri: https://github.com/microsoft/kiota-serialization-json-ruby/blob/main/CHANGELOG.md
125
+ homepage_uri: https://microsoft.github.io/kiota/
126
+ source_code_uri: https://github.com/microsoft/kiota-serialization-json-ruby
127
+ github_repo: ssh://github.com/microsoft/kiota-serialization-json-ruby
128
+ post_install_message:
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 2.7.0
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubygems_version: 3.3.26
144
+ signing_key:
145
+ specification_version: 4
146
+ summary: Microsoft Kiota Serialization - Ruby serialization for building library agnostic
147
+ http client
148
+ test_files: []