Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Good First Issues]: implement function "extract_pattern" - 7 points #425

Closed
Tracked by #355
Michaelg22 opened this issue Feb 13, 2023 · 7 comments
Closed
Tracked by #355
Assignees
Labels
good first issue help-wanted Extra attention is needed

Comments

@Michaelg22
Copy link
Contributor

Michaelg22 commented Feb 13, 2023

Motivation

Vanus Functions are a series of pre-built functions worked within Vanus transformer. By choosing a function, users can specify the way that events will be changed.

It will be a good start if you decide to contribute to Vanus codes.

Details

The function is used to get value from the source JSON path, which matches the regular expression. Then assign the value to the target JSON path.

args

  • sourceJsonPath – The name of an existing path.
  • targetJsonPath – The name of the new path to be created.
  • pattern – A regular expression that indicates which character or characters to extract and create the new path from.

..

Description

Function name: ** extract_pattern**

If the pattern is "a*" the function will search for an element that starts with the letter a.

Example

{
    "specversion" : "1.0",
    "type" : "com.example.someevent",
    "source" : "/mycontext",
    "subject": null,
    "id" : "C234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "application/json",
    "data" : {
        "data.appinfoA : "abcd",
        "data.appinfoB : "efgs",

    }
}

After the function "extract_pattern":

"pipeline":[
    {"command":["extract_pattern","$.data.appinfoA", "$.data.appinfoC", "a*"]}
]

The transformed event should look like this:

{
    "specversion" : "1.0",
    "type" : "com.example.someevent",
    "source" : "/mycontext",
    "subject": null,
    "id" : "C234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "application/json",
    "data" : {
        "data.appinfoA : "abcd",
        "data.appinfoB : "efgs",
        "data.appinfoC : "abcd",
    }
}

How to implement

  1. Fork the vanus repository.
  2. Create a branch function-extract_pattern
  3. Create extract_pattern.go under internal/primitive/transform/action/strings, and then implement the function.
  4. Create extract_pattern_test.go under internal/primitive/transform/action/strings for unit test.
  5. Register your function in internal/primitive/transform/runtime/init.go.
  6. Submit your PR

Contribution points

Each issue counts specific points based on its difficulty. Contributors earn the corresponding points if they solve that issue. Contribution points are used to describe the contributions contributors have made. They can also be used to get rewards when there are community events.

This issue counts 7 points.

How to claim to solve the issue

If you want to implement this function, please leave a comment in this issue like:

I'd like to implement this function, please assign this issue to me.

Vanus community will assign the issue to you on time.

@mithindev
Copy link

Can I take on the implementation of this function? May I be assigned this issue, please?

@Michaelg22
Copy link
Contributor Author

Michaelg22 commented Feb 13, 2023

Hi @mithindev for better communication join our slack channel

@mithindev
Copy link

Sure!

@Michaelg22
Copy link
Contributor Author

How is it going havent see your PR yet?

@mithindev
Copy link

Hey, I am sorry. I am in the middle of my end-sem exams. I will finish It today. Thank you so much for your patience.

@Michaelg22
Copy link
Contributor Author

@mithindev, no problem, I just wanted to make sure :) Hope your exams are going well.

@Michaelg22
Copy link
Contributor Author

I will closed this issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue help-wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants