Струтуризация и сделан пропуск вопросов
This commit is contained in:
125
cmd/mtparse/main.go
Normal file
125
cmd/mtparse/main.go
Normal file
@@ -0,0 +1,125 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
const (
|
||||
url string = "https://digital.mchs.gov.ru/testing/api/instance/"
|
||||
uidMchs string = "4e0d6bf6-50f2-4d67-8131-b99b3c4a3f39"
|
||||
)
|
||||
|
||||
type ResMchsTestType struct {
|
||||
Id uuid.UUID `json:"id"`
|
||||
CurrentQuestion CQType `json:"current_question"`
|
||||
CurrentAnswers []CAType `json:"current_answers"`
|
||||
QuestionCount int `json:"questions_count"`
|
||||
QuestionNumber int `json:"question_number"`
|
||||
QuestionStatus []int `json:"questions_statuses"`
|
||||
ValidAnswer uuid.UUID `json:"valid_answer"`
|
||||
QuestionPassed int `json:"questions_passed"`
|
||||
ValidAnswers string `json:"valid_answers"`
|
||||
}
|
||||
|
||||
type CQType struct {
|
||||
Id uuid.UUID `json:"id"`
|
||||
Content string `json:"content"`
|
||||
ResourcesPath []string `json:"resources_path"`
|
||||
Types string `json:"type"`
|
||||
IsAdd bool `json:"id_additional"`
|
||||
}
|
||||
|
||||
type CAType struct {
|
||||
Id uuid.UUID `json:"id"`
|
||||
Title string `json:"title"`
|
||||
ResourcesPath []string `json:"resources_path"`
|
||||
}
|
||||
|
||||
func ResMchsTestToJSON(data *ResMchsTestType) string {
|
||||
req, _ := json.Marshal(data)
|
||||
return string(req)
|
||||
}
|
||||
|
||||
func UnmarshalJSONToType(in []byte) *ResMchsTestType {
|
||||
var data ResMchsTestType
|
||||
_ = json.Unmarshal(in, &data)
|
||||
return &data
|
||||
}
|
||||
|
||||
type ReqAnswer struct {
|
||||
Answer uuid.UUID `json:"answer"`
|
||||
}
|
||||
|
||||
type ReqNull struct {
|
||||
Answers string `json:"answers"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
var rN ReqNull
|
||||
var rA ReqAnswer
|
||||
body, _ := ReqestToSiteJSON(rN)
|
||||
fmt.Println("[")
|
||||
for i := 0; i < 520; i++ {
|
||||
d := UnmarshalJSONToType(body)
|
||||
fmt.Print(ResMchsTestToJSON(d), ",\n")
|
||||
rA.Answer = d.ValidAnswer
|
||||
body, _ = ReqestToSiteJSON(rA)
|
||||
}
|
||||
d := UnmarshalJSONToType(body)
|
||||
fmt.Println(ResMchsTestToJSON(d))
|
||||
fmt.Println("]")
|
||||
}
|
||||
|
||||
func ReqestToSiteJSON(req any) ([]byte, error) {
|
||||
|
||||
reqBodyBytes, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
urlr := url + uidMchs
|
||||
resp, err := http.Post(
|
||||
urlr,
|
||||
"application/json", bytes.NewBuffer(reqBodyBytes))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return body, nil
|
||||
}
|
||||
|
||||
func ReqestToSite(req any) (*ResMchsTestType, error) {
|
||||
|
||||
reqBodyBytes, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
urlr := url + uidMchs
|
||||
resp, err := http.Post(
|
||||
urlr,
|
||||
"application/json", bytes.NewBuffer(reqBodyBytes))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return UnmarshalJSONToType(body), nil
|
||||
}
|
||||
Reference in New Issue
Block a user