11package main
22
33import (
4- "encoding/json"
54 "fmt"
6- "io/ioutil"
7- "net/http"
5+ "log"
86 "os"
97 "runtime"
108
119 "github.com/codegangsta/cli"
1210 "github.com/exercism/cli/api"
13- "github.com/exercism/cli/config"
1411 "github.com/exercism/cli/handlers"
1512)
1613
@@ -21,8 +18,6 @@ const (
2118 // lot of things get out of hand.
2219 Version = "1.7.0"
2320
24- msgPleaseAuthenticate = "You must be authenticated. Run `exercism configure --key=YOUR_API_KEY`."
25-
2621 descDebug = "Outputs useful debug information."
2722 descConfigure = "Writes config values to a JSON file."
2823 descDemo = "Fetches a demo problem for each language track on exercism.io."
@@ -115,72 +110,11 @@ func main() {
115110 Name : "unsubmit" ,
116111 ShortName : "u" ,
117112 Usage : descUnsubmit ,
118- Action : func (ctx * cli.Context ) {
119- c , err := config .Read (ctx .GlobalString ("config" ))
120- if err != nil {
121- fmt .Println (err )
122- return
123- }
124-
125- if ! c .IsAuthenticated () {
126- fmt .Println (msgPleaseAuthenticate )
127- return
128- }
129-
130- err = UnsubmitAssignment (c )
131- if err != nil {
132- fmt .Println (err )
133- return
134- }
135- fmt .Println ("The last submission was successfully deleted." )
136- },
113+ Action : handlers .Unsubmit ,
137114 },
138115 }
139116 err := app .Run (os .Args )
140117 if err != nil {
141- fmt .Errorf ("%v" , err )
142- os .Exit (1 )
143- }
144- }
145-
146- func UnsubmitAssignment (c * config.Config ) error {
147- path := "api/v1/user/assignments"
148-
149- url := fmt .Sprintf ("%s/%s?key=%s" , c .API , path , c .APIKey )
150-
151- req , err := http .NewRequest ("DELETE" , url , nil )
152- if err != nil {
153- return err
118+ log .Fatal (err )
154119 }
155-
156- req .Header .Set ("User-Agent" , api .UserAgent )
157-
158- resp , err := http .DefaultClient .Do (req )
159- if err != nil {
160- err = fmt .Errorf ("Error destroying submission: [%v]" , err )
161- return err
162- }
163-
164- body , err := ioutil .ReadAll (resp .Body )
165- resp .Body .Close ()
166- if err != nil {
167- return err
168- }
169-
170- if resp .StatusCode != http .StatusNoContent {
171-
172- var ur struct {
173- Error string
174- }
175-
176- err = json .Unmarshal (body , & ur )
177- if err != nil {
178- return err
179- }
180-
181- err = fmt .Errorf ("Status: %d, Error: %v" , resp .StatusCode , ur .Error )
182- return err
183- }
184-
185- return nil
186120}
0 commit comments