Shared Chat•
Default (GPT-3.5)Swagger API dokumentáció készítése
October 8, 2023
Írd meg az editor.swagger.io kompatibilis Swagger YAML leírást kódról:
import logging
import openai
import uuid
import json
import requests
import azure.functions as func
from azure.cosmos import CosmosClient
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
client = CosmosClient("https://antarax-cosmosdb.documents.azure.com:443/", "")
database = client.get_database_client("Social AI")
container = database.get_container_client("Users")
if req.method == "GET":
email = req.params.get('email')
# Lekérdezés az email alapján
query = f"SELECT * FROM c WHERE c.email = '{email}'"
items = list(container.query_items(query, partition_key=email))
json_response = json.dumps(items)
# Ha találtunk eredményt, visszaadjuk a dokumentumokat
if items:
return func.HttpResponse(json_response, status_code=200, mimetype="application/json")
else:
new_item = {
"id": str(uuid.uuid4()),
"email": email,
}
container.create_item(body=new_item)
query = f"SELECT * FROM c WHERE c.email = '{email}'"
items = list(container.query_items(query, partition_key=email))
json_response = json.dumps(items)
return func.HttpResponse(json_response, status_code=200, mimetype="application/json")
elif req.method == "PATCH":
data = req.get_json()
email = data.get('email')
billing_name = data.get('billing_name')
billing_postalcode = data.get('billing_postalcode')
billing_town = data.get('billing_town')
billing_taxnumber = data.get('billing_taxnumber')
billing_address = data.get('billing_address')
accessToken = data.get('accessToken')
pages = []
if accessToken:
exchange_token_url = "https://graph.facebook.com/v14.0/oauth/access_token"
params = {
"grant_type": "fb_exchange_token",
"client_id": "756784879514620",
"client_secret": "",
"fb_exchange_token": accessToken
}
response = requests.get(exchange_token_url, params=params)
response_json = response.json()
longLivedAccessToken = response_json.get("access_token")
accessToken =longLivedAccessToken
#A longLivedAccessToken felfunhasználásával lekérdezzük a Facebook oldalakat
getPageAccessTokens = f"https://graph.facebook.com/me/accounts?access_token={longLivedAccessToken}"
response = requests.get(getPageAccessTokens)
response_json = response.json()
pages = response_json.get("data")
# Lekérdezett oldalak adatainak tárolása
queried_pages = {}
# Összefűzés az id alapján
for page in pages:
page_id = page.get("id")
queried_pages[page_id] = page
page_info_url = f"https://graph.facebook.com/{page_id}?fields=about,attire,bio,location,parking,hours,emails,website&access_token={longLivedAccessToken}"
response = requests.get(page_info_url)
page_info = response.json()
page_info["id"] = page_id
# Azonosító alapján összefűzés
if page_id in queried_pages:
queried_pages[page_id].update(page_info)
else:
queried_pages[page_id] = page_info
# Az összefűzött oldalak listába rendezése
pages_data = list(queried_pages.values())
# Lekérdezés az email alapján
query = f"SELECT * FROM c WHERE c.email = '{email}'"
items = list(container.query_items(query, partition_key=email))
if items:
item = items[0]
if billing_name:
item["billing_name"] = billing_name
if billing_postalcode:
item["billing_postalcode"] = billing_postalcode
if billing_town:
item["billing_town"] = billing_town
if billing_taxnumber:
item["billing_taxnumber"] = billing_taxnumber
if billing_address:
item["billing_address"] = billing_address
if accessToken:
item["pages"] = pages
container.upsert_item(item) # Az elem frissítése
return func.HttpResponse("Item updated successfully", status_code=200)
else:
return func.HttpResponse("No data found", status_code=404)
else:
return func.HttpResponse("Method not allowed", status_code=405)
Az alábbi Swagger YAML leírás a megadott kódból készült, és a editor.swagger.io-ban használható:
yamlopenapi: 3.0.0
info:
title: Azure Function API
description: Azure Function API for managing user data
version: 1.0.0
servers:
- url: https://your-api-url-here.com
paths:
/api/user:
get:
summary: Get user data by email
parameters:
- name: email
in: query
required: true
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
'404':
description: User not found
patch:
summary: Update user data
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserUpdate'
responses:
'200':
description: User data updated successfully
'404':
description: User not found
'405':
description: Method not allowed
components:
schemas:
User:
type: object
properties:
id:
type: string
email:
type: string
# Add other properties here
UserUpdate:
type: object
properties:
email:
type: string
billing_name:
type: string
billing_postalcode:
type: string
billing_town:
type: string
billing_taxnumber:
type: string
billing_address:
type: string
accessToken:
type: string
Ezt a Swagger YAML leírást használhatod az API dokumentáció létrehozásához és a fejlesztők számára a funkcionalitás megértéséhez. Ne felejtsd el a servers részt a tényleges API URL-rel helyettesíteni. A properties alatt felsorolhatod az összes lehetséges felhasználói tulajdonságot, amelyeket az API kezel.