-
Couldn't load subscription status.
- Fork 1
Introduce Oppia proto API v1: Android #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from 2 commits
1bfefe8
a69a240
b41cf7d
be028d2
0ab3fc3
abbdf13
c1e97fd
0e921d1
f6b3210
47dfb60
8dc3eb1
a5edbf5
13fad56
fa11822
cdf7150
0231af8
ab70643
0b2896c
5d868e2
0b937e3
5ceec82
78d06fa
ee332e2
ee5b117
b10a3a4
9afead9
97a134d
cdd8c67
fcf4a60
eabbdf2
937c883
458d489
0250c69
1b3ef9e
bb559ea
886e1fc
8f3cde8
4ae1907
bc78dd9
6c3b65a
58b1b7b
1c129b7
7f766e1
7219d37
8bcb631
4ea008b
cb3434e
87422ba
98d3122
9cf993e
f6d167c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| """ | ||
| TODO: fill in | ||
| """ | ||
|
|
||
| package_group( | ||
| name = "api_visibility", | ||
| packages = [ | ||
| "//", | ||
| ], | ||
| ) | ||
|
|
||
| package_group( | ||
| name = "proto_impl_visibility", | ||
| packages = [ | ||
| "//proto/...", | ||
| ], | ||
| ) | ||
|
|
||
| java_library( | ||
| name = "android_java_protos", | ||
| visibility = ["//visibility:public"], | ||
| exports = [ | ||
| "//proto/v1/api:android_java_proto", | ||
| "//proto/v1/structure:structure_java_proto", | ||
| ], | ||
| ) | ||
|
|
||
|
|
||
| java_library( | ||
| name = "android_java_lite_protos", | ||
| visibility = ["//visibility:public"], | ||
| exports = [ | ||
| "//proto/v1/api:android_java_proto_lite", | ||
| "//proto/v1/structure:structure_java_proto_lite", | ||
| ], | ||
| ) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| """ | ||
| TODO: fill in | ||
| """ | ||
|
|
||
| load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") | ||
|
|
||
| # Set up Python (as a prerequisite dependency for Protobuf). | ||
|
|
||
| PYTHON_SHA256_HASH = "934c9ceb552e84577b0faf1e5a2f0450314985b4d8712b2b70717dc679fdc01b" | ||
| PYTHON_VERSION = "0.3.0" | ||
|
|
||
| http_archive( | ||
| name = "rules_python", | ||
| url = "https://github.com/bazelbuild/rules_python/releases/download/{0}/rules_python-{0}.tar.gz".format(PYTHON_VERSION), | ||
| sha256 = PYTHON_SHA256_HASH, | ||
| ) | ||
|
|
||
| # Set up proto & its toolchain. | ||
|
|
||
| PROTOBUF_SHA256_HASH = "c6003e1d2e7fefa78a3039f19f383b4f3a61e81be8c19356f85b6461998ad3db" | ||
| PROTOBUF_VERSION = "3.17.3" | ||
|
|
||
| http_archive( | ||
| name = "com_google_protobuf", | ||
| sha256 = PROTOBUF_SHA256_HASH, | ||
| strip_prefix = "protobuf-%s" % PROTOBUF_VERSION, | ||
| urls = ["https://github.com/protocolbuffers/protobuf/archive/v%s.tar.gz" % PROTOBUF_VERSION] | ||
| ) | ||
|
|
||
| # Set up rules_proto to allow defining proto libraries. | ||
|
|
||
| # Note that rules_proto doesn't have any shipped versions, so the workspace needs to pin to a | ||
| # specific commit hash. | ||
| RULES_PROTO_VERSION = "97d8af4dc474595af3900dd85cb3a29ad28cc313" | ||
| RULES_PROTO_SHA256_HASH = "602e7161d9195e50246177e7c55b2f39950a9cf7366f74ed5f22fd45750cd208" | ||
|
|
||
| http_archive( | ||
| name = "rules_proto", | ||
| sha256 = RULES_PROTO_SHA256_HASH, | ||
| strip_prefix = "rules_proto-%s" % RULES_PROTO_VERSION, | ||
| urls = ["https://github.com/bazelbuild/rules_proto/archive/%s.tar.gz" % RULES_PROTO_VERSION], | ||
| ) | ||
|
|
||
| load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains") | ||
| rules_proto_dependencies() | ||
| rules_proto_toolchains() | ||
|
|
||
| # Set up rules_java to enable the Java proto & Java proto lite rules. | ||
| RULES_JAVA_VERSION = "0.1.1" | ||
| RULES_JAVA_SHA256_HASH = "220b87d8cfabd22d1c6d8e3cdb4249abd4c93dcc152e0667db061fb1b957ee68" | ||
|
|
||
| http_archive( | ||
| name = "rules_java", | ||
| sha256 = RULES_JAVA_SHA256_HASH, | ||
| url = "https://github.com/bazelbuild/rules_java/releases/download/{0}/rules_java-{0}.tar.gz".format(RULES_JAVA_VERSION), | ||
| ) | ||
|
|
||
| load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains") | ||
| rules_java_dependencies() | ||
| rules_java_toolchains() |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| """ | ||
|
||
| TODO: fill in | ||
| """ | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| """ | ||
| TODO: fill in | ||
| """ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| """ | ||
| TODO: fill in | ||
| """ | ||
|
|
||
| load("@rules_java//java:defs.bzl", "java_lite_proto_library", "java_proto_library") | ||
| load("@rules_proto//proto:defs.bzl", "proto_library") | ||
|
|
||
| proto_library( | ||
| name = "android_proto", | ||
| srcs = ["android.proto"], | ||
| deps = [ | ||
| "//proto/v1/structure:structure_proto" | ||
| ], | ||
| ) | ||
|
|
||
| java_proto_library( | ||
| name = "android_java_proto", | ||
| visibility = ["//:api_visibility"], | ||
| deps = [":android_proto"], | ||
| ) | ||
|
|
||
| java_lite_proto_library( | ||
| name = "android_java_proto_lite", | ||
| visibility = ["//:api_visibility"], | ||
| deps = [":android_proto"], | ||
| ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,113 @@ | ||
| syntax = "proto3"; | ||
|
|
||
| package org.oppia.proto.v1.api; | ||
|
|
||
| import "proto/v1/structure/concept_card.proto"; | ||
| import "proto/v1/structure/exploration.proto"; | ||
| import "proto/v1/structure/question.proto"; | ||
| import "proto/v1/structure/revision_card.proto"; | ||
| import "proto/v1/structure/topic_summary.proto"; | ||
| import "proto/v1/structure/versions.proto"; | ||
|
|
||
| option java_package = "org.oppia.v1.api"; | ||
| option java_multiple_files = true; | ||
anandwana001 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| message TopicListRequest { | ||
|
||
| TopicListRequestResponseStructureVersion structure_version = 1; | ||
|
||
|
|
||
| ClientContext client_context = 2; | ||
| ClientCompatibilityContext compatibility_context = 3; | ||
| ClientDownloadStateContext download_context = 4; | ||
|
||
| } | ||
|
|
||
| message TopicListResponse { | ||
| TopicListRequestResponseStructureVersion structure_version = 1; | ||
|
|
||
| // All topic summaries that are newer & compatible with the client. | ||
|
||
| repeated org.oppia.proto.v1.structure.TopicSummary topic_summaries = 2; | ||
| } | ||
|
|
||
| message TopicContentRequest { | ||
|
||
| TopicContentRequestResponseStructureVersion structure_version = 1; | ||
|
|
||
| ClientContext client_context = 2; | ||
| repeated DownloadRequestStructureIdentifier identifiers = 3; | ||
| int32 requested_max_payload_size = 4; | ||
| } | ||
|
|
||
| message TopicContentResponse { | ||
| TopicContentRequestResponseStructureVersion structure_version = 1; | ||
|
|
||
| repeated StructureDownloadResult download_results = 2; | ||
|
|
||
| // Structure corresponds to TopicContentRequestResponseStructureVersion. | ||
seanlip marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| message StructureDownloadResult { | ||
| DownloadRequestStructureIdentifier identifier = 1; | ||
|
|
||
| oneof structure_type { | ||
| bool skipped_suggest_retry = 2; | ||
seanlip marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| org.oppia.proto.v1.structure.RevisionCard revision_card = 3; | ||
| org.oppia.proto.v1.structure.ConceptCard concept_card = 4; | ||
| org.oppia.proto.v1.structure.Exploration exploration = 5; | ||
| QuestionIdList question_id_list = 6; | ||
| org.oppia.proto.v1.structure.Question question = 7; | ||
| } | ||
| } | ||
|
|
||
| // Structure corresponds to TopicContentRequestResponseStructureVersion. | ||
| message QuestionIdList { | ||
| repeated string question_ids = 1; | ||
| } | ||
| } | ||
|
|
||
| message ClientContext { | ||
|
||
| string version_name = 1; | ||
| int64 version_code = 2; | ||
| } | ||
|
|
||
| message ClientCompatibilityContext { | ||
| org.oppia.proto.v1.structure.TopicSummaryStructureVersion topic_summary_structure_version = 1; | ||
| org.oppia.proto.v1.structure.RevisionCardStructureVersion revision_card_structure_version = 3; | ||
seanlip marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| org.oppia.proto.v1.structure.ConceptCardStructureVersion concept_card_structure_version = 4; | ||
| org.oppia.proto.v1.structure.ExplorationStructureVersion exploration_structure_version = 5; | ||
| org.oppia.proto.v1.structure.QuestionStructureVersion question_structure_version = 6; | ||
| org.oppia.proto.v1.structure.StateStructureVersion state_structure_version = 7; | ||
| org.oppia.proto.v1.structure.LanguageStructuresVersion language_structures_version = 8; | ||
seanlip marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| org.oppia.proto.v1.structure.ImageStructureVersion thumbnail_structure_version = 9; | ||
| } | ||
|
|
||
| message ClientDownloadStateContext { | ||
|
||
| message DownloadState { | ||
|
||
| int32 content_version = 1; | ||
| oneof structure_type { | ||
| string topic_id = 2; // in summary | ||
seanlip marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| org.oppia.proto.v1.structure.SubtopicId revision_card_id = 3; // in summary | ||
| string concept_card_id = 4; | ||
| string story_id = 5; // in summary | ||
| string exploration_id = 6; // in summary | ||
| string question_id = 7; | ||
| string skill_id = 8; | ||
| } | ||
| } | ||
|
|
||
| repeated DownloadState current_downloads = 1; | ||
| } | ||
|
|
||
| // This structure's version corresponds to TopicContentRequestResponseStructureVersion. | ||
| message DownloadRequestStructureIdentifier { | ||
| oneof structure_type { | ||
| org.oppia.proto.v1.structure.SubtopicId revision_card_id = 1; | ||
|
||
| string concept_card_id = 2; | ||
|
||
| string exploration_id = 3; | ||
| string question_list_skill_id = 4; | ||
|
||
| string question_id = 5; | ||
| } | ||
| } | ||
|
|
||
| message TopicListRequestResponseStructureVersion { | ||
| int32 version = 1; | ||
| } | ||
|
|
||
| message TopicContentRequestResponseStructureVersion { | ||
| int32 version = 1; | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| """ | ||
| TODO: fill in | ||
| """ | ||
|
|
||
| load("@rules_java//java:defs.bzl", "java_lite_proto_library", "java_proto_library") | ||
| load("@rules_proto//proto:defs.bzl", "proto_library") | ||
|
|
||
| proto_library( | ||
| name = "structure_proto", | ||
| srcs = [ | ||
| "concept_card.proto", | ||
| "exploration.proto", | ||
| "image.proto", | ||
| "languages.proto", | ||
| "objects.proto", | ||
| "question.proto", | ||
| "revision_card.proto", | ||
| "state.proto", | ||
| "topic_summary.proto", | ||
| "versions.proto", | ||
| ], | ||
| visibility = ["//:proto_impl_visibility"], | ||
| ) | ||
|
|
||
| java_proto_library( | ||
| name = "structure_java_proto", | ||
| visibility = ["//:api_visibility"], | ||
| deps = [":structure_proto"], | ||
| ) | ||
|
|
||
| java_lite_proto_library( | ||
| name = "structure_java_proto_lite", | ||
| visibility = ["//:api_visibility"], | ||
| deps = [":structure_proto"], | ||
| ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| syntax = "proto3"; | ||
|
|
||
| package org.oppia.proto.v1.structure; | ||
|
|
||
| import "proto/v1/structure/image.proto"; | ||
| import "proto/v1/structure/languages.proto"; | ||
| import "proto/v1/structure/versions.proto"; | ||
|
|
||
| option java_package = "org.oppia.v1.structure"; | ||
| option java_multiple_files = true; | ||
|
|
||
| message ConceptCard { | ||
| ConceptCardStructureVersion structure_version = 1; | ||
|
|
||
| string skill_id = 2; | ||
| string description = 3; | ||
| SubtitledHtml explanation = 4; | ||
| repeated WorkedExample worked_examples = 5; | ||
| RecordedVoiceovers recorded_voiceovers = 6; | ||
| WrittenTranslations written_translations = 7; | ||
| ReferencedImageList referenced_image_list = 8; | ||
|
||
|
|
||
| // Structure version corresponds to ConceptCardStructureVersion. | ||
| message WorkedExample { | ||
| SubtitledHtml question = 1; | ||
| SubtitledHtml explanation = 2; | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| syntax = "proto3"; | ||
|
|
||
| package org.oppia.proto.v1.structure; | ||
|
|
||
| import "proto/v1/structure/image.proto"; | ||
| import "proto/v1/structure/state.proto"; | ||
| import "proto/v1/structure/versions.proto"; | ||
|
|
||
| option java_package = "org.oppia.v1.structure"; | ||
| option java_multiple_files = true; | ||
|
|
||
| message Exploration { | ||
| ExplorationStructureVersion structure_version = 1; | ||
|
|
||
| string id = 2; | ||
| string title = 3; | ||
| string init_state_name = 4; | ||
| map<string, State> states = 5; | ||
| int32 content_version = 6; | ||
| ReferencedImageList referenced_image_list = 7; | ||
seanlip marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| syntax = "proto3"; | ||
|
|
||
| package org.oppia.proto.v1.structure; | ||
|
|
||
| import "proto/v1/structure/versions.proto"; | ||
|
|
||
| option java_package = "org.oppia.v1.structure"; | ||
| option java_multiple_files = true; | ||
|
|
||
| message Thumbnail { | ||
| ImageStructureVersion structure_version = 1; | ||
|
|
||
| string filename = 2; | ||
| int32 background_color_rgb = 3; | ||
| } | ||
|
|
||
| message ReferencedImageList { | ||
| ImageStructureVersion structure_version = 1; | ||
|
|
||
| repeated string referenced_image_filenames = 2; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@BenHenning flagging this and other similar TODOs for you to look at.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Addressed in the latest changes.