Skip to content

Commit

Permalink
[MC-754][MC-838][MC-839][MC-840] PDF Reader plugin - Fix Extract Text…
Browse files Browse the repository at this point in the history
… action (#1038)

* [MC-754] Fix Extract Text action

* [MC-754] Update plugin spec

* [MC-754][MC-838][MC-839][MC-840] Update Dockerfile and Extract Text action

* [MC-754] Update Extract Text action

* [MC-754][MC-838][MC-839][MC-840] Update error messaging in Extract Text action

* Update plugins/pdf_reader/help.md

Co-authored-by: Max Berezin <[email protected]>
Co-authored-by: Mike Rinehart <[email protected]>
  • Loading branch information
3 people authored Dec 14, 2021
1 parent 4af4d59 commit 3bfddc6
Show file tree
Hide file tree
Showing 13 changed files with 149 additions and 78 deletions.
10 changes: 5 additions & 5 deletions plugins/pdf_reader/.CHECKSUM
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"spec": "032f61826d1ac192a09f96cd5edb3dda",
"manifest": "f0248c3c049406b59ed105c138c74f0a",
"setup": "3cafeb8492493912376dca6c2e3a18d8",
"spec": "a081c10928cf560b109b01f0c6e3e201",
"manifest": "afe7a3a3d929385fa0013ee9b605714b",
"setup": "b3ddc65f7ceb6a228693f9c434f82102",
"schemas": [
{
"identifier": "extract_text/schema.py",
"hash": "5643b10a9793d0fd402d7d5514937986"
"hash": "51cc611ba8d27bf904f9251f8512db10"
},
{
"identifier": "connection/schema.py",
"hash": "cb60c2b5b62fafb9634d667a8ad96277"
"hash": "da5382221ca2a33a2f854e17b068d502"
}
]
}
10 changes: 3 additions & 7 deletions plugins/pdf_reader/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
FROM komand/python-pypy3-plugin:2
# The three supported python parent images are:
# - komand/python-2-plugin
# - komand/python-3-plugin
# - komand/python-pypy3-plugin
#
# Update the tag to a full semver version
FROM rapid7/insightconnect-python-3-38-plugin:4

# Add any custom package dependencies here
# NOTE: Add pip packages to requirements.txt
Expand All @@ -22,4 +16,6 @@ RUN if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
# Install plugin
RUN python setup.py build && python setup.py install

USER nobody

ENTRYPOINT ["/usr/local/bin/komand_pdf_reader"]
42 changes: 28 additions & 14 deletions plugins/pdf_reader/bin/komand_pdf_reader
Original file line number Diff line number Diff line change
@@ -1,30 +1,44 @@
#!/usr/bin/env python
# GENERATED BY KOMAND SDK - DO NOT EDIT
import komand
from komand_pdf_reader import connection, actions, triggers
import os
import json
from sys import argv

Name = "PDF Reader"
Vendor = "rapid7"
Version = "1.0.2"
Description = "Tools for extracting text from a PDF"

Name = 'PDF Reader'
Vendor = 'rapid7'
Version = '1.0.1'
Description = 'Tools for extracting text from a PDF'


class ICONPdfReader(komand.Plugin):
def __init__(self):
super(self.__class__, self).__init__(
def main():
if 'http' in argv:
if os.environ.get("GUNICORN_CONFIG_FILE"):
with open(os.environ.get("GUNICORN_CONFIG_FILE")) as gf:
gunicorn_cfg = json.load(gf)
if gunicorn_cfg.get("worker_class", "sync") == "gevent":
from gevent import monkey
monkey.patch_all()
elif 'gevent' in argv:
from gevent import monkey
monkey.patch_all()

import insightconnect_plugin_runtime
from komand_pdf_reader import connection, actions, triggers

class ICONPdfReader(insightconnect_plugin_runtime.Plugin):
def __init__(self):
super(self.__class__, self).__init__(
name=Name,
vendor=Vendor,
version=Version,
description=Description,
connection=connection.Connection()
)
self.add_action(actions.ExtractText())
)
self.add_action(actions.ExtractText())


