microsoft_kiota_serialization_json 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []