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. All paths are assumed to be absolute paths with symlinks resolved.
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"` 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.