def main():
"""Run plugin"""
cli = komand.CLI(ICONPdfReader())
cli = insightconnect_plugin_runtime.CLI(ICONPdfReader())
cli.run()


Expand Down
29 changes: 21 additions & 8 deletions plugins/pdf_reader/help.md

Large diffs are not rendered by default.

50 changes: 23 additions & 27 deletions plugins/pdf_reader/komand_pdf_reader/actions/extract_text/action.py
Original file line number Diff line number Diff line change
@@ -1,41 +1,37 @@
import komand
from .schema import ExtractTextInput, ExtractTextOutput
import insightconnect_plugin_runtime
from .schema import ExtractTextInput, ExtractTextOutput, Input, Output, Component

# Custom imports below
import PyPDF2
from insightconnect_plugin_runtime.exceptions import PluginException
import pdfplumber
from pdfminer.pdfparser import PDFSyntaxError
import base64
import io


class ExtractText(komand.Action):
class ExtractText(insightconnect_plugin_runtime.Action):
def __init__(self):
super(self.__class__, self).__init__(
name="extract_text",
description="Extract text from PDF file",
description=Component.DESCRIPTION,
input=ExtractTextInput(),
output=ExtractTextOutput(),
)

def run(self, params={}):
pdf_text = ""
try:
if params.get("contents"):
pdfFile = base64.b64decode(params.get("contents"))
else:
raise Exception("File contents missing!")
except Exception as e:
self.logger.error("File contents missing: ", e)
raise
try:
with open("temp.pdf", "wb") as temp_pdf:
temp_pdf.write(pdfFile)
pdfReader = PyPDF2.PdfFileReader(open("temp.pdf", "rb"))
pdftext = ""
for page in range(pdfReader.numPages):
pageObj = pdfReader.getPage(page)
pdftext += pageObj.extractText().replace("\n", "")
except Exception as e:
self.logger.info("An error occurred while extracting text: ", e)
raise
return {"output": pdftext}

def test(self):
return {"output": "successful"}
with io.BytesIO(base64.b64decode(params.get(Input.CONTENTS))) as f:
pdf_file = pdfplumber.open(f)
try:
pages = pdf_file.pages
for page in enumerate(pages):
pdf_text += page[1].extract_text().replace("\n", " ")
finally:
pdf_file.close()
except PDFSyntaxError:
raise PluginException(
cause="The provided content is not in PDF file format.",
assistance="Please check that the input is correct and try again.",
)
return {Output.OUTPUT: pdf_text}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# GENERATED BY KOMAND SDK - DO NOT EDIT
import komand
import insightconnect_plugin_runtime
import json


Expand All @@ -15,7 +15,7 @@ class Output:
OUTPUT = "output"


