Metadata-Version: 2.1
Name: awsSchema
Version: 0.0.7
Summary: dataclasss for parsing aws objects eg api-gateway proxy integration proy
Home-page: https://github.com/thanakijwanavit/awsSchema/tree/master/
Author: nic wanavit
Author-email: nwanavit@hatari.cc
License: Apache Software License 2.0
Keywords: aws schema dataclass
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: dataclasses-json
Requires-Dist: ujson

# AWS_SCHEMA
> dataclass for aws dictionaries


This library aims to parse aws dictionaries and json strings into dataclass objects

## Install

`pip install awsSchema`

## How to use

extract data from aws classes eg apigateway lambda input/output
this library uses jsondataclass, and dataclass

```
from awsSchema.apigateway import Response, Event
```

## parsing event

```
dummyEvent =  { "resource": "/{proxy+}", "path": "/hello/world", "httpMethod": "POST", "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "cache-control": "no-cache", "CloudFront-Forwarded-Proto": "https", "CloudFront-Is-Desktop-Viewer": "true", "CloudFront-Is-Mobile-Viewer": "False", "CloudFront-Is-SmartTV-Viewer": "False", "CloudFront-Is-Tablet-Viewer": "False", "CloudFront-Viewer-Country": "US", "Content-Type": "application/json", "headerName": "headerValue", "Host": "gy415nuibc.execute-api.us-east-1.amazonaws.com", "Postman-Token": "9f583ef0-ed83-4a38-aef3-eb9ce3f7a57f", "User-Agent": "PostmanRuntime/2.4.5", "Via": "1.1 d98420743a69852491bbdea73f7680bd.cloudfront.net (CloudFront)", "X-Amz-Cf-Id": "pn-PWIJc6thYnZm5P0NMgOUglL1DYtl0gdeJky8tqsg8iS_sgsKD1A==", "X-Forwarded-For": "54.240.196.186, 54.182.214.83", "X-Forwarded-Port": "443", "X-Forwarded-Proto": "https" }, "multiValueHeaders":{ 'Accept':[ "*/*" ], 'Accept-Encoding':[ "gzip, deflate" ], 'cache-control':[ "no-cache" ], 'CloudFront-Forwarded-Proto':[ "https" ], 'CloudFront-Is-Desktop-Viewer':[ "true" ], 'CloudFront-Is-Mobile-Viewer':[ "False" ], 'CloudFront-Is-SmartTV-Viewer':[ "False" ], 'CloudFront-Is-Tablet-Viewer':[ "False" ], 'CloudFront-Viewer-Country':[ "US" ], '':[ "" ], 'Content-Type':[ "application/json" ], 'headerName':[ "headerValue" ], 'Host':[ "gy415nuibc.execute-api.us-east-1.amazonaws.com" ], 'Postman-Token':[ "9f583ef0-ed83-4a38-aef3-eb9ce3f7a57f" ], 'User-Agent':[ "PostmanRuntime/2.4.5" ], 'Via':[ "1.1 d98420743a69852491bbdea73f7680bd.cloudfront.net (CloudFront)" ], 'X-Amz-Cf-Id':[ "pn-PWIJc6thYnZm5P0NMgOUglL1DYtl0gdeJky8tqsg8iS_sgsKD1A==" ], 'X-Forwarded-For':[ "54.240.196.186, 54.182.214.83" ], 'X-Forwarded-Port':[ "443" ], 'X-Forwarded-Proto':[ "https" ] }, "queryStringParameters": { "name": "me", "multivalueName": "me" }, "multiValueQueryStringParameters":{ "name":[ "me" ], "multivalueName":[ "you", "me" ] }, "pathParameters": { "proxy": "hello/world" }, "stageVariables": { "stageVariableName": "stageVariableValue" }, "requestContext": { "accountId": "12345678912", "resourceId": "roq9wj", "stage": "testStage", "requestId": "deef4878-7910-11e6-8f14-25afc3e9ae33", "identity": { "cognitoIdentityPoolId": None, "accountId": None, "cognitoIdentityId": None, "caller": None, "apiKey": None, "sourceIp": "192.168.196.186", "cognitoAuthenticationType": None, "cognitoAuthenticationProvider": None, "userArn": None, "userAgent": "PostmanRuntime/2.4.5", "user": None }, "resourcePath": "/{proxy+}", "httpMethod": "POST", "apiId": "gy415nuibc" }, "body": "{\r\n\t\"a\": 1\r\n}", "isBase64Encoded": False }
event = Event.from_dict(dummyEvent)
event
```




    {'body': {'a': 1},
     'headers': {'Accept': '*/*',
                 'Accept-Encoding': 'gzip, deflate',
                 'CloudFront-Forwarded-Proto': 'https',
                 'CloudFront-Is-Desktop-Viewer': 'true',
                 'CloudFront-Is-Mobile-Viewer': 'False',
                 'CloudFront-Is-SmartTV-Viewer': 'False',
                 'CloudFront-Is-Tablet-Viewer': 'False',
                 'CloudFront-Viewer-Country': 'US',
                 'Content-Type': 'application/json',
                 'Host': 'gy415nuibc.execute-api.us-east-1.amazonaws.com',
                 'Postman-Token': '9f583ef0-ed83-4a38-aef3-eb9ce3f7a57f',
                 'User-Agent': 'PostmanRuntime/2.4.5',
                 'Via': '1.1 d98420743a69852491bbdea73f7680bd.cloudfront.net '
                        '(CloudFront)',
                 'X-Amz-Cf-Id': 'pn-PWIJc6thYnZm5P0NMgOUglL1DYtl0gdeJky8tqsg8iS_sgsKD1A==',
                 'X-Forwarded-For': '54.240.196.186, 54.182.214.83',
                 'X-Forwarded-Port': '443',
                 'X-Forwarded-Proto': 'https',
                 'cache-control': 'no-cache',
                 'headerName': 'headerValue'}}



```
event.getBody()
```




    {'a': 1}



## creating response dict

```
Response.getReturn(body={'hello':'world'})
```




    {'body': '{"hello":"world"}', 'statusCode': 200, 'headers': {}}



## Use in lambda function

```
def lambda_handler(event, *args):
  # parsing event body
  e = Event.from_dict(event)
  body = e.getBody()


  # submitting output
  return Response.getReturn(
    body = body, statusCode= 200, headers = {'hello':'hello'}
  )

lambda_handler(dummyEvent)
```




    {'body': '{"a":1}', 'statusCode': 200, 'headers': {'hello': 'hello'}}




