Dart Services API: how to access the /fixes through the API service?

Issue

I am looking at:

https://github.com/dart-lang/dart-services

And am trying to adapt the example given (https://dartpad.dartlang.org/2a7fd9328e0a567ee79b) to pull back information from ‘/api/dartservices/v1/fixes’ rather than ‘/api/dartservices/v1/analyze’.

Apologies, if I am missing something obvious here but changing the path in the example to:

https://dart-services.appspot.com/api/dartservices/v1/fixes“;

returns an error. Does anyone know how I can get the information from ‘/api/dartservices/v1/fixes rather than ‘/api/dartservices/v1/analyze’? Or does anyone have an example of this working?

Thanks.

Solution

Sending a POST request to https://dart-services.appspot.com/api/dartservices/v1/fixes with the data the DartPad example sends yields the error message “Missing parameter: ‘offset'”.

Looking at the discovery doc for the service https://dart-services.appspot.com/api/discovery/v1/apis/dartservices/v1/rest I see both analyze and fixes operations take a SourceRequest:

"SourceRequest": {
   "id": "SourceRequest",
   "type": "object",
   "properties": {
    "source": {
     "type": "string",
     "description": "The Dart source.",
     "required": true
    },
    "offset": {
     "type": "integer",
     "description": "An optional offset into the source code.",
     "format": "int32"
    },
    "strongMode": {
     "type": "boolean",
     "description": "An optional signal whether the source should be processed in strong mode"
    }
   }

offset is not marked as required so maybe there is a bug in the implementation of fixes wrt that parameter.

To make the DartPad example work, change:

Map m = {'source': textArea.value};

to

Map m = {'source': textArea.value, 'offset': 0};

Answered By – Argenti Apparatus

Answer Checked By – Candace Johnson (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published.