file.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
  2. package opencode
  3. import (
  4. "context"
  5. "net/http"
  6. "net/url"
  7. "github.com/sst/opencode-sdk-go/internal/apijson"
  8. "github.com/sst/opencode-sdk-go/internal/apiquery"
  9. "github.com/sst/opencode-sdk-go/internal/param"
  10. "github.com/sst/opencode-sdk-go/internal/requestconfig"
  11. "github.com/sst/opencode-sdk-go/option"
  12. )
  13. // FileService contains methods and other services that help with interacting with
  14. // the opencode API.
  15. //
  16. // Note, unlike clients, this service does not read variables from the environment
  17. // automatically. You should not instantiate this service directly, and instead use
  18. // the [NewFileService] method instead.
  19. type FileService struct {
  20. Options []option.RequestOption
  21. }
  22. // NewFileService generates a new service that applies the given options to each
  23. // request. These options are applied after the parent client's options (if there
  24. // is one), and before any request-specific options.
  25. func NewFileService(opts ...option.RequestOption) (r *FileService) {
  26. r = &FileService{}
  27. r.Options = opts
  28. return
  29. }
  30. // Read a file
  31. func (r *FileService) Read(ctx context.Context, query FileReadParams, opts ...option.RequestOption) (res *FileReadResponse, err error) {
  32. opts = append(r.Options[:], opts...)
  33. path := "file"
  34. err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
  35. return
  36. }
  37. // Get file status
  38. func (r *FileService) Status(ctx context.Context, opts ...option.RequestOption) (res *[]FileStatusResponse, err error) {
  39. opts = append(r.Options[:], opts...)
  40. path := "file/status"
  41. err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
  42. return
  43. }
  44. type FileReadResponse struct {
  45. Content string `json:"content,required"`
  46. Type FileReadResponseType `json:"type,required"`
  47. JSON fileReadResponseJSON `json:"-"`
  48. }
  49. // fileReadResponseJSON contains the JSON metadata for the struct
  50. // [FileReadResponse]
  51. type fileReadResponseJSON struct {
  52. Content apijson.Field
  53. Type apijson.Field
  54. raw string
  55. ExtraFields map[string]apijson.Field
  56. }
  57. func (r *FileReadResponse) UnmarshalJSON(data []byte) (err error) {
  58. return apijson.UnmarshalRoot(data, r)
  59. }
  60. func (r fileReadResponseJSON) RawJSON() string {
  61. return r.raw
  62. }
  63. type FileReadResponseType string
  64. const (
  65. FileReadResponseTypeRaw FileReadResponseType = "raw"
  66. FileReadResponseTypePatch FileReadResponseType = "patch"
  67. )
  68. func (r FileReadResponseType) IsKnown() bool {
  69. switch r {
  70. case FileReadResponseTypeRaw, FileReadResponseTypePatch:
  71. return true
  72. }
  73. return false
  74. }
  75. type FileStatusResponse struct {
  76. Added int64 `json:"added,required"`
  77. File string `json:"file,required"`
  78. Removed int64 `json:"removed,required"`
  79. Status FileStatusResponseStatus `json:"status,required"`
  80. JSON fileStatusResponseJSON `json:"-"`
  81. }
  82. // fileStatusResponseJSON contains the JSON metadata for the struct
  83. // [FileStatusResponse]
  84. type fileStatusResponseJSON struct {
  85. Added apijson.Field
  86. File apijson.Field
  87. Removed apijson.Field
  88. Status apijson.Field
  89. raw string
  90. ExtraFields map[string]apijson.Field
  91. }
  92. func (r *FileStatusResponse) UnmarshalJSON(data []byte) (err error) {
  93. return apijson.UnmarshalRoot(data, r)
  94. }
  95. func (r fileStatusResponseJSON) RawJSON() string {
  96. return r.raw
  97. }
  98. type FileStatusResponseStatus string
  99. const (
  100. FileStatusResponseStatusAdded FileStatusResponseStatus = "added"
  101. FileStatusResponseStatusDeleted FileStatusResponseStatus = "deleted"
  102. FileStatusResponseStatusModified FileStatusResponseStatus = "modified"
  103. )
  104. func (r FileStatusResponseStatus) IsKnown() bool {
  105. switch r {
  106. case FileStatusResponseStatusAdded, FileStatusResponseStatusDeleted, FileStatusResponseStatusModified:
  107. return true
  108. }
  109. return false
  110. }
  111. type FileReadParams struct {
  112. Path param.Field[string] `query:"path,required"`
  113. }
  114. // URLQuery serializes [FileReadParams]'s query parameters as `url.Values`.
  115. func (r FileReadParams) URLQuery() (v url.Values) {
  116. return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
  117. ArrayFormat: apiquery.ArrayQueryFormatComma,
  118. NestedFormat: apiquery.NestedQueryFormatBrackets,
  119. })
  120. }