class ExtractTextInput(komand.Input):
class ExtractTextInput(insightconnect_plugin_runtime.Input):
schema = json.loads("""
{
"type": "object",
Expand All @@ -40,7 +40,7 @@ def __init__(self):
super(self.__class__, self).__init__(self.schema)


class ExtractTextOutput(komand.Output):
class ExtractTextOutput(insightconnect_plugin_runtime.Output):
schema = json.loads("""
{
"type": "object",
Expand Down
4 changes: 2 additions & 2 deletions plugins/pdf_reader/komand_pdf_reader/connection/connection.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import komand
import insightconnect_plugin_runtime
from .schema import ConnectionSchema

# Custom imports below


class Connection(komand.Connection):
class Connection(insightconnect_plugin_runtime.Connection):
def __init__(self):
super(self.__class__, self).__init__(input=ConnectionSchema())

Expand Down
4 changes: 2 additions & 2 deletions plugins/pdf_reader/komand_pdf_reader/connection/schema.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# GENERATED BY KOMAND SDK - DO NOT EDIT
import komand
import insightconnect_plugin_runtime
import json


class Input:
pass

class ConnectionSchema(komand.Input):
class ConnectionSchema(insightconnect_plugin_runtime.Input):
schema = json.loads("""
{}
""")
Expand Down
5 changes: 3 additions & 2 deletions plugins/pdf_reader/plugin.spec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ products: [insightconnect]
name: pdf_reader
title: PDF Reader
description: Tools for extracting text from a PDF
version: 1.0.1
version: 1.0.2
vendor: rapid7
support: community
status: []
Expand All @@ -17,7 +17,7 @@ tags:
- Extract
hub_tags:
use_cases: [data_utility]
keywords: [PDF, Reader, Extract]
keywords: [pdf, reader, extraction]
features: []
actions:
extract_text:
Expand All @@ -29,6 +29,7 @@ actions:
description: PDF file to extract text from
type: bytes
required: true
example: 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Zy9QYWdlcyA0IDAgUgovT3BlbkFjdGlvblsxIDAgUiAvWFlaIG51bGwgbnVsbCAwXQovTGFuZyhwbC1QTCkKPj4KZW5kb2JqCgoxMyAwIG9iago8PC9DcmVhdG9yPEZFRkYwMDU3MDA3MjAwNjkwMDc0MDA2NTAwNzI+Ci9Qcm9kdWNlcjxGRUZGMDA0QzAwNjkwMDYyMDA3MjAwNjUwMDRGMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDIwMDAzNjAwMkUwMDM0PgovQ3JlYXRpb25EYXRlKEQ6MjAyMTExMjgyMjQ5NDIrMDEnMDAnKT4+CmVuZG9iagoKeHJlZgowIDE0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwNjAwOSAwMDAwMCBuIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAxOTcgMDAwMDAgbiAKMDAwMDAwNjE3OCAwMDAwMCBuIAowMDAwMDAwMjE3IDAwMDAwIG4gCjAwMDAwMDUyMDMgMDAwMDAgbiAKMDAwMDAwNTIyNCAwMDAwMCBuIAowMDAwMDA1NDE5IDAwMDAwIG4gCjAwMDAwMDU3MzkgMDAwMDAgbiAKMDAwMDAwNTkyMiAwMDAwMCBuIAowMDAwMDA1OTU0IDAwMDAwIG4gCjAwMDAwMDYyNzcgMDAwMDAgbiAKMDAwMDAwNjM3NCAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMTQvUm9vdCAxMiAwIFIKL0luZm8gMTMgMCBSCi9JRCBbIDw2RDVGRjZBMERFNDcxNUEyRUZCOURGN0E3MjNFRUFFQT4KPDZENUZGNkEwREU0NzE1QTJFRkI5REY3QTcyM0VFQUVBPiBdCi9Eb2NDaGVja3N1bSAvNDkzMUY3MDAzRjc4RDhBMERENzk2RjlDMTE5RTlDOEQKPj4Kc3RhcnR4cmVmCjY1NDkKJSVFT0YK
output:
output:
title: PDF Text
Expand Down
3 changes: 2 additions & 1 deletion plugins/pdf_reader/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# List third-party dependencies here, separated by newlines.
# All dependencies must be version-pinned, eg. requests==1.2.0
# See: https://pip.pypa.io/en/stable/user_guide/#requirements-files
PyPDF2==1.26.0
pdfplumber==0.5.28
parameterized==0.8.1
14 changes: 7 additions & 7 deletions plugins/pdf_reader/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
from setuptools import setup, find_packages


setup(name='pdf_reader-rapid7-plugin',
version='1.0.1',
description='Tools for extracting text from a PDF',
author='rapid7',
author_email='',
url='',
setup(name="pdf_reader-rapid7-plugin",
version="1.0.2",
description="Tools for extracting text from a PDF",
author="rapid7",
author_email="",
url="",
packages=find_packages(),
install_requires=['komand'], # Add third-party dependencies to requirements.txt, not here!
install_requires=['insightconnect-plugin-runtime'], # Add third-party dependencies to requirements.txt, not here!
scripts=['bin/komand_pdf_reader']
)
Empty file.
Loading

0 comments on commit 3bfddc6

Please sign in to comment.