Groovy with oauth2

1

We are developing a call to an SMS Sent Web Service that uses oauth2 authentication. This development is being done in groovy. We seek in various forums how to make the call, passing the parameters and how to receive the response from the web service. We are doubtful if we are developing the right way, since we do not have clear information on the steps of the code. Attached is what the service can answer, below the result of a call via Linux.

 $ curl URL_PARA_PEGAR_O_TOKEN -d 
"grant_type=client_credentials&client_id=USUARIO&client_secret=SENHA"
Retorno: 
{"token_type":"bearer","access_token":"TOKEN_RETORNADO","expires_in":7200}

 $ curl URL_DO_SERVICO \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer TOKEN_RETORNADO" \
   -X POST \
  -d 'JSON A SER ENVIADO'        

Could you help us structure the code, criticizing possible errors or suggesting some insertion of some missing point?

    @Grapes([
    @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.6-SNAPSHOT' )
    ])
    import groovyx.net.http.RESTClient
    import groovyx.net.http.HTTPBuilder
    import static groovyx.net.http.ContentType.URLENC
    import static groovyx.net.http.ContentType.JSON
    import static groovyx.net.http.Method.POST



    //def client = new RESTClient ( 'http://localhost:8080' )
    //def site = new HTTPBuilder( 'http://localhost:8080' )
    //site.auth.basic 'my-client-with-secret-2', 'secret-2'
    //site.auth.basic 'dmac', 'foo'
    //site.auth.basic 'MC101', 'MC101'


    def credentials = [
      client_id:"<client-id>", 
      client_secret:"<client-secret>",
      site:"https://ms.foo.com.br
    ]


    def accessToken
    site.post(path: '/oauth2/token',
                body: [grant_type:'client_credentials',client_id='client_id',client_secret='client-secret'],
                requestContentType: URLENC ) { resp, reader ->

        accessToken = reader['access_token']

    }

    //println("Access Token: ${accessToken}")
    site.auth.basic "",""
    //accessToken = "8cab2bd9-d55b-4cb9-bf11-73545917bc57"
    site.get(path: '/ssp/api/1/person',
            contentType: JSON,
            query: ["limit": 1],
            headers: ['Authorization': "Bearer ${accessToken}"]) { resp, reader ->

        System.out << "Person response: " << reader
        println()

    }

YAML is below:

        swagger: '2.0'
        info:
          description: TST 
          version: 1.0.0
          title: APIs - TST
        host: ms.foo.com.br
        tags:
          - name: Send TST object
            description: 'TST'
        schemes:
          - https
        paths:
          '/tst/templates/V1/{id}/message':
            post:
              tags:
                - Sendo obj
              summary: Send obj 
              description: 'TST '
              consumes:
                - application/json
              produces:
                - application/json
              parameters:
                - name: id
                  in: path
                  description: "Object ID"
                  required: true
                  type: string
                - name: body
                  in: body
                  schema:
                    $ref: '#/definitions/TSTTemplateMessage'
              responses:
                '200':
                  description: OK
                  schema:
                    $ref: '#/definitions/TSTTemplateResponseMessage'
                '401':
                  description: NOK 1
                  schema:
                    $ref: '#/definitions/Unauthorized'
                '450':
                  description: NOK 2
                  schema:
                    $ref: '#/definitions/Error'
                '550':
                  description: NOK 3
                  schema:
                    $ref: '#/definitions/Error'
              security:
                - sms_templates_message: []
        securityDefinitions:
          sms_templates_message:
            type: oauth2
            tokenUrl: 'https://ms.foo.com.br/tst/templates/V1/id/message/oauth2/token'
            flow: application
            scopes: {}
        definitions:
          SMSTemplateMessage:
            type: object
            description: Entity that represents the object
            properties:
              id:
                type: string
                description: Object Identifier
                example: "212db47-711-7589-4a56-123"
              numberCell:
                type: string
                description: Attribute 1
                example: "551111111111"
              templateParameters:
                type: array
                description: Set of values
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    value:
                      type: string
                example:
                  - name: name
                    value: "John"
                  - name: date
                    value: "12/12/2012"
                  - name: plan
                    value: "tst plan"
                  - name: order
                    value: "1234"
              trackingId:
                type: string
                description: aaaaa
                example: "9012909"
            required:
              - numberCell
          SMSGeneralMessage:
            type: object
            description: aaaaa
            properties:
              from:
                type: string
                description: aaaaa
                example: "54321"
              to:
                type: string
                description: aaa
                example: "55434344111"
              textMessage:
                type: string
                description: aaaa
                example: "Jaaaa"
              requestDate:
                type: string
                description: "aaa"
                example: "20/04/2012 00:30:00"
            required:
              - from
              - to
              - textMessage
          SMSTemplateResponseMessage:
            type: object
            description: aaaa
            properties:
              templateMessage:
                $ref: '#/definitions/SMSTemplateMessage'
              sentMessage:
                $ref: '#/definitions/SMSGeneralMessage'
          Error:
            type: object
            properties:
              message:
                type: string
              detail:
                type: string
              providerDetail:
                $ref: '#/definitions/ProviderDetail'
          ProviderDetail:
            type: object
            properties:
              name:
                type: string
              code:
                type: string
              message:
                type: string
          Unauthorized:
            type: object
            properties:
              error_description:
                type: string
                example: The access token is invalid or has expired
              error:
                type: string
                example: invalid_token
        externalDocs:
          description: Find out more about Swagger
          url: 'http://swagger.io'

Felipe

    
asked by anonymous 03.08.2018 / 18:21

0 answers