Documentation
¶
Index ¶
- Variables
- type Client
- func (c *Client) Do(req *http.Request, v interface{}) (*http.Response, error)
- func (c *Client) Download(submissionID string) (*Submission, error)
- func (c *Client) Fetch(args []string) ([]*Problem, error)
- func (c *Client) FetchAll(trackID string) ([]*Problem, error)
- func (c *Client) List(trackID string) ([]string, error)
- func (c *Client) NewRequest(method, url string, body io.Reader) (*http.Request, error)
- func (c *Client) Restore() ([]*Problem, error)
- func (c *Client) Skip(trackID, slug string) error
- func (c *Client) Status(trackID string) (*StatusInfo, error)
- func (c *Client) SubmissionURL(trackID, slug string) (*Submission, error)
- func (c *Client) Submissions() (map[string][]SubmissionInfo, error)
- func (c *Client) Submit(iter *Iteration) (*Submission, error)
- func (c *Client) Tracks() ([]*Track, error)
- type Iteration
- type PayloadError
- type PayloadProblems
- type PayloadSubmission
- type Problem
- type Recent
- type Slugs
- type StatusInfo
- type Submission
- type SubmissionInfo
- type Track
Constants ¶
This section is empty.
Variables ¶
var ( // ErrUnknownTrack represents an error returned when the track requested does not exist. ErrUnknownTrack = errors.New("no such track") )
var ( // UserAgent lets the API know where the call is being made from. // It's set from main() so that we have access to the version. UserAgent string )
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
APIHost string
XAPIHost string
APIKey string
// contains filtered or unexported fields
}
Client contains the necessary information to contact the Exercism APIs.
func (*Client) Do ¶
Do performs an http.Request and optionally parses the response body into the given interface.
func (*Client) Download ¶
func (c *Client) Download(submissionID string) (*Submission, error)
Download fetches a solution by submission key and writes it to disk.
func (*Client) Fetch ¶
Fetch retrieves problems from the API. Most problems consist of a README, some sort of test suite, and any supporting files (header files, test data, boilerplate, skeleton files, etc).
func (*Client) NewRequest ¶
NewRequest returns an http.Request with information for the Exercism API.
func (*Client) Status ¶
func (c *Client) Status(trackID string) (*StatusInfo, error)
Status sends a request to exercism to fetch the user's completion status for the given language track.
func (*Client) SubmissionURL ¶
func (c *Client) SubmissionURL(trackID, slug string) (*Submission, error)
SubmissionURL gets the url of the latest iteration on the given language track id and problem slug.
func (*Client) Submissions ¶
func (c *Client) Submissions() (map[string][]SubmissionInfo, error)
Submissions gets a list of submitted exercises and their current state.
type Iteration ¶
type Iteration struct {
Key string `json:"key"`
Code string `json:"code"`
Dir string `json:"dir"`
TrackID string `json:"language"`
Problem string `json:"problem"`
Solution map[string]string `json:"solution"`
Comment string `json:"comment,omitempty"`
}
Iteration represents a version of a particular exercise. This gets submitted to the API.
func NewIteration ¶
NewIteration prepares an iteration of a problem in a track for submission to the API. It takes a dir (from the global config) and a list of files which it will read from disk. Paths can point to regular files or to symlinks.
func (*Iteration) RelativePath ¶ added in v1.7.5
RelativePath returns the iteration's relative path.
type PayloadError ¶
type PayloadError struct {
Error string `json:"error"`
}
PayloadError represents an error message from the API.
type PayloadProblems ¶
type PayloadProblems struct {
Problems []*Problem
PayloadError
}
PayloadProblems represents a response containing problems.
type PayloadSubmission ¶
type PayloadSubmission struct {
*Submission
PayloadError
}
PayloadSubmission represents metadata about a successful submission.
type Problem ¶
type Problem struct {
ID string `json:"id"`
TrackID string `json:"track_id"`
Language string `json:"language"`
Slug string `json:"slug"`
Name string `json:"name"`
Files map[string]string `json:"files"`
Submitted bool
}
Problem represents a specific problem in a given language track.
type Recent ¶
Recent contains information about the user's most recently submitted exercise on a particular language track.
type Slugs ¶
type Slugs []string
Slugs is a collection of slugs, all of which are the names of exercises.
type StatusInfo ¶
type StatusInfo struct {
TrackID string `json:"track_id"`
Recent *Recent
FetchedProblems *Slugs `json:"fetched"`
SkippedProblems *Slugs `json:"skipped"`
}
StatusInfo contains information about a user's status on a particular language track.
func (*StatusInfo) String ¶
func (s *StatusInfo) String() string
type Submission ¶
type Submission struct {
URL string `json:"url"`
TrackID string `json:"track_id"`
Language string `json:"language"`
Slug string `json:"slug"`
Name string `json:"name"`
Username string `json:"username"`
WhatNextInstructions string `json:"what_next_instructions"`
ProblemFiles map[string]string `json:"problem_files"`
SolutionFiles map[string]string `json:"solution_files"`
Iteration int `json:"iteration"`
}
Submission is an iteration that has been submitted to the API.
type SubmissionInfo ¶
SubmissionInfo contains state information about a submission.
type Track ¶ added in v1.8.0
type Track struct {
ID string `json:"id"`
Language string `json:"language"`
Active bool `json:"active"`
Problems []string `json:"problems"`
}
Track is a collection of problems in a given language.